美文网首页
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