application.properties 包含如下配置
test.config.host=127.0.0.1test.config.port=7001test.config.conI=AAAAAAAA
有TestConfig类
publicclassTestConfig{privateStringhost;privateStringport;privateStringconI;}
为了达到在系统启动时能够在application.properties中将前缀设置成test.config配置项目
全部初始化为TestConfig@Bean
而且可以注入其它@Component
创建SpringbootWeb项目
项目文件的结构
POM文件的内容如下
4.0.0 org.springframework.boot spring-boot-starter-parent 2.6.6 com.my.demo configTest 0.0.1-SNAPSHOT config-Test DemoprojectforSpringBoot 17 org.springframework.boot spring-boot-starter-web org.projectlombok lombok 1.18.22 org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin
主类文件是ConfigTestApplication,具体内容如下
@ComponentScan(basePackages={"com.my.demo.config"})这一项必须要有,
由于TestConfig类与主类没有位于一个数据包之下
packagecom.my.demo.configTest;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.context.annotation.ComponentScan;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;importcom.my.demo.config.TestConfig;publicclassConfigTestApplication{privateTestConfigtestConfigBean;publicStringindex(){return"执行:"+testConfigBean.getHost();}publicstaticvoidmain(String[]args){SpringApplication.run(ConfigTestApplication.class,args);}}
TestConfig的文档内容是这样的,在类中无需添加@Component的注释
packagecom.my.demo.config;importorg.springframework.boot.context.properties.ConfigurationProperties;importlombok.Data;(prefix="test.config")publicclassTestConfig{privateStringhost;privateStringport;privateStringconI;privateStringname;}
TestConfigCreater文件内容为,这里注意EnableConfigurationProperties
有些文章认为需含有该注解、配置才会自动有效
个人尝试过,含与不含并无差异,也不知是Springboot版的缘故
packagecom.my.demo.config;importorg.springframework.boot.context.properties.EnableConfigurationProperties;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importlombok.extern.slf4j.Slf4j;@Slf4j@Configuration//@EnableConfigurationProperties(TestConfig.class)publicclassTestConfigCreater{@BeanpublicTestConfigtestConfigBean(){log.info("创建testConfig...");returnnewTestConfig();}}
application.properties里添加站点地址
server.port=8060
开始试验