spring中的注解配置

步骤:
1.为主配置文件引入新的命名空间(引入约束)

2.开启使用注解代替配置文件
在spring配置文件applicationContext中配置

<!-- 指定扫描com.lsz.spring包下的所有类中注解-->
<context:component-scan base-package="com.lsz.spring" />

3.在类中使用注解

@Component("user")= <bean name = "user" class = "com.lsz.spring.User">

问题:项目中全使用Component导致很难区分注解的对象属于哪一层,由此衍生以下几种表达方式:
@service("user") // service层
@Controller("user") // web层
@Repository("user") // dao层

@Scope(scopeName="singleton|prototype") // 指定对象作用范围

Value注入的两种方法:

@Value("tom") // 将Value注解放在name属性上
private String name;
@Value("tom") // 将Value注解放在set方法上
public void setName(String name){
this.name = name;
}

第一种方法是通过反射的Field赋值,第二种方法通过set方法赋值,由于第一种方法破坏的封装性,建议使用第二种方法。

对象注入首先要把对象所在的类放在容器中,有以下几种方法:

@Autowired //按照类型自动装配
private Car car;

问题:当出现多个同类对象时,系统无法选择具体注入哪个对象
解决方案:@Qualifier字段指定装配对象

@Autowired
@Qualifier("car")
private Car car;

上面两个注解看起来太麻烦,通常用@Resource注解代替

@Resource(name="car"private Car car

@PostConstruct初始化注释和@PostConstruct销毁方法注释的使用

@PostConstruct // 在对象创建后被调用
public void init(){
    System.out.println("初始化方法");
}
@PostConstruct // 在对象销毁前调用
public void destory(){
    System.out.println("我是销毁方法")
}

猜你喜欢

转载自www.cnblogs.com/chenfengXTU/p/10083058.html