Java使用application.property读取文件里面的值

yizhihongxing

当我们开发Java Web 应用时,经常需要从配置文件中读取一些参数,这里我们将详细讲解如何使用 application.properties 文件来读取配置值。

1. 创建配置文件

我们首先需要创建一个 application.properties文件,该文件是Spring Boot标准的配置文件,实际上Spring Boot中有多种方式配置应用程序,如application.ymlbootstrap.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技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 基于IDEA部署Tomcat服务器的步骤详解

    基于IDEA部署Tomcat服务器的步骤详解 一、安装Tomcat服务器 在官方网站下载Tomcat服务器,选择 .zip 格式的压缩包进行下载。 解压缩下载的压缩包到本地的某个目录下。例如:D:\apache-tomcat-8.5.61 配置环境变量。在系统环境变量中添加 CATALINA_HOME 变量,变量值为 Tomcat 的路径。例如:D:\apa…

    Java 2023年6月16日
    00
  • 10种Java开发者编写SQL语句时常见错误

    这里是“10种Java开发者编写SQL语句时常见错误”的完整攻略: 1.错误 #1:使用SELECT *语句 当你写SELECT语句时,使用SELECT *可以查询到所有的值。然而,这并不是最佳实践,最好是使用具体的列名。这有几个原因: 性能问题:SELECT *通常比只选取需要的列要慢得多,特别是在表列数很多时。 可读性问题:使用具体的列名会使查询更易读,…

    Java 2023年5月20日
    00
  • 魔剑之刃斩魂技能全面介绍及点评

    魔剑之刃斩魂技能全面介绍及点评 什么是斩魂技能? 斩魂技能是魔剑之刃游戏中的一种特殊技能,通过学习和研究斩魂技能,角色可以提升自身战斗力和生存能力。 斩魂技能的分类 魔剑之刃游戏中,斩魂技能分为三大类,分别是: 攻击技能 攻击技能主要用于提高角色的攻击力和输出能力,可以有效地进行单体或群体伤害。举例如下: 感知之刃:消耗30点能量,对单个目标造成大量伤害,并…

    Java 2023年6月16日
    00
  • 使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法

    使用EasyUI实现查询条件的后端传递并自动刷新表格,一般有两种方法可以实现。 方法一:使用表单的submit事件以及datagrid的load方法 1. 在页面中定义查询表单以及datagrid 在页面中定义一个查询表单,表单中包含了查询条件,以及一个查询按钮。同时,定义一个datagrid用于表格的展示。 <form id="queryF…

    Java 2023年6月15日
    00
  • springBoot整合CXF并实现用户名密码校验的方法

    下面是“Spring Boot整合CXF并实现用户名密码校验的方法”的完整攻略: 1. 添加依赖 在 pom.xml 文件中添加 CXF 相关的依赖: <dependencies> <!– CXF 依赖 –> <dependency> <groupId>org.apache.cxf</groupId&…

    Java 2023年5月20日
    00
  • 浅谈web服务器项目中静态请求和动态请求处理

    浅谈Web服务器项目中静态请求和动态请求处理 在Web服务器项目中,我们需要处理浏览器发送的请求,并根据请求的内容返回不同的响应内容。其中,请求分为静态请求和动态请求两种类型,下面将详细介绍这两种请求的处理方式。 静态请求处理 静态请求是指访问的资源在服务器中是静态的,不会改变的请求。在处理静态请求时,服务器直接将所请求的文件返回给浏览器即可。对于静态请求,…

    Java 2023年6月15日
    00
  • JVM的垃圾回收算法一起来看看

    JVM的垃圾回收算法 在Java编程中,内存管理是一个非常重要的问题。Java虚拟机(JVM)的垃圾回收算法可以用来管理和清理不再使用的内存空间。本文将带你了解JVM的垃圾回收算法并提供一些示例。 垃圾回收算法 标记-清除(Mark and Sweep) 这是最早的垃圾回收算法之一,也是最容易实现的算法之一。该算法包括两个步骤:标记和清除。 标记阶段扫描堆中…

    Java 2023年5月19日
    00
  • spring boot之使用spring data jpa的自定义sql方式

    下面是使用Spring Data JPA的自定义SQL方式的完整攻略。 1. 添加依赖 首先需要在项目中添加Spring Data JPA的依赖。可以在项目的Maven或Gradle配置中添加以下依赖项: <dependency> <groupId>org.springframework.boot</groupId> &l…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部