一.环境搭建
1.在项目中添加Spring AOP相关的JAR文件以及xsd约束文件(导入aop包、添加context约束头信息)
2.由于是基于注解的DI,所以无需再Spring配置文件中进行节点配置,只需配置包扫描器即可!
<!--配置包扫描器-->
<context:component-scan base-package="com.bjsxt.pojo"></context:component-scan>
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 + "]";
}
}
网友评论