技术中心

这里象征着我们的态度和能力

>spring中读取xml配置文件、获取bean
发布者:中国IT实验室    信息来源:中国IT实验室    发布时间:2012-01-09      浏览次数:5328
分享到:

新浪微博

腾讯微博

QQ空间

豆瓣网

QQ好友

欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

  读取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)目录下

  */

  具体见http://blog.csdn.net/lwzcjd/archive/2008/10/21/3116298.aspx

  1.利用ClassPathXmlApplicationContext

  可以从classpath中读取XML文件

  (1) ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

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

  (2) 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");

  2. 利用ClassPathResource

  可以从classpath中读取XML文件

  Resource cr = new ClassPathResource("applicationContext.xml");

  BeanFactory bf=new XmlBeanFactory(cr);

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

  加载一个xml文件 org.springframework.beans.factory.config.PropertyPlaceholderConfigurer不起作用

  3.利用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 ");

[1] [2] 下一页

4000-880-989
(24小时热线)
联系客服
微信公众号

官方公众号

小程序

©2008-2022 CORPORATION ALL Rights Reserved. 昆明奥远科技有限公司版权所有 滇ICP备09003328号-1 滇公网安备 53011102000818号
昆明那家网络公司好,新媒体运营,网站优化,网络推广,网站建设,网页设计,网站设计,网站推广,云南网站公司,昆明新媒体公司,云南网红主播,昆明SEO公司,昆明网站建设,昆明网络推广,昆明网站优化,昆明网站推广,红河网站建设,大理网络公司,曲靖网络公司,丽江网站设计,昭通网络公司,保山大数据服务,智慧高速建设,智慧校园服务,云南IDC服务商,网络安全测评,等保测评,网站关键词排名优化服务,服务客户尽超2000余家,一切尽在奥远科技,服务电话:13888956730