Spring 的 Bean 管理的中常用的注解:
开启包或注解扫描
//在类上配置
<context:component-scan base-package="pacageName"/>
//一般适用于xml和注解的配合使用 属性注入使用这个 但不能在类配置
<context:annotation-config/>
@Component:组件.(作用在类上)
Spring 中提供@Component 的三个衍生注解:(功能目前来讲是一致的)
- @Controller :WEB 层
- @Service :业务层 *
- @Repository :持久层
这三个注解是为了让标注类本身的用途清晰,Spring可对其使用增强。
属性注入的注解:(使用注解注入的方式,可以不用提供 set 方法.)
- @Value :用于注入普通类型.(写在set方法或者属性上方)
- @Autowired :自动装配: 默认按类型进行装配.
按名称注入:
- @Qualifier:强制使用名称注入(与@Autowried一起使用).
- @Resource 相当于: * @Autowired 和@Qualifier 一起使用.
Bean 的作用范围的注解:
@Scope:
- singleton:单例 @scope(“singleton”)
- prototype:多例 (@scope(“prototype”))
Bean 的生命周期的配置:
- @PostConstruct :相当于 init-method
- @PreDestroy :相当于 destroy-method
直接写在方法上。
Spring 的 Bean 管理的方式的比较
xml :结构很清晰,配置比较繁琐,改动起来比较简单。
注解:开发方便,配置简单,但是改动起来比较麻烦。
比较项 | xml配置 | 注解方式 |
---|---|---|
bean定义 | < bean id=" " class="" /> | @component(“id名”)@Controller @Service @Repository |
bean名称 | id="“或者name=” " | controller(“userDao”) |
bean属性注入 | < property name=“属性名字” ref[value]=" "/>或者p标签 | (@Autowired @Qualifier)@Resource |
生命周期、作用范围 | < bean init-method [destroy-method] scope =“singleton”[“prototype”] | @Scope(" protptype") |
使用场景 | 一般配置第三方的类比如jdbc模板transactionTemplate、sqlSessionFactoryBean等 | 自己创建的需要管理的一些类 |