zoukankan      html  css  js  c++  java
  • PostConstruct注解

    应用场景:当你需要往Bean里注入一个其父类中定义的属性,而你又无法复写父类的属性或属性的setter方法时

    public class UserDaoImpl extends HibernateDaoSupport implements UserDao {    
        private SessionFactory mySessionFacotry;    
        @Resource   
        public void setMySessionFacotry(SessionFactory sessionFacotry) {    
            this.mySessionFacotry = sessionFacotry;    
        }    
        @PostConstruct   
        public void injectSessionFactory() {    
            super.setSessionFactory(mySessionFacotry);    
        }    
        ...    
    }    

    这里通过@PostConstruct,为UserDaoImpl的父类里定义的一个sessionFactory私有属性,注入了我们自己定义的sessionFactory(父类的setSessionFactory方法为final,不可复写),之后我们就可以通过调用 super.getSessionFactory()来访问该属性了。

    Java源码:

    //Copyright Sun Microsystems Inc. 2004 - 2005.
    
    package javax.annotation;
    
    import java.lang.annotation.*;
    import static java.lang.annotation.ElementType.*;
    import static java.lang.annotation.RetentionPolicy.*;
    
    /**
     * The PostConstruct annotation is used on a method that needs to be executed 
     * after dependency injection is done to perform any initialization. This 
     * method MUST be invoked before the class is put into service. This 
     * annotation MUST be supported on all classes that support dependency 
     * injection. The method annotated with PostConstruct MUST be invoked even 
     * if the class does not request any resources to be injected. Only one 
     * method can be annotated with this annotation. The method on which the 
     * PostConstruct annotation is applied MUST fulfill all of the following 
     * criteria - 
    - The method MUST NOT have any parameters except in the case of EJB 
     * interceptors   in which case it takes an InvocationC    ontext object as 
     * defined by the EJB   specification.
     * - The return type of the method MUST be void.
     * - The method MUST NOT throw a checked exception.
     * - The method on which PostConstruct is applied MAY be public, protected, 
     * package private or private.
     * - The method MUST NOT be static except for the application client.
     * - The method MAY be final.
     * - If the method throws an unchecked exception the class MUST NOT be put into   
     * service except in the case of EJBs where the EJB can handle exceptions and 
     * even   recover from them.
     * @since Common Annotations 1.0
     * @see javax.annotation.PreDestroy
     * @see javax.annotation.Resource
     */
    @Documented
    @Retention (RUNTIME)
    @Target(METHOD)
    public @interface PostConstruct {
    }
  • 相关阅读:
    __x__(10)0906第三天__字符实体(转义字符)
    __x__(9)0906第三天__常见的标签
    __x__(8)0906第三天__乱码问题
    广工校赛——小明在工作
    广工校赛——01串也疯狂之光棍也有伴
    POJ2488——DFS——A Knight's Journey
    josephus问题
    链表(排序和删除)
    Buy Tickets
    敌兵布阵
  • 原文地址:https://www.cnblogs.com/fuyuanming/p/5748692.html
Copyright © 2011-2022 走看看