@Lazy注解学習

1667 ワード

回転:http://blog.51cto.com/4247649/2118337
今日は主に以下の方面から@Lazyの注釈を紹介します。
  • @Lazy注解は何ですか?
  • @Lazy注釈はどうやって使いますか?
     
    1,@Lazyコメントは何ですか?
     
    @Lazyコメントはbeanを識別するために遅延が必要かどうか、ソースは以下の通りです。
     
     
     
    @Target({ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.FIELD})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface Lazy {
        /**
         * Whether lazy initialization should occur.
         */
        boolean value() default true;
    }
    
     
     
    一つのパラメータしかありません。デフォルトはtrueです。つまりこの注釈を加えるとロードが遅くなります。
     
    2,@Lazy注解はどうやって使いますか?
     
    注を加えていない前に主要容器が起動すると、beanが実例化されます。以下の通りです。
     
     
     
    AnnotationConfigApplicationContext applicationContext2 = new AnnotationConfigApplicationContext(MainConfig.class);
    
     
     
     
      user  
    
     
     
    @Lazyの注釈を加えると、最初の呼び出し時に下記のようにロードされなければなりません。
     
     
     
    /**
         *     bean  
         * @return
         */
        @Scope
        @Lazy
        @Bean(value="user0",name="user0",initMethod="initUser",destroyMethod="destroyUser")
        public User getUser(){
            System.out.println("  user  ");
            return new User("  ",26);
        }
    
     
     
     
     
    AnnotationConfigApplicationContext applicationContext2 = new AnnotationConfigApplicationContext(MainConfig.class);
    User bean2 = applicationContext2.getBean(User.class);
    
     
     
     
      user  
      1 === User [userName=  , age=26]
    
     
     
    @Lazy注解の役割は主にスプリングIOC容器の起動時間を減らすことです。