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

当我们开发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日

相关文章

  • Maven学习教程之搭建多模块企业级项目

    以下是详细讲解Maven学习教程之搭建多模块企业级项目的完整攻略: 1. 准备工作 在开始搭建多模块企业级项目之前,我们需要进行以下准备工作: (1)安装Java和Maven 首先需要安装Java和Maven,Java需要1.7及以上版本,Maven需要3.0及以上版本。 (2)创建项目目录结构 我们需要创建项目目录结构,可以使用以下命令创建: mkdir …

    Java 2023年5月20日
    00
  • JavaBean实体类处理外键过程解析

    下面是针对“JavaBean实体类处理外键过程解析”的完整攻略: 1. 概述 在数据库设计中,为了避免数据冗余和提高数据存储效率,通常会使用外键来保证关系完整性。然而,在Java程序中处理外键时,我们通常需要将外键转换成JavaBean实体类中的关联对象。这个过程需要我们对JavaBean实体类进行一定的处理,下面将详细介绍这个过程。 2. 外键的处理方式 …

    Java 2023年5月26日
    00
  • Java用递归方法解决汉诺塔问题详解

    Java用递归方法解决汉诺塔问题详解 问题描述 汉诺塔问题的经典描述是:在有三根柱子的情况下,有三个大小不同的盘子从下往上按从大到小的顺序放在柱子A上,要将这三个盘子移动到柱子C上,要求每次只能移动一个盘子,且大盘子不能放在小盘子上面。 解题思路 汉诺塔问题是递归问题的典型,使用递归可以比较简单地解决该问题。 我们可以将解决汉诺塔问题的方法抽象为三个步骤: …

    Java 2023年5月19日
    00
  • CSS变量实现主题切换的方法

    下面我将详细讲解CSS变量实现主题切换的方法的完整攻略。 什么是CSS变量? CSS变量也称为自定义属性,是一种定义在CSS规则中的、可重复使用的值。与常规的CSS属性不同,CSS变量以双减号(–)开头,并可以在整个样式表的范围内使用。 实现简介 利用CSS变量实现主题切换的方法主要包括以下几个步骤: 定义多套主题色进行切换; 使用CSS变量将主题色应用到…

    Java 2023年6月15日
    00
  • Java实战角色权限后台脚手架系统的实现流程

    Java实战角色权限后台脚手架系统的实现流程可以分为以下几个步骤: 设计数据库结构 首先需要确定后台系统需要管理哪些数据,并设计相应的数据库结构。比如,在角色权限后台脚手架系统中,需要管理用户、角色、权限等数据,可以设计如下的表结构: 用户表(user):用户ID、用户名、密码、姓名、邮箱等字段。 角色表(role):角色ID、角色名称等字段。 权限表(pe…

    Java 2023年5月24日
    00
  • 使用Criteria进行分组求和、排序、模糊查询的实例

    下面我将为你详细讲解使用Criteria进行分组求和、排序、模糊查询的完整攻略。 一、Criteria的概述 Hibernate 中的 Criteria 查询是为了解决 HQL 表达式中所没有解决的灵活的高级查询,也可以免去写 SQL 的烦恼,使用标准的方式,所有的查询条件都封装成一个对象。 Criteria 对象可以通过 Restrictions 的静态方…

    Java 2023年5月20日
    00
  • 解决问题:Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources

    解决问题: Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources 这个问题通常出现在使用Maven构建项目时,执行了clean install命令,Maven在构建过程中提示如下错误: Failed to execute goal org.…

    Java 2023年6月2日
    00
  • 使用Java代码进行因数分解和求最小公倍数的示例

    当我们需要在Java程序中进行因数分解和求最小公倍数的计算时,我们可以选择使用Java自带的Math类中的方法。下面我会分别介绍解题思路和代码实现。 因数分解 对于因数分解,我们可以利用Math类中的sqrt()方法求出目标数的平方根,然后从2开始递增,试图将其除尽,直到除不了为止。具体实现如下: /** * 因数分解 * * @param n 待分解的数 …

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