当我们开发Java Web 应用时,经常需要从配置文件中读取一些参数,这里我们将详细讲解如何使用 application.properties
文件来读取配置值。
1. 创建配置文件
我们首先需要创建一个 application.properties
文件,该文件是Spring Boot标准的配置文件,实际上Spring Boot中有多种方式配置应用程序,如application.yml
, bootstrap.properties
等等,但这里我们仅仅介绍使用 application.properties
文件来作为配置文件。
在这个文件中,我们可以按照键值对的方式设置各种属性。例如:
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
这里我们设置了应用程序的端口、数据库连接等信息。
2. 读取配置文件
在Spring Boot中使用 @ConfigurationProperties
注解读取上述配置文件中的配置值。
2.1 定义配置属性类
首先创建一个Java Bean类,命名为 ApplicationProperties
,其中定义需要读取的属性及其getter和setter方法。
例如,我们需要读取 server.port
属性,可以这样编写代码:
@Component
@ConfigurationProperties(prefix = "server")
public class ApplicationProperties {
private int port;
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
}
这里使用了 @Component
注解,把该类注册为一个Bean。同时使用 @ConfigurationProperties
注解设置了前缀为 server
的属性值,并定义了 port
属性及其getter和setter方法。
2.2 注入配置属性类
接下来,在想要使用配置属性的类中注入 ApplicationProperties
Bean即可。
例如,在Spring MVC控制类中注入该Bean:
@RestController
public class HomeController{
@Autowired
private ApplicationProperties applicationProperties;
@GetMapping("/")
public String home(){
int port = applicationProperties.getPort();
return "Hello, world! The server port is " + port;
}
}
这里我们使用了 @Autowired
注解从Spring容器中注入 ApplicationProperties
Bean,然后就可以使用 getPort()
方法读取配置文件中的 server.port
属性了。
另外一个常见的配置文件属性是数据库连接属性,我们同样可以在 ApplicationProperties
定义中添加:
@Component
@ConfigurationProperties(prefix = "spring.datasource")
public class ApplicationProperties {
private String url;
private String username;
private String password;
// getter and setter methods omitted
}
然后在使用该属性的数据库连接类中用 @Autowired
注解来注入 ApplicationProperties
Bean即可。
示例
这里我们提供两个读取 application.properties
文件中配置属性内容的示例:
示例一:读取简单属性值
首先,创建一个 application.properties
文件,其中包含如下内容:
author.name=Tom
author.email=tom@example.com
然后,定义一个AuthorProperties
Java Bean类来读取这些属性,例如:
@Component
@ConfigurationProperties(prefix = "author")
public class AuthorProperties {
private String name;
private String email;
// getter and setter methods
}
最后,在需要使用这些属性的类中使用 @Autowired
注解注入它,例如:
@RestController
public class AuthorController{
@Autowired
private AuthorProperties author;
@GetMapping("/author")
public String getAuthor(){
return "Author: " + author.getName() + " <" + author.getEmail() + ">";
}
}
在浏览器访问 http://localhost:8080/author
,会得到如下结果:
Author: Tom <tom@example.com>
示例二:读取复杂属性值
在 application.properties
文件中添加如下内容:
app.config[0].name=Server
app.config[0].host=localhost
app.config[0].port=8080
app.config[1].name=Database
app.config[1].url=jdbc:mysql://localhost:3306/test
app.config[1].username=root
app.config[1].password=123456
这里我们定义了一个数组 app.config
,数组中的每个元素包含多个属性,这种情况下,我们可以在 ApplicationProperties
类中进行如下定义:
@Component
@ConfigurationProperties(prefix = "app")
public class ApplicationProperties {
private List<Config> config;
public static class Config {
private String name;
private String host;
private int port;
private String url;
private String username;
private String password;
// getter and setter methods
}
// getter and setter methods
}
然后,在需要使用这些属性的类中使用 @Autowired
注解注入它,例如:
@RestController
public class ConfigController{
@Autowired
private ApplicationProperties appProperties;
@GetMapping("/config")
public String getConfig(){
StringBuilder sb = new StringBuilder();
List<ApplicationProperties.Config> configList = appProperties.getConfig();
for (ApplicationProperties.Config config : configList) {
sb.append(config.getName() + ":\n");
if (config.getHost() != null){
sb.append("\tHost: " + config.getHost() + "\n");
sb.append("\tPort: " + config.getPort() + "\n");
}
if (config.getUrl() != null){
sb.append("\tURL: " + config.getUrl() + "\n");
sb.append("\tUsername: " + config.getUsername() + "\n");
sb.append("\tPassword: " + config.getPassword() + "\n");
}
}
return sb.toString();
}
}
在浏览器访问 http://localhost:8080/config
,会得到如下结果:
Server:
Host: localhost
Port: 8080
Database:
URL: jdbc:mysql://localhost:3306/test
Username: root
Password: 123456
以上就是使用application.properties读取文件里面的值的完整攻略,希望对您有帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java使用application.property读取文件里面的值 - Python技术站