SpringBoot配置文件属性注入

简介: SpringBoot配置文件属性注入

属性注入

在application.yml添加以下配置

author:
  name: 莫提
  age: 22
  isMan: true
  # 日期格式必须为 yyyy/MM/dd HH:mm:ss
  birthday: 1999/07/29 12:00:00
  # 数组或集合使用,分割
  friends: 张三,李四,王五,赵六
  # 此处为JSON字符串,双引号包裹
  school: "{'name':'宜春学院','location':'江西-宜春','major':'计算机科学与技术'}"
@SpringBootTest
public class InjectionTest {
    /**
     * 注入基本数据类型
     */
    @Value("${author.name}")
    private String name;
    @Value("${author.age}")
    private Integer age;
    @Value("${author.isMan}")
    private Boolean isMan;
    /**
     * 注入日期
     */
    @Value("${author.birthday}")
    private Date birthday;
    /**
     * 注入数组或集合
     */
    @Value("${author.friends}")
    private List<String> friends;
    /**
     * 注入JSON转为Map
     */
    @Value("#{${author.school}}")
    private Map<String,Object> school;
    @Test
    public void test(){
        System.out.println("name = " + name);
        System.out.println("age = " + age);
        System.out.println("birthday = " + birthday);
        System.out.println("isMan = " + isMan);
        System.out.println("friends = " + friends);
        System.out.println("school = " + school);
    }
}

对象注入

使用@ConfigurationProperties(prefix = "前缀"),比如上文在application.yml中配置的信息,那么author就是前缀。注意使用对象注册的时候就不可以在注入JSON

@Data
@Component
@ConfigurationProperties(prefix = "author")
public class Author {
    private String name;
    private Integer age;
    private Date birthday;
    private Boolean isMan;
    private List<String> friends;
}
@SpringBootTest
public class InjectionTest {
    /**
     * 注入对象
     */
    @Autowired
    private Author author;
    @Test
    public void test(){
        System.out.println("author = " + author);
    }
}

自定义配置文件并使用对象注入

resources目录下创建custom.properties配置文件,并填写以下配置

project.name=测试DEMO
project.jdk=1.8

使用@PropertySource注解指定配置文件,然后配合@ConfigurationProperties(prefix = "前缀")即可完成对象注入

@Data
@Component
@ConfigurationProperties(prefix = "project")
@PropertySource("classpath:/custom.properties")
public class Project {
    private String name;
    private String jdk;
}
@SpringBootTest
public class InjectionTest {
    /**
     * 注入自定义配置文件对象
     */
    @Autowired
    private Project project;
    @Test
    public void test(){
        System.out.println("project = " + project);
    }
}


相关文章
|
4月前
|
Java 测试技术 数据库
Spring Boot中的项目属性配置
本节课主要讲解了 Spring Boot 中如何在业务代码中读取相关配置,包括单一配置和多个配置项,在微服务中,这种情况非常常见,往往会有很多其他微服务需要调用,所以封装一个配置类来接收这些配置是个很好的处理方式。除此之外,例如数据库相关的连接参数等等,也可以放到一个配置类中,其他遇到类似的场景,都可以这么处理。最后介绍了开发环境和生产环境配置的快速切换方式,省去了项目部署时,诸多配置信息的修改。
|
5月前
|
Java
springboot字段注入@value细节
springboot字段注入@value细节
|
5月前
|
Java
springboot自动注入避坑
springboot自动注入避坑
|
30天前
|
druid Java Maven
|
1月前
|
Java 应用服务中间件 Maven
SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案
SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案
317 0
|
1月前
|
Java Shell C++
Springboot加载注入bean的方式
本文详细介绍了Spring Boot中Bean的装配方法。首先讲解了使用@Component、@Service、@Controller、@Repository等注解声明Bean的方式,并解释了这些注解之间的关系及各自适用的层次。接着介绍了通过@Configuration和@Bean注解定义Bean的方法,展示了其灵活性和定制能力。最后讨论了@Component与@Bean的区别,并提供了在Spring Boot应用中装配依赖包中Bean的三种方法:使用@ComponentScan注解扫描指定包、使用@Import注解导入特定Bean以及在spring.factories文件中配置Bean。
|
3月前
|
缓存 Java 数据库连接
Spring Boot 资源文件属性配置,紧跟技术热点,为你的应用注入灵动活力!
【8月更文挑战第29天】在Spring Boot开发中,资源文件属性配置至关重要,它让开发者能灵活定制应用行为而不改动代码,极大提升了可维护性和扩展性。Spring Boot支持多种配置文件类型,如`application.properties`和`application.yml`,分别位于项目的resources目录下。`.properties`文件采用键值对形式,而`yml`文件则具有更清晰的层次结构,适合复杂配置。此外,Spring Boot还支持占位符引用和其他外部来源的属性值,便于不同环境下覆盖默认配置。通过合理配置,应用能快速适应各种环境与需求变化。
44 0
|
3月前
|
安全 Java 开发者
开发者必看!@Resource与private final的较量,Spring Boot注入技巧大揭秘,你不可不知的细节!
【8月更文挑战第29天】Spring Boot作为热门Java框架,其依赖注入机制备受关注。本文通过对比@Resource(JSR-250规范)和@Autowired(Spring特有),并结合private final声明的字段注入,详细探讨了两者的区别与应用场景。通过示例代码展示了@Resource按名称注入及@Autowired按类型注入的特点,并分析了它们在注入时机、依赖性、线程安全性和单一职责原则方面的差异,帮助开发者根据具体需求选择最合适的注入策略。
140 0
|
5月前
|
Java Linux 程序员
技术笔记:Spring生态研习【五】:Springboot中bean的条件注入
技术笔记:Spring生态研习【五】:Springboot中bean的条件注入
|
5月前
|
Java 关系型数据库 MySQL
SpringBoot系列教程之事务传递属性
SpringBoot系列教程之事务传递属性