码迷,mamicode.com
首页 > 编程语言 > 详细

Spring 注解详解02

时间:2017-09-02 22:38:02      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:service   code   ebe   scan   构造   hello   ati   int   proxy   

原文: http://www.cnblogs.com/digdeep/p/4525567.html

 

spring 的 bean 容器相关的注解:
1) @Autowired 是我们使用得最多的注解, 其实就是 autowire=byType 就是根据类型的自动注入依赖(基于注解的依赖注入), 
可以被使用在属性域, 方法, 构造函数上.

2) @Qualifier 就是 autowire=byName, @Autowired 注解判断多个bean类型相同时, 
就需要使用 @Qualifier("xxBean") 来指定依赖的bean的id:
@Controller
@RequestMapping("/user")
public class HelloController {
    @Autowired
    @Qualifier("userService")
    private UserService userService;

3) @Resource 属于JSR250标准, 用于属性域额和方法上.也是 byName 类型的依赖注入.
使用方式:@Resource(name="xxBean"). 不带参数的 @Resource 默认值类名首字母小写.
相当于:
    @Autowired
    @Qualifier("xxBean")

4) JSR-330 标准 javax.inject.* 中的注解
(@Inject, @Named, @Qualifier, @Provider, @Scope, @Singleton).
@Inject就相当于@Autowired, @Named 就相当于 @Qualifier, 另外 @Named 用在类上还有 @Component的功能.

5) @Component,  @Controller, @Service, @Repository, 这几个注解不同于上面的注解, 
上面的注解都是将被依赖的bean注入进入, 而这几个注解的作用都是生产bean, 这些注解都是注解在类上, 
将类注解成spring的bean工厂中一个一个的bean.@Controller, @Service, @Repository基本就是语义更加细化的@Component.

6) @PostConstruct 和 @PreDestroy 不是用于依赖注入, 而是bean 的生命周期.
类似于 init-method(InitializeingBean) destory-method(DisposableBean)

4. spring中注解的处理
spring中注解的处理基本都是通过实现接口 BeanPostProcessor 来进行的:
public interface BeanPostProcessor {
    Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException;
    Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException;
}
相关的处理类有: AutowiredAnnotationBeanPostProcessor, CommonAnnotationBeanPostProcessor, 
PersistenceAnnotationBeanPostProcessor,   RequiredAnnotationBeanPostProcessor
这些处理类, 可以通过 <context:annotation-config/> 配置隐式的配置进spring容器.这些都是依赖注入的处理, 
还有生产bean的注解(@Component,  @Controller, @Service, @Repository)的处理:
<context:component-scan base-package="net.aazj.service,net.aazj.aop" />
这些都是通过指定扫描的基包路径来进行的, 将他们扫描进spring的bean容器.
注意 context:component-scan 也会默认将 AutowiredAnnotationBeanPostProcessor, CommonAnnotationBeanPostProcessor 
配置进来.所以<context:annotation-config/>是可以省略的.另外context:component-scan也可以扫描@Aspect风格的AOP注解, 
但是需要在配置文件中加入 <aop:aspectj-autoproxy/> 进行配合.

 

Spring 注解详解02

标签:service   code   ebe   scan   构造   hello   ati   int   proxy   

原文地址:http://www.cnblogs.com/c0liu/p/7467984.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!