【深入Spring】Spring中基于注解的DI

一.环境搭建

1.在项目中添加Spring AOP相关的JAR文件以及xsd约束文件(导入aop包、添加context约束头信息)

2.由于是基于注解的DI,所以无需再Spring配置文件中进行节点配置,只需配置包扫描器即可!



3.tips:在spring的api中查找xmlns:context查看示例

二.常用注解

@Component、@Value、@Scope、@Resource、@Autowired

三.注解解析

1.@Component
表明当前类是Spring容器中的组件,它的生命周期和对象之间的依赖关系交给Spring容器去管理

与@Component具有相同功能的还有其他三个注解 
@Repository:该注解添加在DAO实现类上 
@Service:该注解添加在Service实现类上 
@Controller:该注解添加在Controller类上 

2.@Value
普通属性的注入(基本数据类型及其对应的包装类,String类型)

3.@Scope
标志一个对象的作用域(默认singleton)

4.@Autowired
用于域属性的注入(也叫关联属性或者对象属性),byType的自动注入方式

5.@Resource
用于域属性的注入,jdk提供的注入方式,首先是byName方式的注入,然后是byType方式的注入

6.@Qualifier
配合@Autowired共同使用,可以达到根据名称(byName)自动注入

四.代码示例
@Scope("singleton")
@Component("star")
/** 
* 与@Component具有相同功能的还有其他三个注解 
* @Repository:该注解添加在DAO实现类上 
* @Service:该注解添加在Service实现类上 
* @Controller:该注解添加在Controller类上 
*/ 
public class Star {
    @Value("胡歌")
    private String name;
    @Value("32")
    private int age;
    @Value("99.9")
    private double score;
    //方式一
    /*@Resource() //byName自动注入,然后再根据Type进行自动注入*/    
    
    //方式二
    //@Autowired() //byType自动注入
    
    //方式三  @Autowired 和 @Qualifier 联合使用 根据名称自动注入
    @Autowired()
    @Qualifier("partner")
    private Partner partner;
    
    public Partner getPartner() {
        return partner;
    }
    public void setPartner(Partner partner) {
        this.partner = partner;
    }
    public Star(String name, int age, double score, Partner partner) {
        super();
        this.name = name;
        this.age = age;
        this.score = score;
        this.partner = partner;
    }
    public Star() {
        super();
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public double getScore() {
        return score;
    }
    public void setScore(double score) {
        this.score = score;
    }
    @Override
    public String toString() {
        return "Star [name=" + name + ", age=" + age + ", score=" + score + ", partner=" + partner + "]";
    }
}

你可能感兴趣的:(【深入Spring】Spring中基于注解的DI)