几种加载Spring的配置文件的方式

来源:互联网 发布:查看ubuntu所有jdk 编辑:程序博客网 时间:2024/05/17 03:41

package com.liu.test;

public class BeanFile {
 private String beanFile = "多种方式加载Bean的配置文件";

 public void setBeanFile(String beanFile) {
 this.beanFile = beanFile;
 }

 public String getBeanFile() {
 return beanFile;
 }

}

package com.liu.test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.support.PropertiesBeanDefinitionReader;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.InputStreamResource;
import org.springframework.core.io.Resource;

public class MainBeanFile {
 public static void main(String[] args) {

 // 直接调用HelloBean
 BeanFile bf = new BeanFile();
 System.out.println(bf.getBeanFile());

 /**
 * 利用XmlBeanFactory(Resource resource) 这里Resource必须是xml格式
 * Resource包括:AbstractResource, ClassPathResource, FileSystemResource,
 * InputStreamResource, ServletContextResource, UrlResource
 */

 /*
 * 利用 InputStreamResource(InputStream inputStream) 要将bean.xml放在项目根目录下,目录一定要写完整
 */
 InputStream is = null;
 try {
 is = new FileInputStream("c:/workspace/spring/WebRoot/WEB-INF/InputStreamResource.xml");
 } catch (FileNotFoundException e) {
 e.printStackTrace();
 }
 Resource resource = new InputStreamResource(is);
 sayHello(resource);

 /*
 * 利用 ClassPathResource(String path) 要将bean.xml放在源文件夹(src)目录下
 */
 resource = new ClassPathResource("ClassPathResource.xml");
 sayHello(resource);

 /*
 * 利用 FileSystemResource(String path) 要将bean.xml放在项目根目录下,目录一定要写完整
 * c:/workspace/spring/src/com/liu/test/FileSystemResource.xml
 */
 resource = new FileSystemResource("c:/workspace/spring/src/com/liu/test/FileSystemResource.xml");
 sayHello(resource);

 /*
 * 利用 Properties 要将bean.properties放在类路径--源文件夹(src)目录下
 */
 BeanDefinitionRegistry reg = new DefaultListableBeanFactory();
 PropertiesBeanDefinitionReader reader = new PropertiesBeanDefinitionReader(reg);
 reader.loadBeanDefinitions(new ClassPathResource("bean.properties"));
 BeanFactory factory = (BeanFactory) reg;
 bf = (BeanFile) factory.getBean("beanFile");
 System.out.println("利用" + bf.getBeanFile() + " 加载 Bean.properties");

 /*
 * 利用 ApplicationContext 要将bean.xml放在类路径--源文件夹(src)目录下
 */
 ApplicationContext appContext = new ClassPathXmlApplicationContext(
 "/ApplicationContext.xml");
 bf = (BeanFile) appContext.getBean("beanFile");
 System.out.println("利用" + bf.getBeanFile() + " 加载 Bean.xml");

 }

 public static void sayHello(Resource resource) {
 BeanFactory factory = new XmlBeanFactory(resource);
 BeanFile bf = (BeanFile) factory.getBean("beanFile");
 System.out.println("利用 " + bf.getBeanFile() + " 加载 Bean.xml");
 }


}
 

InputStreamResource.xml
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"
http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
    <bean id="beanFile" class="com.liu.test.BeanFile">
        <property name="beanFile">
            <value>InputStreamResource(InputStream inputStream)</value>
        </property>
    </bean>
</beans>

ClassPathResource.xml
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"
http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
 <bean id="beanFile" class="com.liu.test.BeanFile">
  <property name="beanFile">
   <value>ClassPathResource(String path)</value>
  </property>
 </bean>
</beans>


FileSystemResource.xml

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"
http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
 <bean id="beanFile" class="com.liu.test.BeanFile">
  <property name="beanFile">
   <value>FileSystemResource(String path)</value>
  </property>
 </bean>
</beans>

ApplicationContext.xml
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"
http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
 <bean id="beanFile" class="com.liu.test.BeanFile">
  <property name="beanFile">
   <value>ApplicationContext</value>
  </property>
 </bean>
</beans>

bean.properties(Spring也可以使用属性文件来定义配置文件,bean.properties放在源文件夹(src)目录下)
beanFile.class=com.liu.test.BeanFile
beanFile.beanFile=properties

输出结果:(也跟log4j的配置文件有关)
多种方式加载Bean的配置文件
利用 InputStreamResource(InputStream inputStream) 加载 Bean.xml
利用 ClassPathResource(String path) 加载 Bean.xml
利用 FileSystemResource(String path) 加载 Bean.xml
 利用properties 加载 Bean.properties
利用ApplicationContext 加载 Bean.xml

 
原创粉丝点击