zoukankan      html  css  js  c++  java
  • Spring Boot 注解配置 day03

    一、SpringBoot注解 @PropertySource 和 @ImportResource和@Bean

      1.@PropertySource 加载指定位置的配置文件(只能是properties文件)

    @PropertySource(value={"classpath:person.properties"})//加载指定位置下的properties文件。默认是加载类路径下的application.properties
    @ConfigurationProperties(prefix = "person")//将类的所有属性和配置文件指定开始位置进行绑定
    @Component//@ConfigurationProperties的运行依赖@Compont
    public class Person {
    
        private String name;
        private String color;
        private Boolean boss;
    
        private Cart cart;

         

      配置文件如下:

    person.name=独而不孤
    person.color=白色
    person.boss=true
    person.cart.name=奥迪
    person.cart.color=白色
    person.list=[111,111,222]
    person.map.k1=v1
    person.map.k2=v2

      2.@ImportReSource 用来让spring配置文件生效

      原因:SpringBoot没有Spring配置文件,自己的的Spring配置文件不能让SpringBoot自动识别,想让spring生效,就要手动指定加载。

    //还记得Spring配置文件需要写<bean></bean>,使用注解方式可以直接省去这些步骤
    @Configuration  //指定该类是一个Spring配置类
    public class MyConfig {

    @Bean //将方法的返回值添加到容器中,id是方法名-------->取代了<bean id="" class=""><bean/>这种形式
    public HelloController helloController(){
    return new HelloController();
    }

    }

         测试效果如下:为True

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class SpringbootDay01ApplicationTests {
    
        @Autowired
        ApplicationContext ioc;
        @Test
        public void test1() {
           boolean b= ioc.containsBean("helloController");
           System.out.println("spring容器"+b);
        }
    
    }

      3.@Bean(如上面代码中指定方法进入spring容器)

    二、配置文件占位符、

       1.随机数(只能是application.properties文件中)

        

        运行效果:

       2.配置文件占位符也是这样

    三、profile多环境配置

      1.SpringBoot配置文件主要有两种application.properties和application.yml除此之外,还可以是application-{profile}.properties/.yml文件。

       但是application-{profile}.properties文件需要在主配置文件application.properties中被激活

      激活代码如下。

      

    spring.profiles.active=pro

      2.application.yml支持多文档块方式配置。(内置激活配置)

    server:
      port: 8090
    spring:      //----通过这种方式可以激活yml多环境配置
      profiles:
        active: dev
    ---
    server:
      port: 8091
    spring:
      profiles: dev
    ---
    server:
      port: 8092
    spring:
      profiles: pro

       3.激活指定的profile文件(properties

          3.1 通过在application.properties方式激活,上面已经提过。

          3.2 通过命令行方式加载多环境配置文件。代码:java -jar springboot_day01-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev

            

          3.3 通过虚拟机参数配置多环境配置。

            

            运行效果:

            

          3.4 还有一种神奇的操作,即使项目打包后,也可以加载配置。

            项目打包后,我们可以通过命令行参数的形式,重新启动项目的jar包来指定外部的指定的配置文件,指定的配置文件和默认的配置文件会共同起作用,形成互补作用。代码如下:“java -jar 项目.jar --spring.config.location=G:/配置名称”

          代码:  

    java -jar springboot_day01-0.0.1-SNAPSHOT.jar --spring.config.location=f:/application123.properties

             

          运行效果:

            

        4.全局配置文件的加载顺序。(application.properties和application.yml)

            SpringBoot启动会默认在以下位置扫描application.properties和application.yml配置文件。

            --项目工程/config文件夹/

            --项目工程下

            --classpath:/config/  (classpath在项目的resource文件夹下的位置)

            --classpath:/

          以上优先级从上到下有高到低,高优先级会覆盖低优先级,如果配置有覆盖,会形成互补配置。

        5.外部配置加载顺序(常见的配置是黑色字体)

            SpringBoot也可以从以下位置加载配置文件,配置文件优先级从高到低,高优先级会覆盖低优先级的配置文件,所有的配置会形成互补的配置。 

    1.命令行参数

    所有的配置都可以在命令行上进行指定

    java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --server.context-path=/abc多个配置用空格分开; --配置项=值

    2.来自java:comp/env的JNDI属性

    3.Java系统属性(System.getProperties())

    4.操作系统环境变量

    5.RandomValuePropertySource配置的random.*属性值

    (钻牛角尖中:如果application.properties和application.yml同时存在,会先加载.properties,然后在加载yml,所以会以properties为准,如果没有配置然后再加载.yml文件)

    ==由jar包外向jar包内进行寻找;==

    ==优先加载带profile==

    6.jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件

    7.jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件

    ==再来加载不带profile==//在和jar包同一个目录下就会自加载

    8.jar包外部的application.properties或application.yml(不带spring.profile)配置文件

    9.jar包内部的application.properties或application.yml(不带spring.profile)配置文件

    10.@Configuration注解类上的@PropertySource

    11.通过SpringApplication.setDefaultProperties指定的默认属性

    所有支持的配置加载来源;

      

    作者:独而不孤

    -------------------------------------------

    个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

    万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!

    喂一下的我仓鼠谢谢
  • 相关阅读:
    AWTK-MVVM 在 STM32H743 上的移植笔记
    windows 中文 unicode 编码显示
    SpringBoot项目jar包运行
    Activiti中的互斥网关、并行网关、兼容网关、事件网关
    【LeetCode】739.每日温度(5种方法,详细图解)
    【LeetCode】20.有效的括号(使用栈,动图详解)
    你知道权限管理的RBAC模型吗?
    关闭Win10自动更新
    iOS 中如何判断当前是2G/3G/4G/5G/WiFi
    GCD API 记录 (三)
  • 原文地址:https://www.cnblogs.com/lcaiqin/p/10380900.html
Copyright © 2011-2022 走看看