Spring Boot 自定义属性和自定义文件

自定义属性

我们在使用Spring boot的时候,一些特殊情况下会需要用到一些自定义属性,当然Spring Boot已经为我们考虑好了,我们只要按着配置规则进行配置就可以了,本文讲的是自定义属性的配置。

@Value

首先说一下之前我们怎么获取配置文件中的自定义属性

  • 在application.properties文件中加入自定义属性
com.innerpeacez.name=innerpeacez
com.innerpeacez.address=hangzhou
com.innerpeacez.age=18
com.innerpeacez.desc=${com.innerpeacez.age} years old,${com.innerpeacez.name} is studying spring boot in ${com.innerpeacez.address}
  • 使用@Value注解获取属性值
@Component
@Data
public class InnerpeacezInfo {
    @Value("${com.innerpeacez.name}")
    private String name;
    @Value("${com.innerpeacez.address}")
    private String address;
    @Value("${com.innerpeacez.age}")
    private int age;
    @Value("${com.innerpeacez.desc}")
    private String desc;
}

测试类:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class PropertiesTests {

    private final Logger logger = LoggerFactory.getLogger(PropertiesTests.class);

    @Autowired
    private InnerpeacezInfo innerpeacezInfo;

    @Test
    public void testCustomProperties() {
        logger.info("------------------------------------------------------");
        logger.info(innerpeacezInfo.toString());
        logger.info("------------------------------------------------------");
    }
}

测试结果:

2018-08-29 14:22:49.967  INFO 7900 --- [           main] c.zhw.study.springboot.PropertiesTests   : ------------------------------------------------------
2018-08-29 14:22:49.967  INFO 7900 --- [           main] c.zhw.study.springboot.PropertiesTests   : InnerpeacezInfo(name=innerpeacez, address=hangzhou, age=18, Desc=18 years old,innerpeacez is studying spring boot in hangzhou)
2018-08-29 14:22:49.967  INFO 7900 --- [           main] c.zhw.study.springboot.PropertiesTests   : ------------------------------------------------------

@ConfigurationProperties

接下来就是通过Spring Boot提供的@ConfigurationProperties注解来完成自定义属性。

  • 需要引入configuration相关Maven依赖
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-configuration-processor</artifactId>
   <optional>true</optional>
</dependency>
  • 在application.properties文件中加入自定义属性
com.innerpeacez.name=innerpeacez
com.innerpeacez.address=hangzhou
com.innerpeacez.age=18
com.innerpeacez.desc=${com.innerpeacez.age} years old,${com.innerpeacez.name} is studying spring boot in ${com.innerpeacez.address}
  • 使用@ConfigurationProperties注解获取属性值
@ConfigurationProperties("com.innerpeacez")
@Component
@Data
public class InnerpeacezInfo {
    private String name;
    private String address;
    private int age;
    private String desc;
}

测试类和测试结果都是和上面的一样的。

自定义文件

自定义属性的时候我们是将属性写在application.properties文件中的。因为Spring Boot启动的时候会自动加载这个文件,如果我们不想使用这个文件我们应该怎么做?

  • 首先自定义一个innerpeacezinfo.properties配置文件,内容和上面的application.properties文件一样
com.innerpeacez.name=innerpeacez
com.innerpeacez.address=hangzhou
com.innerpeacez.age=18
com.innerpeacez.desc=${com.innerpeacez.age} years old,${com.innerpeacez.name} is studying spring boot in ${com.innerpeacez.address}

@PropertySource

  • 使用@PropertySource注解加载我们自定义的配置文件
@ConfigurationProperties("com.innerpeacez")
@PropertySource("classpath:innerpeacezinfo.properties")
@Component
@Data
public class InnerpeacezInfo {
    private String name;
    private String address;
    private int age;
    private String desc;
}

测试类和测试结果都是和上面的一样的。

注意

配置文件中是不区分大小写的,但是好像不能有boolean类型的元素,@Value注解时直接会报错,而使用Spring Boot的方式加载时,不会报错,会给个默认值false

发布了126 篇原创文章 · 获赞 75 · 访问量 13万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览