zoukankan      html  css  js  c++  java
  • Rhythmk 一步一步学 JAVA (14) Spring-3 @Autowired,@Qualifier @Required @Resource @Component,@Service,@Controller,@Repository @PostConstruct,@PreDestroy

    1、@Autowired 注解:
    首先在使用时候需要引入配置:

    <!-- 该 BeanPostProcessor 将自动起作用,对标注 @Autowired 的 Bean 进行自动注入 --> 
    <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>

    在Spring MVC 中 由于配置了“ <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>”

    故不使用引入上面自动注入也可实现指定注入功能。

    @Autowired 可以标注在属性,以及set方法上,以及构造函数上.进行标注,然后自动完成注入。

    2、@Qualifier 注解:
    如果配置了多个类型为 User 的 Bean, 那么我们在

    @Autowired
    private User setUser(User user){
    //....
    } 
    

    会出现错误,这个时候我们就需要对注入的对象指定读取Bean的名称,则所以 @Autowired 和 @Qualifier 结合使用时,自动注入的策略就从 byType 转变成 byName 了。

    @Autowired
    private User setUser(@Qualifier("user1") User user){
    //....
    } 
    
    public class Recommender {
        @Autowired
        @Qualifier("main")
        private MovieCatalog log;
    }
    

    @Autowired 可以对成员变量、方法以及构造函数进行注释,而 @Qualifier 的标注对象是成员变量、方法入参、构造函数入参。正是由于注释对象的不同,所以 Spring 不将 @Autowired 和 @Qualifier 统一成一个注释类。


    3、@Required注解:
    @Required注解检查 但他只检查属性是否已经设置而不会测试属性是否非空

    4、@Resource 写在属性或者是setter方法上,按照名称注入 可以配置name="...",
    如果不配置则提取 setter方法名,该bean必须存在。
    @Resource(name="user")
    private User user;

    5、@Component,@Service,@Controller,@Repository 注解:
    Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository、@Service 和 @Controller。在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层、业务层和控制层(Web 层)相对应。虽然目前这 3 个注释和 @Component 相比没有什么新意,但 Spring 将在以后的版本中为它们添加特殊的功能。所以,如果 Web 应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用 @Repository、@Service 和 @Controller 对分层中的类进行注释,而用 @Component 对那些比较中立的类进行注释。

    6、@PostConstruct 注解,标识Bean在初始化的时候执行,
    @PreDestroy 注解,表示在Bean在对象销毁的时候执行。

    @PostConstruct
    public void init() {
    
    }
    
    @PreDestroy 
    public void destory() {
    
    }
    

    7、@Scope 注解 设置作用域:

    prototype,singleton 注意spring2.0后 又增加了request ,session和global session 4个作用区域




  • 相关阅读:
    js实现继承
    简单原型语法和原型动态性
    js中关于原型的几个方法
    js创建对象的几种方式
    收藏的js学习小例子
    结合 WebService 实现消息 主动推送到客户端
    Exceptionless 本地搭建记录
    EF6 SqlServer 简单例子 和 支持的原生sql例子
    Ubuntu下deb文件及tgz文件安装
    Windows 10家庭版远程桌面连接错误
  • 原文地址:https://www.cnblogs.com/rhythmK/p/3412549.html
Copyright © 2011-2022 走看看