知识大全 spring中读取xml配置文件、获取bean

Posted 文件

篇首语:有的时候难过的不是结局不够好,而是真诚没有被善待。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 spring中读取xml配置文件、获取bean相关的知识,希望对你有一定的参考价值。

  读取xml文件

  /**

  * 利用XmlBeanFactory(Resource resource)

  * 这里Resource必须是xml格式

  * Resource包括 AbstractResource ClassPathResource FileSystemResource

  * InputStreamResource ServletContextResource UrlResource

  */

  /*

  * 利用 InputStreamResource(InputStream inputStream)

  * 要将applicationContext xml放在项目根目录下

  */

  InputStream is = null;

  try

  is = new FileInputStream( applicationContext xml );

   catch (FileNotFoundException e)

  e printStackTrace();

  

  Resource resource = new InputStreamResource(is);

  BeanFactory factory = new XmlBeanFactory(resource);

  UserDao userDao = (UserDao)factory getBean( userDao );

  /*

  * 利用 Properties

  * 要将bean properties放在类路径--源文件夹(src)目录下

  */

  具体见

   利用ClassPathXmlApplicationContext

  可以从classpath中读取XML文件

  ( ) ApplicationContext context = new ClassPathXmlApplicationContext( applicationContext xml );

  UserDao userDao = (UserDao)context getBean( userDao );

  ( ) ClassPathXmlApplicationContext resource = new ClassPathXmlApplicationContext(new  String[] applicationContext ibatis oracle xml applicationContext xml applicationContext data oracle xml );

  BeanFactory factory = resource;

  UserDao userDao = (UserDao) factory getBean( userDao );

   利用ClassPathResource

  可以从classpath中读取XML文件

  Resource cr = new ClassPathResource( applicationContext xml );

  BeanFactory bf=new XmlBeanFactory(cr);

  UserDao userDao = (UserDao)bf getBean( userDao );

  加载一个xml文件 springframewonfig PropertyPlaceholderConfigurer不起作用

   .利用XmlWebApplicationContext读取

  从Web应用程序的文件架构中 指定相对位置来读取定义文件

  XmlWebApplicationContext 的建构子无法带参数 参考API文件会发现 预设的location会指向/WEB INF/applicationContext xml档案 使用其 public static属性DEFAULT_CONFIG_LOCATION可取得此预设档名 由于我使用MyEclipse 预设会多一个 /WebRoot 的 目录在WEB INF之前 因此若在web project里有一些与web无关的程式要使用context时(例如处理一些MVC架构中的 M 的部份) 就无法使用 XmlWebApplicationContext来读取bean定义档 因为default location会差一个 WebRoot 的目录

  即 使在web xml里面 在DispatcherServlet定义中重新定义contextConfigLocation也一样(此定义可以 override掉XmlWebApplicationContext中的DEFAULT_CONFIG_LOCATION值) 因为与web无关的程式 并不会经过web xml的定义档设定 目前我还没试成功过XmlWebApplicationContext取得bean定义档 使用 ClassPathXmlApplicationContext反而会快一些

  XmlWebApplicationContext ctx = new XmlWebApplicationContext();

  ctx setConfigLocations(new String[] /WEB INF/ applicationContext xml );

  ctx setServletContext(pageContext getServletContext());

  ctx refresh();

  UserDao  userDao = (UserDao ) ctx getBean( userDao );

   利用FileSystemResource读取

  Resource rs = new FileSystemResource( D:/tomcat/webapps/test/WEB INF/classes/ applicationContext xml );

  BeanFactory factory = new XmlBeanFactory(rs);

  UserDao  userDao  = (UserDao )factory getBean( userDao );

  值得注意的是 利用FileSystemResource 则配置文件必须放在project直接目录下 或者写明绝对路径 否则就会抛出找不到文件的异常

   .利用FileSystemXmlApplicationContext读取

  可以指定XML定义文件的相对路径或者绝对路径来读取定义文件

  方法一

  String[]   path= WebRoot/WEB INF/applicationContext xml WebRoot/WEB INF/applicationContext_task xml ;

  ApplicationContext context = new FileSystemXmlApplicationContext(path);

  方法二

  String path= WebRoot/WEB INF/applicationContext* xml ;

  ApplicationContext context = new FileSystemXmlApplicationContext(path);

  方法三

  ApplicationContext ctx =

  new FileSystemXmlApplicationContext( classpath:地址 );

  没有classpath的话就是从当前的工作目录

  *******************************************************************************

  **         分割一下                                                                                                            **

  *******************************************************************************

  获取Spring框架管理的类实例的方法有多种 如下

  方法一 在初始化时保存ApplicationContext对象

  代码

  ApplicationContext ac = new FileSystemXmlApplicationContext( applicationContext xml );

  ac getBean( beanId );

  说明

  这种方式适用于采用Spring框架的独立应用程序 需要程序通过配置文件手工初始化Spring的情况

  方法二 通过Spring提供的工具类获取ApplicationContext对象

  代码

  import sprntext support WebApplicationContextUtils;

  ApplicationContext ac =

  WebApplicationContextUtils getRequiredWebApplicationContext(ServletContext sc)

  ApplicationContext ac = WebApplicationContextUtils getWebApplicationContext(ServletContext

  sc)

  ac getBean( beanId );

  ac getBean( beanId );

  说明

  这种方式适合于采用Spring框架的B/S系统 通过ServletContext对象获取ApplicationContext对象 然后

  在通过它获取需要的类实例

  上面两个工具方式的区别是 前者在获取失败时抛出异常 后者返回null

  方法三 继承自抽象类ApplicationObjectSupport

  说明

  抽象类ApplicationObjectSupport提供getApplicationContext()方法 可以方便的获取到 ApplicationCont

  ext Spring初始化时 会通过该抽象类的setApplicationContext(ApplicationContext

  context)方法将ApplicationContext 对象注入

  方法四 继承自抽象类WebApplicationObjectSupport

  说明

  类似上面方法 调用getWebApplicationContext()获取WebApplicationContext

  方法五 实现接口ApplicationContextAware

  说明

  实现该接口的setApplicationContext(ApplicationContext context)方法 并保存ApplicationContext 对

  象 Spring初始化时 会通过该方法将ApplicationContext 对象注入

  以上方法适合不同的情况 请根据具体情况选用相应的方法

  这里值得提一点的是 系统中用到上述方法的类实际上就于Spring框架紧密耦合在一起了 因为这些类是知

  道它们是运行在Spring框架上的 因此 系统中 应该尽量的减少这类应用 使系统尽可能的独立于当前运

  行环境 尽量通过DI的方式获取需要的服务提供者

cha138/Article/program/Java/ky/201311/28302

相关参考

知识大全 Java中如何获取Spring中配置的bean

Java中如何获取Spring中配置的bean  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一

知识大全 解析Java中如何获取Spring中配置的bean

解析Java中如何获取Spring中配置的bean  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本

知识大全 Spring中加载XML配置文件的方式

Spring中加载XML配置文件的方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  sprin

知识大全 使用SpringtUtil获取Spring IoC容器中的Bean

使用SpringtUtil获取SpringIoC容器中的Bean  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 Spring获取Bean的几种方式

Spring获取Bean的几种方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  方法一在初始化

知识大全 hibernate.cfg.xml配置文件的说明

     在Eclipse中利用HibernateSynchronizer插件进行数据库表的映射数据查询和获取数据可以节省大量时间加速Hibernat

知识大全 JAVA读取xml文件中节点值

JAVA读取xml文件中节点值  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  importwcd

知识大全 Spring中XML配置的12个技巧[2]

Spring中XML配置的12个技巧[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  尽量使

知识大全 Spring中XML配置的12个技巧[1]

Spring中XML配置的12个技巧[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Spr

知识大全 Spring中加载XML文件的方式

Spring中加载XML文件的方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  spring中