Spring提供了一个PropertyEditor “ResourceEditor”用于在注入的字符串和Resource之间切换。因此可以使用注入方式注入Resource.
ResourceEditor完全使用ApplicationContext根据注入的路径字符串来注入Resource.
Bean:
package com.feng.spring.chapter2.helloworld;
import org.springframework.core.io.Resource;
public class ResourceBean3 {
private Resource resource;
public Resource getResource(){
return resource;
}
public void setResource(Resource resource) {
this.resource = resource;
}
}
配置文件helloworld.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- id 表示你这个组件的名字,class表示组件类 -->
<bean id="resourceBean1" class="com.feng.spring.chapter2.helloworld.ResourceBean3">
<property name="resource" value="com/feng/spring/chapter2/helloworld/test1.properties"></property>
</bean>
</beans>
测试代码:
package com.feng.spring.chapter2.helloworld;
import junit.framework.Assert;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
public class HelloTest {
@Test
public void test(){
ApplicationContext ctx = new ClassPathXmlApplicationContext("chapter2/helloworld.xml");
ResourceBean3 resourceBean1 = ctx.getBean("resourceBean1",ResourceBean3.class);
Assert.assertTrue(resourceBean1.getResource() instanceof ClassPathResource);
}
}