Spring框架Bean管理注解方式
1, 约束中增加context约束或者使用注解约束头信息,添加开启注解扫描标签。
<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">
<!-- Spring
的注解开发
:
组件扫描
(
类上注解
:
可以直接使用属性注入的注解
) --> <context:component-scan base-package="com.spring.demo1"/>
</beans>
2, 要项目类中添加对应的注解
@Component(value="userService") --
相当于在
XML
的配置方式中
<bean id="userService" class="...">
//
属性注入
@Value(value="
美美
")
private String name;
public void setName(String name) {
this.name = name;
}
3, Bean管理常用注解
1. @Component:
组件
.(
作用在类上
)
2. Spring
中提供
@Component
的三个衍生注解
:(
功能目前来讲是一致的
)
* @Controller --
作用在
WEB
层
* @Service --
作用在业务层
* @Repository --
作用在持久层
*
说明:这三个注解是为了让标注类本身的用途清晰,
Spring
在后续版本会对其增强
3.
属性注入的注解
(
说明:使用注解注入的方式
,
可以不用提供
set
方法
.)
1.
如果是注入的普通类型,可以使用
value
注解
* @value --
用于注入普通类型
2.
如果注入的是对象类型,使用如下注解
* @Autowired --
自动装配
*
注意:问题,默认按类型进行装配
*
如果想按名称注入
* @Qualifier --
强制使用名称注入
*
具体的代码如下:
ProductService
的代码
@Service(value="productService")
public class ProductService {
@Autowired //
注入对象属性
@Qualifier(value="productDao") //
强制使用名称注入
private ProductDao productDao;
public void save(){
//
调用
dao
层
productDao.save();
}
}
* ProductDao
的代码如下
@Repository(value="productDao")
public class ProductDao {
public void save(){
System.out.println("
保存商品
...");
}
}
3.
刚才的上述两个注解一起使用,过于麻烦,所以提供了一个新的注解
* @Resource --
相当于
@Autowired
和
@Qualifier
一起使用
*
修改
ProductService
的代码如下
@Service(value="productService")
public class ProductService {
@Resource(name="productDao")
private ProductDao productDao;
public void save(){
//
调用
dao
层
productDao.save();
}
}
4, Bean的作用范围和生命周期的注解
1. Bean
的作用范围注解
*
注解为
@Scope(value="prototype")
,作用在类上。值如下:
* singleton --
单例,默认值
* prototype --
多例。
2. Bean
的生命周期的配置(了解)
*
注解如下:
* @PostConstruct --
相当于
init-method
* @PreDestroy --
相当于
destroy-method