`
zhaoshijie
  • 浏览: 2261853 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring通过配置文件读取java类

阅读更多
关键字:spring通过配置文件读取java类

实现步骤:

1、新建Xml文件,"applicationContext.xml",注意名称, 不能写错.需要是这样的喔  

2、配置文件内容如下:  注意:节点名称(bean/beans)和属性名称(id/class)不能自定义

<?xml version="1.0" encoding="UTF-8"?>

<beans>
    <bean id="testDao" class="com.dao.TestDaoImpl"></bean>

    <bean id="testManager" class="com.manager.TestManagerImpl"></bean>

</beans>


3、利用dom4j读取配置文件信息(如何使用dom4j在<<通过XML文件获取数据库配置信息>>有讲到):

package com.util;


import java.util.HashMap;
import java.util.Map;


import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;


public class BeanFactory {


    private static  Map  beans=new HashMap();
    private static BeanFactory factory=new BeanFactory();
    Document doc=null;  
    private BeanFactory(){
       try {

           //加载配置文件信息
           doc=new SAXReader().read(Thread.currentThread().getContextClassLoader().getResourceAsStream("applicationContext.xml"));
       } catch (DocumentException e) {       
           e.printStackTrace();
       }
    }
    public static BeanFactory getInstance(){
       return factory;
    }

    public Object getBean(String id){
       if(beans.containsKey(id)){
           return beans.get(id);
       }

       //注意:这里和读取普通配置文件略有不同

       Element el= (Element) doc.selectObject("//bean[@id=\""+id+"\"]");
       Object obj=null;
       try {

           //创建类对象

           obj=Class.forName(el.attributeValue("class")).newInstance();

           //加入到Map集合中

           beans.put(id, obj);
       } catch (Exception e) {        
           e.printStackTrace();
       }
       return obj;
    }  

}


4、关键部分,创建类InitConfig.java,继承HttpServlet接口,把读取到的类对象加载到application范围内

package com.util;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;


public class InitConfig extends HttpServlet {
   

    //初始化时,就把类的对象加载到方法

    public void init() throws ServletException {
       //
       System.out.println("=======init=========");
       BeanFactory factory=BeanFactory.getInstance();
       //读取到的类对象加载到application范围内
       this.getServletContext().setAttribute("factory", factory);
    }
}

注意:这个Servlet,配置文件中需要加<load-on-startup>节点,<load-on-startup>的用法在<<关于web.xml中的load-on-startup>>中有讲到。






5、使用方法: 在创建Servlet时,需要继承InitConfig,

package com.servlet;


import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.manager.BookManager;
import com.util.BeanFactory;
import com.util.InitConfig;


public class BookServlet extends InitConfig {


   
    public void doGet(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {

       doPost(request,response);
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {


       //获得配置文件中的类
       TestManager testManager=(TestManager)((BeanFactory)this.getServletContext().getAttribute("factory")).getBean("testManager");//通过配置文件中的id,创建相应类的对象      


       request.getRequestDispatcher("/index.jsp").forward(request, response);
    }
}


通过这个对Spring创建对象方式的模拟, 可以更好的理解Spring, 非常方便扩展,再也不用在程序中看到大量的new了! 很好..




分享到:
评论

相关推荐

    spring读取配置文件

    总的来说,Spring提供了多种方式来读取和管理配置文件,无论是类路径还是文件系统,甚至是跨环境的配置管理,都提供了灵活的解决方案。通过`ClassPathXmlApplicationContext`和`FileSystemXmlApplicationContext`,...

    spring读取jar中的配置文件

    在`AppProperties`类中,我们可以定义属性的字段,并通过`@ConfigurationProperties`注解指定前缀,Spring Boot会自动从配置文件中匹配并注入值。 为了使Spring Boot能够找到JAR内的配置文件,可以在`src/main/...

    spring配置文件加密实现

    本文将深入探讨如何在Java环境中,利用TE网络技术实现Spring配置文件的加密。 首先,我们需要理解Spring配置文件的基本结构。Spring的配置文件通常为XML格式,如`applicationContext.xml`,它包含了bean的定义、...

    java读取配置文件

    例如,`java.io.FileInputStream`可以用来打开文件,然后`java.util.Properties`类可以加载并解析配置文件。以下是一个简单的示例: ```java Properties props = new Properties(); FileInputStream fis = new ...

    Spring Boot多模块配置文件读取

    总之,Spring Boot的多模块配置文件读取策略旨在提高项目的可扩展性和可维护性。通过合理的配置文件组织和使用`@ConfigurationProperties`,我们可以有效地管理各模块的配置,同时保持代码的清晰和整洁。理解并熟练...

    Spring读取配置文件原理(Spring如何依赖注入的)

    本文将深入探讨Spring如何通过读取配置文件实现依赖注入,并讲解相关源码,帮助理解其工作原理。 在Spring中,配置文件通常为XML格式,如`applicationContext.xml`,它定义了bean的实例化、属性设置、装配关系等。...

    Spring动态加载配置文件

    接下来,一旦检测到Spring配置文件发生变化,我们需要重新加载配置文件。这可以通过Spring的`ApplicationContext`的`refresh()`方法来实现。`refresh()`会重新初始化Bean工厂,读取新的配置信息,并更新所有Bean的...

    用enum实现单例模式的方法来读取配置文件

    `Properties`类用于处理键值对,它是Java中读取配置文件的标准方式。 要获取配置文件中的数据,我们可以调用`Singleton.INSTANCE.getProperties()`。例如,如果配置文件中有`database.url`属性,我们可以通过以下...

    在非spring注解类中使用spring容器中的bean_普通类中使用yml配置文件中的配置信息

    然而,在某些情况下,我们可能需要在非Spring注解的类中访问Spring容器中的Bean,或者在这些类中使用YAML配置文件中的配置信息。本篇将详细介绍如何在这样的场景下实现这一目标。 首先,让我们来理解如何在非Spring...

    spring mvc 读取配置文件

    工具方面,IDEA提供了强大的Spring配置文件支持,可以自动完成、错误检查和代码导航。此外,`spring-context-indexer`库可以帮助提升IDE的代码感知能力,使其能更好地理解非XML配置。 在开发过程中,我们经常使用`...

    读取配置文件工具类.rar

    在实际开发中,为了提高代码的可复用性和灵活性,我们还可以考虑将这两个工具类整合为一个,提供通用的配置文件读取接口,通过文件扩展名或配置文件内容自动识别是`.properties`还是`.yml`格式,并进行相应的读取...

    Spring配置文件集合

    通过这些配置文件的组合,我们可以构建出一个完整的Spring驱动的JavaWeb应用,涵盖了从数据访问到业务逻辑,再到用户界面的完整流程。Spring的这些配置文件使得我们可以模块化、解耦合地管理应用组件,提高了代码的...

    Spring3.0 配置文件中加载Properties文件的小例子

    在Spring 3.0框架中,配置文件是管理和组织应用程序行为的关键部分。Properties文件则常用于存储应用程序的配置参数,如数据库连接字符串、系统环境变量等。本篇将详细讲解如何在Spring 3.0的配置文件中加载...

    Eclipse spring基本配置步骤

    **步骤3:创建Spring配置文件** 1. 在项目的src目录下,新建一个名为`applicationContext.xml`的XML文件,这是Spring的主要配置文件。 **步骤4:配置Bean** 在`applicationContext.xml`中,定义Bean的基本结构。...

    java中的@Value获取不到配置文件的值,也加载不到默认值

    自己开发一个工具类,为第三方应用提供调用接口,但是打包后测试过程中,发现了一个问题就是在用@Value获取配置文件内容的时候,无法获取我们的配置信息,也无法加载我们配置的默认值!具体配置如下: @Value("${...

    如何加载jar包中的spring配置文件

    加载jar包中的Spring配置文件需要对Spring的类路径加载机制有深入理解。通过`ClassPathResource`,我们可以定位并加载jar包内的配置,然后应用到`ApplicationContext`。在SSM整合的项目中,正确地加载这些配置文件...

    java 一键读取yaml、propertites配置文件内容,转换为一级map

    纯java底层读取配置文件,生成map,可以根据key模糊匹配查询,封装好了方法。比如getVal("spring.dubbo*url")

Global site tag (gtag.js) - Google Analytics