@ConfigurationProperties注解的理解和使用

简介: 在编写项目代码时,我们要求更灵活的配置,更好的模块化整合。在 Spring Boot 项目中,为满足以上要求,我们将大量的参数配置在 application.properties 或 application.yml 文件中,通过 @ConfigurationProperties 注解,我们可以方便的获取这些参数值

1 @ConfigurationProperties说明

在编写项目代码时,我们要求更灵活的配置,更好的模块化整合。在 Spring Boot 项目中,为满足以上要求,我们将大量的参数配置在 application.properties 或 application.yml 文件中,通过 @ConfigurationProperties 注解,我们可以方便的获取这些参数值

2 使用@ConfigurationProperties

ConfigurationPropertiesTest.java

/**
 * @desc: @ConfigurationProperties
 * @author: YanMingXin
 * @create: 2021/7/27-17:36
 **/
@ConfigurationProperties(prefix = "student")
@Component
public class ConfigurationPropertiesTest {

    private String name;

    private String age;

    public String getName() {
        return name;
    }

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

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}

SpringUtil.java

/**
 * @desc: SpringUtil
 * @author: YanMingXin
 * @create: 2021/7/27-17:55
 **/
@Component
public class SpringUtil implements ApplicationContextAware {

    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        if (SpringUtil.applicationContext == null) {
            SpringUtil.applicationContext = applicationContext;
        }
    }

    /**
     * 获取applicationContext
     *
     * @return
     */
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    /**
     * 通过name获取 Bean
     *
     * @param name
     * @return
     */
    public static Object getBean(String name) {
        return getApplicationContext().getBean(name);
    }

    /**
     * 通过class获取Bean
     *
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T getBean(Class<T> clazz) {
        return getApplicationContext().getBean(clazz);
    }

    /**
     * 通过name,以及Clazz返回指定的Bean
     *
     * @param name
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T getBean(String name, Class<T> clazz) {
        return getApplicationContext().getBean(name, clazz);
    }
}

application.properties

student.name=zs
student.age=23

测试:

@Test
void contextLoads() {
    ConfigurationPropertiesTest bean = (ConfigurationPropertiesTest) SpringUtil.getBean("configurationPropertiesTest");
    System.out.println(bean.getAge());
}

输出:

23

相关文章
|
XML 数据格式 容器
基于注解的自动装配~
基于注解的自动装配~
|
Java 开发者 Spring
@ConfigurationProperties
@ConfigurationProperties
Zp
|
小程序 Java Spring
记@ComponentScan注解的坑
记@ComponentScan注解的坑
Zp
467 0
一文深入了解ConfigurationProperties注解
一文深入了解ConfigurationProperties注解
398 0
一文深入了解ConfigurationProperties注解
|
Java Spring
@ConfigurationProperties注解的理解和使用
@ConfigurationProperties注解的理解和使用
|
XML Java 测试技术
Bean的自动装配
- 自动装配Spring满足bean依赖一种方式! - Spring会在上下文中自动寻找,并自动给Bean装配属性
|
XML Java 数据格式
@Bean 注解
@Bean 注解
3005 5
|
Java 编译器
关于@FunctionalInterface注解
FunctionalInterface
477 0
关于@FunctionalInterface注解
|
开发框架 Java Spring
Spring - 属性注入之注解(@Autowired、@Qualifier、@Resource)
Spring - 属性注入之注解(@Autowired、@Qualifier、@Resource)
264 0
Spring - 属性注入之注解(@Autowired、@Qualifier、@Resource)
|
Java Maven
扒一扒@Retryable注解,很优雅,有点意思! (5)
扒一扒@Retryable注解,很优雅,有点意思! (5)
275 0
扒一扒@Retryable注解,很优雅,有点意思! (5)

热门文章

最新文章