spring各个版本还不一样,目前最新的是
3.1前,property-placeholder 解析为 PlaceholderConfigurerSupport
3.1后,property-placeholder 解析为PropertySourcesPlaceholderConfigurer
关于父子容器
父亲里面定义的property-placeholder,儿子里面@Value读不到。
要想多个 property-placeholder,需要设置ignore-unresolvable="true" ,顺序靠order,但是是以order小的优先。比如order1先加载了keyA=valueA,order2里面如果有keyA=valueAA,order2里面的keyA=valueAA不会加载,所以内容仍然是order1里的valueA。
property-placeholder定义的内容进不了Environment,所以env.getProperty是拿不着东西,就算@Value拿到了也不行。
挺乱。
结论就是,不要再使用 property-placeholder了,以后要用 @PropertySource
@PropertySource自己并不会注册PropertySourcesPlaceholderConfigurer ,所以需要自己定义一个PropertySourcesPlaceholderConfigurer bean
@PropertySource的父子容器是
父亲定义的,儿子可以读取,@Value可以读,env可以读。
同一个容器里的多个 @PropertySource,就拼先后顺序了。
没有评论:
发表评论