注释注释本

1.AutowiredAnnotationBeanPostProcessor是主要逻辑类,基本逻辑同@Autowird

2.PropertySourcesPlaceholderConfigurer中会将StringValueResolver添加到beanFactory

3.外部配置文件properties会加载到ConfigurableEnvironment中,具体逻辑是通过ApplicationEvent事件通知的形式实现的

ConfigFileApplicationListener(最新版本是ConfigDataEnvironmentPostProcessor)是主要的实现类,它是在spring.factories中,在启动时加载进来的
4.springboot会去默认的位置寻找配置文件,默认位置如下

locations.add(ConfigDataLocaiton.of("optional:classpath:/;optional:classpath:/config/"))
locations.add(ConfigDataLocaiton.of("optional:file:./;optional:file:./config/;optional:file:./config/*/"))
外部的配置文件会override内部的配置文件
配置项的优先级如下:
1.Command line arguments
2.ServletConfig init parameters
3.ServletContext init parameters
4.Java System properties(System.getProperties())
5.OS environment variables(System.getEnv())
6.Config data(such as application.properties())
7.@PropertySource annotations on your @Configuration(引入的其它配置文件)
8.Default properties(specified by setting SpringApplication.setDefaultProperties)
5.static 标识的属性不能生效

6.方法参数中也可以用@Value

ContextAnnotationAutowireCandidateResolver的getSuggestedValue(DependencyDescriptor descriptor)方法可以获取这个注解${xxx}
7.系统环境变量中可以匹配到包含.-_的变量

如原变量@Value("${eim.tts.middlePlatform.url}")
环境变量可以设置为eim_tts_middlePlatform_url或者eim-tts-middlePlatform-url或者eim.tts.middlePlatform.url,也不区分大小写
8.想从其它位置获取配置项

If you want to support your own locations,see the ConfigDataLocationResolver and ConfigDataLoader Classes in the org.springframework.boot.context.config package
9.The EnvironmentPostProcessor  interface allows you to manipulate the Environment

你可能感兴趣的:(其他)