zoukankan      html  css  js  c++  java
  • Spring 注解详解02

    原文: 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/> 进行配合.
  • 相关阅读:
    Stm32ADC-内部温度传感器的使用
    Stm32 ADC学习
    wpf数据绑定
    06 MyBatis——实体类注意事项
    05 MyBatis——环境搭建及demo
    96 项目导jar包
    04 SSM框架概述
    03 MVC开发模式
    02 Mybaits——包名的命名规范
    26 监听器实现网站在线人数统计
  • 原文地址:https://www.cnblogs.com/c0liu/p/7467984.html
Copyright © 2011-2022 走看看