• spring boot--注解 案例


    0.@Configuration

    1.@Bean

      描述:在spring容器中定义一个bean供@Autowired使用

      注解对象:方法

      参数:

        value -- bean别名和name是相互依赖关联的,value,name如果都使用的话值必须要一致。整个程序之中不能存在相同name||value的Bean
        name -- bean名称,如果不写会默认为注解的方法名称
        autowire -- 自定装配默认是不开启的,建议尽量不要开启,因为自动装配不能装配基本数据类型、字符串、数组等,这是自动装配设计的局限性,以及自动装配不如显示依赖注入精确,ps:此方法已经过期了,不推荐使用
        initMethod -- bean的初始化之前的执行方法,该参数一般不怎么用,因为可以完全可以在代码中实现
        destroyMethod -- bean销毁执行的方法

    @Configuration
    public class Test {
        @Bean(value = "bean")//如果此处没有定义value||name,那么默认为被注解方法的首字母小写的方法名。即@Bean(value = "bean1")
        public String bean1(){
            return "Bean test val";
        }
    }

    1.@Autowired

      描述:将Bean的值装配给注解的字段

      注解对象:字段

      参数:

        required -- 是否必须存在对应的Bean,否则将会报错。默认值:true

       @Autowired
        String bean1;
    
        @RequestMapping("/index")
        public void index() throws Exception{
            System.out.println(bean1);
        }

    2.@Quqlifier

      描述:装载指定名称的Bean,如果不指定,则默认装载与注解字段字段同名的,首字母小写的的Bean

      注解对象:被@Autowired注解的字段

      参数:

        value:指定的Bean的name或value

        @Qualifier(value = "bean")
        @Autowired
        String bean1;
    
        @RequestMapping("/index")
        public void index() throws Exception{
            System.out.println(bean1);
        }

    3.@Value

      描述:将application.properties指定属性的值,赋值给被注解的字段

      注解对象:字段

      参数:

        value -- 如果使用的是模板语法,被注解字段绑定的值将是application.properties中对应前缀的值。否则则为value的值

    //application.properties
    
    testobj.prop1=testobj.prop1.value
    @RestController
    public class index {
    
        @Value(value = "prop1 value")
        String prop1;
    
        @Value(value = "${testobj.prop1}")
        String prop2;
    
        @RequestMapping("/index")
        public void index() throws Exception {
            System.out.println(prop1);//prop1 value
            System.out.println(prop2);//testobj.prop1.value
        }
    }

    3.@ConfigurationProperties

      描述:读取application.properties中的属性,并将其属性值赋值给被注解的类,与@Value不同的是,@Value只能指定一个字段,而@ConfigurationProperties可以批量指定字段

      注解对象:class

      参数:

        prefix -- 指定的application.properties中属性的前缀

    //application.properties
    
    testobj.name=obj name
    testobj.index=obj index
    //@ConfigurationProperties 定义

    @Component @ConfigurationProperties(prefix
    = "testobj") public class Test2 { //对应的字段可以没有get方法,但是必须要拥有set方法,否则无法将application.properties值写入对应的字段 public String getName() { return name; } public void setName(String name) { this.name = name; } public String getIndex() { return index; } public void setIndex(String index) { this.index = index; } public String name; public String index; }
    //使用

    @RestController public class index {
    //使用@Autowired 获取到生成的Bean,如果使用 new Test2();的话得到的是一个新的实例对象,而非被ConfigurationProperties注解生成的Bean对象,实例对象是没有值的 @Autowired Test2 test2; @RequestMapping("/index") public void index() throws Exception{ Test2 t=test2; System.out.println(t.name); } }

    4.@ComponentScan

    表明容器

      @Component

      @

  • 相关阅读:
    2. 环形路加油
    1. 元素累加
    开始在线练习50题。
    C# 搜索关键词
    Python调用OpenCV几何变换
    Tensorflow加载多幅图像进一个tensor
    Cmake构建OpenCV测试例子
    Linux利用本地http下载解决一些需要联网下载的问题
    Python调用OpenCV算术操作
    Python调用OpenCV阈值化
  • 原文地址:https://www.cnblogs.com/wrhbk/p/15163008.html
Copyright © 2020-2023  润新知