美文网首页
2019-02-11第十二天

2019-02-11第十二天

作者: 织雾呀 | 来源:发表于2019-02-11 20:53 被阅读0次

    @Value()获取值和@ConfigurationProperties(prefix = "hhh")获取值的比较

    @ConfigurationProperties(prefix = "hhh") @Value()
    功能 批量注入配置文件中的属性 一个个的注入配置文件的属性
    SpEl 不支持表达式 支持表达式
    JSR303数据校验 支持@Validate @Email 不支持
    负责类型 支持 不支持

    配置文件yml和properties他们都能获取到属性值

    • [ ] 如果说,我们只是在某个业务逻辑上需要获取一下配置文件中的值,推荐使用@Value
    • [ ] 如果说,我们专门编写一个Java Bean来和配置文件进行映射的时候,就直接使用@ConfigurationProperties

    @PropertiesSource和ImportResource

    @PropertySource(value = {"classpath:person.properties"})//加载指定的配置文件
    

    @ImportResource:导入spring的配置文件让配置文件生效
    首先编写beans.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
        <bean id="helloService" class="com.asher.service.HelloService"></bean>
    </beans>
    
    

    然后,
    SpringBoot里面没有Spring的配置文件,我们自己编写配置文件,也不能自动识别
    如果想让Spring的配置文件生效,在Spring Boot启动类中添加注解@ImportResource
    其中locations可以指定路径

    @ImportResource(locations = {"classpath:beans.xml"})
    @SpringBootApplication
    public class SpringBoot01HelloworldQuickApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringBoot01HelloworldQuickApplication.class, args);
        }
    
    }
    
    

    <font color="red">上面的方式springboot已经不推荐使用了</font>

    Spring Boot推荐给容器中添加组件的方式

          1、配置类 spring的配置文件

    /**
     * @Configuration: 指明当前类是一个配置类,用它来代替spring的配置文件
     */
    @Configuration
    public class MyAppConfig {
        
        //将方法的返回值添加到容器中,容器中的这个组件默认的id就是方法的名字
        
        @Bean
        public HelloService helloService(){
            return  new HelloService();
        }
        
    }
    
    
    

    配置文件的占位符

    RandomValuePropertySource:配置文件中可以使用随机数

    ${random.uuid}
    ${random.value}
    ${random.int}
    ${random.long}
    ${random.int(10)}
    ${random.int[1024,65536]}
    

    属性配置占位符

    app.name=MyApp
    app.description=${app.name} is a SpringBoot application
    
    • 可以在配置文件中引用前面配置过的属性(优先级前面配置过的这里都能用)
    • ${app.name:默认值}来指定找不到属性时的默认值

    Profile

    Profile是spring对不同环境提供不同配置功能的支持,可以通过激活、指定参数等方式快速切换环境
    1、多profile文件形式:
        格式:application-{profile}.properties/yml
          - application-dev.properties application-prod.properties

    其中application-dev或者application-prod文件名包含的"dev"和"prod"并不是固定的,可以换成其他的文件名

    2、多profile文档块模式:
    3、激活模式

      命令行:
     --spring.profiles.active=dev
    配置文件
    spring.profiles.active=dev
    jvm参数
    -Dspring.profiles.active=dev
    
    • 在配置文件(application.properties)中指定spring.profiles.active=dev


      配置文件配置文件
    • 如果是yml文件
    server:
      port: 8081
    spring:
      profiles:
        active: prod #它进行指定具体的配置
    --- #通过---实现代码块分隔
    server:
      port: 8087
    
    spring:
      profiles: dev  #没有子节点active
    ---
    server:
      port: 8088
    spring:
      profiles: prod
    
    

    命令行的形式进行配置:

    命令行配置命令行配置
    也可以在通过maven打jar包的形式在命令行进行配置,在使用maven打jar包的时候,出现了一个小问题
    解决办法:maven打jar包,配置文件没有被打入
    命令行配置命令行配置

    JVM虚拟机的方式进行配置


    JVM虚拟机命令行配置JVM虚拟机命令行配置

    相关文章

      网友评论

          本文标题:2019-02-11第十二天

          本文链接:https://www.haomeiwen.com/subject/tprceqtx.html