- 浏览: 2261880 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (423)
- FileNet相关 (3)
- 应用服务器相关 (22)
- Java综合 (77)
- 持久层 (24)
- struts (11)
- webservice (8)
- 虚拟机 (2)
- 光盘刻录 (0)
- AD及AD集群 (1)
- JS (33)
- F5 (0)
- loadrunner8.1 (0)
- Java 反编译工具 (2)
- DataBase (62)
- ant (1)
- 操作系统 (29)
- 我的任务 (3)
- 平台架构 (16)
- 业务规则引擎 (2)
- 模板 (1)
- EJB (5)
- spring (24)
- CMMI (1)
- 项目管理 (20)
- LDAP (13)
- JMS (10)
- JSP (19)
- JBPM (2)
- web MVC框架设计思想 (2)
- 第三方支付平台 (2)
- BUG管理工具 (1)
- 垃圾站 (2)
- php (1)
- swing (1)
- 书籍 (1)
- QQ qq (2)
- 移动互联网 (26)
- 爱听的歌曲 (0)
- hadoop (4)
- 数据库 (9)
- 设计模式 (1)
- 面试经验只谈 (1)
- 大数据 (9)
- sp (1)
- 缓存数据库 (8)
- storm (2)
- taobao (2)
- 分布式,高并发,大型互联网,负载均衡 (6)
- Apache Ignite (0)
- Docker & K8S (0)
最新评论
-
wangyudong:
新版本 Wisdom RESTClienthttps://gi ...
spring rest mvc使用RestTemplate调用 -
wangyudong:
很多API doc生成工具生成API文档需要引入第三方依赖,重 ...
spring rest mvc使用RestTemplate调用 -
zhaoshijie:
cfying 写道大侠,还是加载了两次,怎么解决啊?求。QQ: ...
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
xinglianxlxl:
对我有用,非常感谢
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
k_caesar:
多谢,学习了
利用maven的resources、filter和profile实现不同环境使用不同配置文件
关键字: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了! 很好..
实现步骤:
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了! 很好..
发表评论
-
各大巨头电商提供的IP库API接口-新浪、搜狐、阿里...
2015-04-22 13:18 15910关键字:各大巨头电商提供的IP库API接口-新浪、搜狐、阿里. ... -
用Java来获取访问者真实的IP地址-超准确
2015-04-22 12:55 6258关键字:用Java来获取访问者真实的IP地址-超准确 下面分享 ... -
Shiro集成OAuth2
2015-04-21 10:31 12445关键字:Shiro集成OAuth2 参考:http://jin ... -
淘宝网架构分享总结 - 架构,分布式,淘宝,虚拟化,水平伸缩
2015-04-19 00:25 7635推荐综合架构交流群:JAVA开发高级群 点击入群!!! 关键 ... -
Zookeeper 和 SASL
2015-04-16 09:29 13636关键字:Zookeeper 和 SASL 介绍 这是一个描述Z ... -
非对称加密(RSA)加密解密实现通信JAVA端工具类(教程)
2015-04-15 17:27 1184关键字:非对称加密(RSA)加密解密实现通信JAVA端工具类( ... -
对称加密(AES)加密实现工具类(教程)
2015-04-15 17:11 2146关键字:对称加密(AES)加密实现工具类(教程) Java加 ... -
Curator-Framework开源Zookeeper快速开发框架介绍
2015-04-14 18:41 703关键字:Curator-Framework开源Zookeepe ... -
IM消息推送之Openfire
2015-04-13 13:40 2213关键字:IM消息推送之Openfire Openfire 采用 ... -
Nio框架之Mina的demo
2015-04-12 13:38 644关键字:Nio框架之Mina的demo 官网:http://m ... -
AMQP中文版协议规范
2015-01-23 17:12 2989关键字:AMQP中文版协议规范 AMQP中文版协议规范:ht ... -
数据库连接池选型
2014-12-04 18:32 1171关键字:数据库连接池选型 proxool(与spring不太 ... -
spring中的数据源配置信息加密方案
2014-10-22 10:36 1076关键字:spring中的数据源配置信息加密方案 附件是完整的 ... -
OAuth2.0的Java实现 Apache Amber
2014-10-09 23:20 795关键字:OAuth2.0的Java实现 Apache Ambe ... -
企业信息管理系统基础框架jeesite
2014-05-06 22:21 2586jeesite项目地址(使用说明,):http://jeesi ... -
java中文分词组件-word分词
2014-05-06 21:33 21987关键字:java中文分词组 ... -
java制作可执行文件EXE文件
2014-05-05 18:58 1603关键字:java制作可执行文件EXE文件 参考:http: ... -
Quartz任务调度器详解
2014-04-25 22:46 19001关键字: 参考文章:ht ... -
各种hash算法-hashcodeUtil
2014-04-24 15:36 4245关键字:各种hash算法-hashcodeUtil -
性能监控工具类(StopWatchUtil)
2014-03-21 15:12 5747关键字:性能监控工具类(StopWatchUtil) 附 ...
相关推荐
总的来说,Spring提供了多种方式来读取和管理配置文件,无论是类路径还是文件系统,甚至是跨环境的配置管理,都提供了灵活的解决方案。通过`ClassPathXmlApplicationContext`和`FileSystemXmlApplicationContext`,...
在`AppProperties`类中,我们可以定义属性的字段,并通过`@ConfigurationProperties`注解指定前缀,Spring Boot会自动从配置文件中匹配并注入值。 为了使Spring Boot能够找到JAR内的配置文件,可以在`src/main/...
本文将深入探讨如何在Java环境中,利用TE网络技术实现Spring配置文件的加密。 首先,我们需要理解Spring配置文件的基本结构。Spring的配置文件通常为XML格式,如`applicationContext.xml`,它包含了bean的定义、...
例如,`java.io.FileInputStream`可以用来打开文件,然后`java.util.Properties`类可以加载并解析配置文件。以下是一个简单的示例: ```java Properties props = new Properties(); FileInputStream fis = new ...
总之,Spring Boot的多模块配置文件读取策略旨在提高项目的可扩展性和可维护性。通过合理的配置文件组织和使用`@ConfigurationProperties`,我们可以有效地管理各模块的配置,同时保持代码的清晰和整洁。理解并熟练...
本文将深入探讨Spring如何通过读取配置文件实现依赖注入,并讲解相关源码,帮助理解其工作原理。 在Spring中,配置文件通常为XML格式,如`applicationContext.xml`,它定义了bean的实例化、属性设置、装配关系等。...
接下来,一旦检测到Spring配置文件发生变化,我们需要重新加载配置文件。这可以通过Spring的`ApplicationContext`的`refresh()`方法来实现。`refresh()`会重新初始化Bean工厂,读取新的配置信息,并更新所有Bean的...
`Properties`类用于处理键值对,它是Java中读取配置文件的标准方式。 要获取配置文件中的数据,我们可以调用`Singleton.INSTANCE.getProperties()`。例如,如果配置文件中有`database.url`属性,我们可以通过以下...
然而,在某些情况下,我们可能需要在非Spring注解的类中访问Spring容器中的Bean,或者在这些类中使用YAML配置文件中的配置信息。本篇将详细介绍如何在这样的场景下实现这一目标。 首先,让我们来理解如何在非Spring...
工具方面,IDEA提供了强大的Spring配置文件支持,可以自动完成、错误检查和代码导航。此外,`spring-context-indexer`库可以帮助提升IDE的代码感知能力,使其能更好地理解非XML配置。 在开发过程中,我们经常使用`...
在实际开发中,为了提高代码的可复用性和灵活性,我们还可以考虑将这两个工具类整合为一个,提供通用的配置文件读取接口,通过文件扩展名或配置文件内容自动识别是`.properties`还是`.yml`格式,并进行相应的读取...
通过这些配置文件的组合,我们可以构建出一个完整的Spring驱动的JavaWeb应用,涵盖了从数据访问到业务逻辑,再到用户界面的完整流程。Spring的这些配置文件使得我们可以模块化、解耦合地管理应用组件,提高了代码的...
在Spring 3.0框架中,配置文件是管理和组织应用程序行为的关键部分。Properties文件则常用于存储应用程序的配置参数,如数据库连接字符串、系统环境变量等。本篇将详细讲解如何在Spring 3.0的配置文件中加载...
**步骤3:创建Spring配置文件** 1. 在项目的src目录下,新建一个名为`applicationContext.xml`的XML文件,这是Spring的主要配置文件。 **步骤4:配置Bean** 在`applicationContext.xml`中,定义Bean的基本结构。...
自己开发一个工具类,为第三方应用提供调用接口,但是打包后测试过程中,发现了一个问题就是在用@Value获取配置文件内容的时候,无法获取我们的配置信息,也无法加载我们配置的默认值!具体配置如下: @Value("${...
加载jar包中的Spring配置文件需要对Spring的类路径加载机制有深入理解。通过`ClassPathResource`,我们可以定位并加载jar包内的配置,然后应用到`ApplicationContext`。在SSM整合的项目中,正确地加载这些配置文件...
纯java底层读取配置文件,生成map,可以根据key模糊匹配查询,封装好了方法。比如getVal("spring.dubbo*url")