@Configuration 注解

@Configuration注解的作用:声明一个类为配置类,用于取代bean.xml配置文件注册bean对象。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
    @AliasFor(
        annotation = Component.class
    )
    String value() default "";

    boolean proxyBeanMethods() default true;
}
  • 底层代码就两个属性,一个用于声明配置类的名称,一个用于声明是否是代理对象方法(重点)。
    • 由于有@Component注解的加持,那么被声明的配置类本身也是一个组件!

    基础使用

    @Configuration注解常常一起搭配使用的注解有@Bean、@Scope、@Lazy三个比较常见:

    @Bean:等价于Spring中的bean标签用于注册bean对象的,内部有一些初始化、销毁的属性…

    @Scope:用于声明该bean的作用域,作用域有singleton、prototype、request、session。

    @Lazy:标记该bean是否开启懒加载。

    这里准备User和Dog两个类

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class User {
        private String name;
        private int age;
        private Dog dog;
    }
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class Dog {
        private String name;
        private int age;
    }
    

    2.1、@Bean注解

    先来看看如何声明配置一个bean对象的注册

    @Configuration
    public class MyConfig {
    
        @Bean("user")
        public User getUser(){
        	System.out.println("User对象进行创建!");
            return new User("用户", 22, getDog());
        }
    
        @Bean("dog")
        public Dog getDog(){
        	System.out.println("Dog对象进行创建!");
            return new Dog("金毛", 3);
        }
    }
    
    • 这样就声明配置了两个bean,在Spring中相当于注册到xml配置文件中
    • 默认情况下是以饿汉单例的形式进行创建,即IOC容器创建时立即创建这两个bean。
    上一篇
    下一篇