SpringBoot核心配置之值的注入、多环境配置(三)


一、值的注入,步骤如下

1)先用Spring Initializr来迅速地建一个Spring Boot工程,并建实体类,其中需要注入属性的实体类添加通用注解将该组件注入到Spring容器中,由于需要往这个里面去注入属性,所以要添加一个注解@ConfigurationProperties(prefix="")。
          /**
           * 建一个Person类模型
           * */
          @Component  //将该组件注入到Spring容器中
          @ConfigurationProperties(prefix = "person")//将配置文件中所有以person开头的值注入到当前类中。   
          public class Person {
           //...里面封装6个属性及其get、set、toString方法
          } 

//注意:在pom里要添加processor包

2) 在resource目录下用全局配置文件application.properties给实体类对象person进行值的注入,即赋值。

3)在pom.xml中添加spring-boot-configuration-processor的依赖。

4)写测试类和启动类。
在启动类中用@SpringBootApplication(@ScanBasePackages=""),该注解用于扫描注入类所对应的包。 在测试类中,用@RunWith(SpringRunner.class)注解去加载测试运行器,另外,用@SpringBootApplication加载上下文环境,并向该注解的参数中添加启动类.class作为的参数,最后并注入要依赖的类对象,最后运行测试的方法。


注意:每个类之间都有关联性

说明:
1.第二步也可用application.yaml文件方式来进行属性值的赋予,即键值对的方式赋值。
2.对于对某个类(如Student类)中的某一个或几个属性赋值可在属性值上添加@Value("${person.id}"),看pom中是否需要导入Spring的相关的文件。
3.@ConfigurationProperties和@Value这两个注解的区别在于前一个是SpringBoot的注解,而后一个是Spring的注解,前者适用于批量注入属性,后者适用于单个属性的注入。



二、自定义配置的值的注入

也可在resource下自定义配置文件,需要在配置类上加入@Configuration,并用@PropertySource注解指定配置文件的路径及名称,另外要添加EnableConfigurationProperties(currentClass.class)或用注解@SpringBootApplication注解,并最后写测试类测试。


三、Profile多环境配置

多环境配置有两种方式:1.用Profile文件进行多环境配置。 2.用@Profile注解进行多环境配置。

法1.用Profile文件进行多环境配置
1)在resource目录下,分别建环境配置文件,文件名格式:application-xxx.properties,内容主要是:
          server.port=8081
       2)在resources目录中的全局配置文件application.properties中选择要激活的端口,代码如下:
          spring.profiles.active=dev
       3) 运行启动类查看结果。


法2.用@Profile注解进行多环境配置
1)在配置包下建一个config包,并在其下建一个用于配置数据库的接口文件。
         public interface DBConfigure{
           void configure();
         }
       2) 并建若干实现类来实现接口,用以模拟连接配置不同的数据库环境。
           @Configuration
           @Profile("dev")
           public class devDBConfigure implements DBConfigure{
               System.out.println("数据库配置环境");
           }
       3)在resources目录中的全局配置文件application.properties中选择要激活的端口,代码如下:
           spring.profiles.active=dev
       4)建一个测试类。
        @RestController
         public class DBController{
            @Autowired
            private DBConnector dbConnector;
            public void showDB(){
                void configure();
            }
         }
       5)添加扫描包(配置类)路径,运行启动类
          //加载配置并扫描包,并开启实例化类
          @SpringBootApplication(scanBasePackages = "com.Controller.*")
          public class SpringbootexerciseApplication {
            public static void main(String[] args) {
                SpringApplication.run(SpringbootexerciseApplication.class, args);
            }
          }

 

posted @ 2020-02-02 12:35  贰零一八  阅读(368)  评论(0编辑  收藏  举报