《Spring实战》(第6版)第6章 使用配置属性

第6章 使用配置属性

iPhone刚刚推出时只有一个按钮,简单且强大,Spring Boot的自动配置与之类似。

十多年来都用的是Spring XML设置属性值,然后调用Bean实例的setter方法。

使用自动配置后,没有显式配置的情况下,bean设置属性变得不显而易见了。

Spring Boot提供了配置属性(configuration protperty)方式为应用组件设置属性值。

@ConfigurationProperties,将多个属性源的值设置到bean的属性中,包括JVM系统属性、命令行参数以及环境变量。

6.1 细粒度地调整自动配置

Spring有两种不同的配置:

  • bean装配,即声明在Spring应用上下文中创建哪些应用组件(即bean)以及它们之间如何相互注入的配置。
  • 属性注入,即设置Spring应用上下文中bean的值的配置。

带有@Bean注解的方法一般会同时初始化bean并立即为它的属性设置值。

@Bean
public DataSource dataSource() {
    return new EmbeddedDatabaseBuilder()
        .setType(H2)
        .addScript("taco_schema.sql")
        .addScripts("user_data.sql","ingredient_data.sql")
        .build();
}

添加的脚本是在数据源就绪之后用到数据库上的SQL脚本。

这是不使用SpringBoot配置DataSource的方法,借助自动配置功能,就没必要使用这些方法指定了。

6.1.1 理解Spring的环境抽象

Spring环境拉取多个属性源,包括:

  • JVM系统属性
  • 操作系统环境变量
  • 命令行参数
  • 应用属性配置文件

src/main/resources/application.properties,等同于YAML文件。

配置端口值:

  • 配置文件中:server.port:9090
  • 命令行参数启动:java -jar tacocloud.jar --server.port=9090
  • 始终在特定端口启动,通过操作系统变量:$ export SERVER_PORT = 9090
6.1.2 配置数据源

做过项目的话,很熟了。

自动配置连接池默认找:Tomcat JDBC连接池,Apache Commons DBCP2。

如果想指定,那用显式配置DataSource bean。

初始化脚本配置用如下属性很有用:

6.1.3 配置嵌入式服务器

处理HTTPS请求,使用JDK keytool命令行工具生成keystore:

keytool -keystore mykeys.jks -genkey -alias tomcat -keyalg RSA

配置文件中启用HTTPS:

6.1.4 配置日志

默认通过Logback配置日志,以INFO级别写入。

完全控制日志配置,可以在src/main/resources中创建logback.xml文件进行配置。

若只是设置日志级别,写入路径等,可以在配置文件中:

日志默认达到10MB就会轮换。

6.1.5 使用特定的属性值

属性可以引用其他属性:

greeting.welcome:${spring.application.name}

可以嵌入文本:

greeting.welcome:欢迎你,你正在用${spring.application.name}。

6.2 创建自己的配置属性

例如常用的列表分页问题,每页数量不要硬编码到代码中。

类上面加@ConfigurationProperties(prefix = “taco.orders”)

属性:private int pageSize = 10;

在配置文件中可以设置任意值:taco.orders.pageSize: 20

6.2.1 定义配置属性的持有者
将pageSize单独抽取到持有者类中

其他类注入,直接用就行。

6.2.2 声明配置属性元数据

META-INF/additional-spring-configuration-metadata.json下创建元数据,保证不警告报错。

6.2 使用profile进行配置(区分开发,测试,生产环境)

开发,测试,生产环境有些配置不相同。

通过环境变量来设置,但属性多的话也会很麻烦。
6.3.1 Spring profile定义特定profile的属性

仅适合YAML文件。

创建application-prod.yml文件.

多个属性用—隔开。细节自己查吧。

6.3.2 激活profile

推荐使用环境变量:% export SPRING_PROFILES_ACTIVE = prod

命令行启动时:% java -jar taco-cloud.jar --spring.profiles.active = prod

6.3.3 使用profile条件化的创建bean

@Profile(“dev”),@Profile({“dev”, “qa”}),@Profile(“!prod”)等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿立聊全栈

有作用的,有闲钱的支持一点。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值