美文网首页
SpringBoot的自定义配置

SpringBoot的自定义配置

作者: david161 | 来源:发表于2022-06-10 09:11 被阅读0次

SpringBoot免除了项目中大部分的手动配置,对一些特定情况,我们可以通过修改全局配置文件以适应具体生产环境,可以说,几乎所有的配置都可以写在application.properties文件中,SpringBoot会自动加载全局配置文件,从而免除我们手动加载的烦恼。但是,如果我们自定配置文件,SpringBoot是无法识别这些配置文件的,此时就需要我们手动加载。接下来,将针对SpringBoot的自定义配置文件及其加载方式进行讲解。

使用@PropertySource加载配置文件

对于这种加载自定义配置文件的需求,可以使用@PropertySource注解结合@Configuration注解配置类的方式来实现。@PropertySource注解用于指定自定义配置文件的具体位置和名称。同时,为了保证SpringBoot能够扫描该注解,还需要类添加@Configuartion注解将实体类作为自定义配置类。
当然,如果需要将自定义配置文件中的属性值注入到对应类的属性中,可以使用@ConfigurationProperties或者@Value注解进行属性值注入

配置文件实现

打开SpringBoot项目的resources目录,在项目的类路径下新建一个test.properties自定义配置文件,在该配置文件中编写需要的配置属性

# 对实体类对象MyProperties进行属性配置
test.id = 100
test.name = test
配置类实现

在com.david.pojo包下新创建一个配置类MyProperties,提供test.properties自定义配置文件中对应的属性,并根据@PropertySource注解的使用进行相关配置

@Configuration  //自定义配置
@PropertySource("classpath:test.properties")   //指定自定义配置文件位置和名称
@EnableConfigurationProperties(MyProperties.class)   //开启对应配置类的属性注入功能
@ConfigurationProperties(prefix = "test")     //指定配置文件注入属性前缀
public class MyProperties {
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "MyProperties{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

主要是一个自定义配置类,通过相关注解引入了自定的配置文件,并完成了自定义属性值的注入。针对示例中的几个注解,具体说明如下:
1)@Confiruation注解表示当前类是一个自定义配置类,并添加为Spring容器的组件,这里也可以使用传统的@Component注解
2)@PropertySource("classpath:properties")注解指定了自定义配置文件的位置和名称,此示例表示自定义配置文件为classpath类路径下的test.properties文件
3)@ConfigurationProperties(prefix="test")注解将上述自定义配置文件test.properties中以test开头的属性值注入到该配置类属性中
4)如果配置类上使用的是@Componnet注解而非@Configuration注解,那么@EnableConfigurationProperties注解还可以省略

测试类实现
@ExtendWith(SpringExtension.class)
@SpringBootTest
public class MyPropertiesTest {
    @Autowired
    private MyProperties myProperties;

    @Test
    public void myPropertiesTest() {
        System.out.println(myProperties);
    }
}

使用@Configuration编写自定义配置类

在SpringBoot框架中,推荐使用配置类的方式向容器中添加和配置组件
在SpringBoot框架中,通常使用@Configuration注解定义一个配置类,SpringBoot会自动扫描和识别配置类,从而替换传统Spring框架中的XML配置文件。
当定义一个配置类后,还需要在类中的方法上使用@Bean注解进行组件配置,将方法的返回对象注入到Spring容器中,并且组件名称默认使用的是方法名,当然也可以使用@Bean注解的name或value属性自定义组件的名称

空的MyService类

在项目下新建一个

相关文章

网友评论

      本文标题:SpringBoot的自定义配置

      本文链接:https://www.haomeiwen.com/subject/urkumrtx.html