@ConfigurationProperties注解是Spring Boot中用来绑定外部属性配置到JavaBean上的注解。该注解可以将外部属性文件中的属性值通过类型安全的方式注入到Spring应用上下文中的Bean中。以下是详细的攻略:
第一步:添加依赖
首先需要添加对spring-boot-configuration-processor
依赖,用于生成配置元数据。在Maven中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
第二步:创建配置类
创建一个Java类,并在该类上添加@Configuration和@ConfigurationProperties注解:
@Configuration
@ConfigurationProperties(prefix = "app")
public class AppConfig {
private String name;
private int version;
// 省略getter和setter方法
}
prefix属性用于指定属性的前缀,上述例子会绑定外部配置文件中的app.name
和app.version
两个属性值。
同时需要注意的是,这个AppConfig类需要被Spring容器所管理,可以通过使用@Component、@Service等注解进行标记。
第三步:创建外部配置文件
创建一个配置文件,文件名一般为application.properties
,用于存放属性配置。
例如:在application.properties
文件中添加以下配置:
app.name=MyApp
app.version=1
这样就可以在应用启动时加载这些属性到AppConfig类中。
第四步:读取配置
通过@Autowired注解将这个AppConfig配置类自动注入到其他的Bean中,可以读取其中的属性值。
例如:在一个Controller中可以通过如下方式读取配置:
@RestController
public class MyController {
@Autowired
private AppConfig config;
@GetMapping("/config")
public String getConfig() {
return "Name: " + config.getName() + ", Version: " + config.getVersion();
}
}
这样就能在访问"/config"
时,得到响应"Name: MyApp, Version: 1"。
示例说明
示例一
创建一个类来保存SFTP连接的相关配置,例如:
@Configuration
@ConfigurationProperties(prefix = "sftp")
public class SftpProperties {
private String host;
private int port;
private String username;
private String password;
private String remoteDirectory;
// getter和setter方法
}
在application.properties
文件中添加以下配置:
sftp.host=192.168.1.100
sftp.port=22
sftp.username=admin
sftp.password=123456
sftp.remote-directory=/upload/
通过在其他Bean中注入这个SftpProperties类,就可以获得SFTP的连接相关信息。
示例二
创建一个类来保存数据库连接的相关配置,例如:
@Configuration
@ConfigurationProperties(prefix = "database")
public class DatabaseProperties {
private String url;
private String username;
private String password;
// getter和setter方法
}
在application.properties
文件中添加以下配置:
database.url=jdbc:mysql://localhost:3306/test
database.username=root
database.password=123456
通过在其他Bean中注入这个DatabaseProperties类,就可以获得数据库连接的相关信息,用于建立数据库连接。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:@ConfigurationProperties加载外部配置方式 - Python技术站