知识点:
1.子容器可以访问父容器的资源bean,父容器不可以访问子容器资源bean
2.spring配置读取配置文件属性例如jdbc.properties,父容器中可以使用@value("${key}") 对properties中的key获取其value值赋值给成员变量
@value注解 是在所有bean创建成功之后才执行,且只能在当前容器的查找数据
主要过程:
1.添加properties属性文件
2.spring配置文件配置读取该peoperties属性文件
3.在spring 中创建一个bean,使用@value读取并复制要使用的 key-value
4.将spring中的bean注入到springMVC容器中使用
详细过程:
子容器中使用父容器的properties配置文件变量:
设置配置文件 evn.properties
内容:PATH=D:\mysetup\images
URL=image.test.com
spring父容器配置文件加载applicationscontext.xml中读取该配置文件,配置如下
- <span> </span>
- <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
-
- <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
-
- <property name="ignoreResourceNotFound" value="true" />
-
- <property name="locations">
- <list>
- <value>classpath:env.properties</value>
- </list>
- </property>
- </bean>
使用 @value注解 读取属性值 @value是在所有bean创建成功后再执行 @value注解只会在当前容器中查询数据
在spring父容器中读取属性文件中的值
- @Service
- public class PropertiesService {
-
- @Value("${URL}")
- public String PIC_MANAGE_URL;
-
- @Value("${PATH}")
- public String PIC_MANAGE_PATH;
- }
在将父容器中的bean注入到子容器中,子容器即可使用bean的属性值
- @Autowired
- private PropertiesService propertiesService ;
- <span style="color:#565f69;"><span style="white-space:pre"> </span>String fileFolder = </span><span style="color:#ff9966;">this.propertiesService.PATH</span><span style="color:#565f69;"> + File.separator + "images" ;</span>
子容器中使用父容器的properties配置文件变量:
设置配置文件 evn.properties
内容:PATH=D:\mysetup\images
URL=image.test.com
spring父容器配置文件加载applications.xml中读取该配置文件,配置如下
- <span> </span>
- <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
-
- <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
-
- <property name="ignoreResourceNotFound" value="true" />
-
- <property name="locations">
- <list>
- <value>classpath:env.properties</value>
- </list>
- </property>
- </bean>
1.1.1. @value注解
1. @value是在所有bean创建成功后再执行
2. @value注解只会在当前容器中查询数据