当我们需要定义某些配置属性的时候,我们可以在springboot默认的application.properties文件中定义,如果要使用则直接使用@Value注解注入即可,如果是在xml文件中使用,也可以使用$来引用,但是将所有的属性都写入一个文件,会比较杂乱,这里介绍如何自定义properties。
- 创建一个properties文件(这里以jdbc举例)
- 在创建的jdbc.properties文件中写入数据库连接属性
spring.datasource.url = jdbc:mysql://localhost:3306/test
spring.datasource.username = root
spring.datasource.password = 123456
spring.datasource.driverClassName = com.mysql.jdbc.Driver
- 自定义一个config类:
@Configuration
@ConfigurationProperties(prefix = "spring.datasource")
@PropertySource("classpath:properties/jdbc.properties")
public class DataSourceConfig {
private String url;
private String username;
private String password;
private String driverClassName;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
}
这里就是一个普通的bean,注解@Configuration相当于就是@Component,将这个类交给了spring容器管理,另外两个注解则是告知去哪个properties文件读取什么前缀的key。
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
String value() default "";
}
注意:只要我们指定了@PropertySource并注入spring容器,那么这个properties就能被使用了。
- 此时,我们要使用其中的属性,直接将这个对象注入即可。