JAVA读取配置文件

JAVA读取Java配置文件属性

在这里插入图片描述

前言


一、读取配置的意义

读取Java配置文件属性为您提供了一种灵活、可配置和可维护的方式来管理应用程序的属性。它使您能够动态地调整应用程序的行为,并为应用程序提供了更高的安全性和可移植性。

二、使用方法

在这里插入图片描述

方法一:@Value

demo.name=louis
demo.age=20

属性注入

@Component
public class ReadByValue {
    @Value("${demo.name}")
    private String name;
}

方法二:@ConfigurationProperties

demo.name=louis
demo.age=20

属性注入

@Component
@ConfigurationProperties(prefix = "demo")
public class ReadByConfigurationProperties {

    private String name;

    private Int age;

方法三:@PropertySource

@PropertySource是一个注解,用于指定要加载的属性文件的位置和名称。它是Spring框架中的一个特性,用于从属性文件中读取配置信息。需要确保已经配置了一个用于加载属性文件的PropertySourcesPlaceholderConfigurer bean。这个bean可以通过使用@Configuration注解和@Bean注解在Spring配置类中进行配置。

@Configuration
@PropertySource("classpath:config.properties")
public class AppConfig {

    @Autowired
    private Environment environment;

    // ...
    // 其他配置和Bean定义

    @Bean
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }

    // ...
    // 其他配置和Bean定义
}

属性注入

@Configuration
@PropertySource("classpath:config.properties")
public class SomeClass {

    @Autowired
    private Environment environment;

    public void someMethod() {
        String propertyValue = environment.getProperty("propertyName");
        // 使用属性值进行操作
    }

    // ...
    // 其他方法和逻辑
}

方法四:@PropertySource@EnableConfigurationProperties

@SpringBootApplication
@EnableConfigurationProperties(MyProperties.class)
public class MyAppApplication {
    // 主应用程序类的代码
    // ...
}

在上述示例中,@EnableConfigurationProperties注解用于启用@ConfigurationProperties注解,并指定要注册的配置类为MyProperties.class。这意味着MyProperties类将成为一个被Spring管理的bean,并且可以使用@ConfigurationProperties注解来绑定配置属性。
接下来,您需要在MyProperties类中使用@ConfigurationProperties注解,并指定属性的前缀,以便从配置文件中加载对应的属性值。

@ConfigurationProperties(prefix = "myapp")
public class MyProperties {
    private String property1;
    private int property2;
    // 其他属性和getter/setter方法
}

在上述示例中,@ConfigurationProperties注解指定了属性的前缀为"myapp",这意味着Spring Boot将尝试从配置文件中加载以"myapp"为前缀的属性值,并将它们绑定到MyProperties类的对应属性上。

最后,在需要使用配置属性的地方,可以通过@Autowired注解将MyProperties类的实例注入到其他类中,并使用其中的属性值。

@Service
public class MyService {
    private final MyProperties myProperties;
    @Autowired
    public MyService(MyProperties myProperties) {
        this.myProperties = myProperties;
    }
    public void doSomething() {
        String property1Value = myProperties.getProperty1();
        int property2Value = myProperties.getProperty2();
        // 使用属性值进行操作
    }
}

通过@Autowired注解将MyProperties实例注入到MyService类中,并使用其中的属性值进行操作。@EnableConfigurationProperties注解用于启用@ConfigurationProperties注解,并将@ConfigurationProperties注解的类作为Spring的bean进行注册。它使得我们能够方便地将配置属性值注入到应用程序中的对应类中,从而实现了配置属性的自动绑定和注入。

方法五:@ConfigurationPropertiesScan

@ConfigurationPropertiesScan是Spring Boot 2.2版本及以上引入的注解。它的作用是自动扫描和注册使用@ConfigurationProperties注解的类作为Spring的bean。在使用@ConfigurationProperties注解时,通常需要在主应用程序类上添加@ConfigurationPropertiesScan注解,以便让Spring Boot自动扫描和注册这些类作为bean。这样就不需要手动在每个@ConfigurationProperties类上使用@Component或@Configuration注解了。

@SpringBootApplication
@ConfigurationPropertiesScan
public class MyAppApplication {
    // 主应用程序类的代码
    // ...
}

@ConfigurationPropertiesScan注解用于告诉Spring Boot自动扫描并注册使用@ConfigurationProperties注解的类。它会在应用程序的类路径下进行扫描,并将这些类作为Spring的bean进行注册。

@ConfigurationProperties(prefix = "myapp")
public class MyAppProperties {
    private String property1;
    private int property2;
    // 其他属性和getter/setter方法
}

@ConfigurationProperties注解指定了属性的前缀为"myapp",这意味着Spring Boot将尝试从配置文件中加载以"myapp"为前缀的属性值,并将它们绑定到MyAppProperties类的对应属性上。

@Service
public class MyService {

    private final MyAppProperties myAppProperties;

    @Autowired
    public MyService(MyAppProperties myAppProperties) {
        this.myAppProperties = myAppProperties;
    }

    public void doSomething() {
        String property1Value = myAppProperties.getProperty1();
        int property2Value = myAppProperties.getProperty2();
        // 使用属性值进行操作
    }
}

通过@Autowired注解将MyAppProperties实例注入到MyService类中,并使用其中的属性值进行操作。


三、什么情况数据写在配置文件里

1、配置参数:将应用程序的配置参数存储在配置文件中是一种常见的做法。这些参数可以包括数据库连接信息、服务器端口、日志级别、缓存大小等。通过将这些参数写在配置文件中,可以在不修改代码的情况下进行配置的更改。

2、环境配置:在不同的环境中(如开发、测试和生产)使用不同的配置是常见的需求。通过将环境特定的配置写在不同的配置文件中,可以根据当前的运行环境加载相应的配置文件。这样,您可以轻松地在不同的环境中部署应用程序,而不需要修改代码。

3、敏感信息:敏感信息如密码、API密钥等不应该直接硬编码在代码中。将这些敏感信息存储在配置文件中,并使用适当的访问控制来保护文件,可以提高应用程序的安全性。

4、外部资源路径:如果应用程序需要访问文件系统、URL、存储桶等外部资源,将这些资源的路径或连接信息存储在配置文件中是很有帮助的。这样,在需要修改或切换资源时,只需要更新配置文件,而不需要修改代码。

5、国际化和本地化:在多语言环境中,将本地化文本、消息和格式设置存储在配置文件中是常见的做法。通过在配置文件中定义不同语言的键值对,应用程序可以根据用户的语言设置来读取相应的本地化内容。

将数据写在配置文件中的主要目的是提供一种灵活、可配置和可维护的方式来管理应用程序的属性和参数。这样可以在不修改代码的情况下进行配置的更改,并允许应用程序在不同的环境中运行。此外,通过将敏感信息和外部资源路径等内容存储在配置文件中,可以提高应用程序的安全性和可移植性。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值