SpringDI--依赖注入(注解方式)

 

Spring中提供一些作用在类上:

@Component   //每个层都可以,作用在类上
@Controller    //作用在web层
@Service       //作用在业务层
@Repository    //作用在持久层

这三个注解都放在每层的类上面,会创建对应的对象,Component可以每层类上但建议使用其他三个注解增强

属性注解:

@Value            //用于注入基本类型
@Autowired        //用于对象注入,默认按类型进行自动装配
@Qualifier        //用于对象注入,按名称注入
@Resource         //相当于@Autowired与Qualifier一起使用,JDK提供的注解,Spring支持

作用范围

//Bean的作用范围注解,作用在类上,singleton:单例(默认)    prototype:多例
@Scope(value="prototype")

//Bean的生命周期注解,作用在方法上
@PostConstruct     //相当于init-method
@PreDestroy        //相当于destroy-method

 

 

 

  

实现注解方式

UserService:

package com.spring.demo04;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * 组件注解,标记该类
 * 相当于:
 */
@Component(value="userService")
public class UserService {
    //属性注解:基本数据类型
    @Value(value="业务层")
    private String name;
    
    //@Resource(name="userDao")    JDK提供的注解,spring支持
    //对象注解:按类型自动装配
    @Autowired
    @Qualifier(value="userDao")    //也可以不写,一旦写名称必须一致
    private UserDao userDao;
    
    
    public void save() {
        System.out.println(name+"启动。。。");
        userDao.save();
    }
}
View Code

UserDao:

package com.spring.demo04;

import org.springframework.stereotype.Repository;

/**
 * UserDao交给IOC容器
 * 相当于:
 */
@Repository(value="userDao")
public class UserDao {
    
    public void save() {
        System.out.println("持久层启动。。。。");
    }
}
View Code

配置文件设置扫描该类属于的包:

xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">

    
    
    <context:component-scan base-package="com.spring.demo04" />
    
beans>
View Code

测试:

package com.spring.demo04;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestDI {
    @Test
    public void run() {
        //创建容器对象,加载配置文件
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        //获取userService对象
        UserService userService = (UserService) context.getBean("userService");
        //调用save方法
        userService.save();
    }
}
View Code

运行结果:

 

转载于:https://www.cnblogs.com/jumpkin1122/p/11623808.html

你可能感兴趣的:(java)