Springboot常用的底层注解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


底层注解

@Configuration

  • 该注解的作用是告诉springboot该类是一个配置类。
  • 配置类本身也是组件
  • ProxyBeanMethod:代理bean的方法,如果该值为true,代表使用代理。在调用组件时,都回去容器中保存的组件中查询。保证注册的bean为单实例。该模式适用于组件依赖
    如果该值为false,则为轻量级,多实例对象方式。该方式不会使用代理。该模式的springboot启动快,省去查询。

@Bean

是为了向容器中添加组件,配置类中使用@Bean标注方法在容器上注册组件,默认也是单实例的

@Configuration
public class MyConfig {

    @Bean
    //方法名就是bean的id ,返回值类型就是组件类型。返回的值就是组件在容器中的实例

    public Cat cat01() {
        return new Cat("tom",18);
    }

    @Bean
    //可以在bean中自定义方法名

    public Pet pet01() {
        return new Pet("dog");
    }
}

@import

可以自动调用该组件的无参构造器,向容器中注册该组件。在容器中的名字就是组件的全类名。

在该配置类上方加import注解

    @Import(Pet.class)
    @Configuration(proxyBeanMethods = false)
    public class MyConfig {

在该主类中获取该类型组件的名称

    String[] names = context.getBeanNamesForType(Pet.class);
    for (String name : names) {
        System.out.println(name);
    }

结果

com.bao.bean.Pet
pet01

@Conditional

条件装配:满足Conditionnal指定的条件,则进行组件注入

和@Bean一起使用,对bean注入限制条件 在配置类中使用,对整个配置类的bean注入添加条件。

例如:

@Configuration(proxyBeanMethods = false)
@ConditionalOnBean(name = "tom")
public class MyConfig {

    @Bean
    //方法名就是bean的id ,返回值类型就是组件类型。返回的值就是组件在容器中的实例

    public Cat cat01() {
        return new Cat("tom",18);
    }

    @Bean
    //可以在bean中自定义方法名

    public Pet pet01() {
        return new Pet("dog");
    }
}

该注解表示bean的注入基于,组件中有name = tom的组件,否则bean注入无效

@importResource

可以导入资源文件,例如可以在使用xml配置bean时,在配置类中导入xml文件

@ConfigurationProperties

第一种方式:

用来实现配置绑定,当我们需要灵活的将一些bean的值进行变换时,可以将该值写到properties中,然后通过该注解将bean和properties进行绑定。

例如:

   @Component("myCar")
    @ConfigurationProperties(prefix = "mycar")
    public class Car {
        private String brand;
        private Integer price;
    
        public String getBrand() {
            return brand;
        }
    
        public void setBrand(String brand) {
            this.brand = brand;
        }
    
        public Integer getPrice() {
            return price;
        }
    
        public void setPrice(Integer price) {
            this.price = price;
        }
    
        @Override
        public String toString() {
            return "Car{" +
                    "brand='" + brand + '\'' +
                    ", price=" + price +
                    '}';
        }
    }

    mycar.brand=BYD
    mycar.price=100000

第二种方式:

在配置类中使用@EnableConfigurationProperties(),开启属性配置功能,其中的值为bean的类型,即可开启对应的属性配置,并把这个bean注册到容器中。在bean类中即可以省去@Component注解

 @ConfigurationProperties(prefix = "mycar")
    public class Car {
        private String brand;
        private Integer price;
    
        public String getBrand() {
            return brand;
        }
        
        public void setBrand(String brand) {
            this.brand = brand;
        }
        
        public Integer getPrice() {
            return price;
        }
        
        public void setPrice(Integer price) {
            this.price = price;
        }
        
        @Override
        public String toString() {
            return "Car{" +
                    "brand='" + brand + '\'' +
                    ", price=" + price +
                    '}';
        }
    
    }
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值