spring的ApplicationContext 得到方式

ClassPathXmlApplicationContext会自己在CLASSes里面找,不过我只是把配置文件放在src文件下成功找到过,String[] paths = { "/applicationContextDataSource.xml",
          "/applicationContextService.xml" };
        System.out.println(System.getProperty("user.dir"));
       ctx=new ClassPathXmlApplicationContext(paths); 此时配置文件放在SRC目录下,由此得知也可如
FileSystemXmlApplicationContext指定路径得到
另外
FileSystemXmlApplicationContext需要指定地址,默认为项目的根文件夹 例子
ApplicationContext ctx=new FileSystemXmlApplicationContext("src/org/nieweigou/springIoc/bean.xml");      结果成功
ApplicationContext ctx=new FileSystemXmlApplicationContext("/web/WEB-INF/dataAccessContext-local.xml"); 也成功,放在web/web-inf/目录下
  


XmlWebApplicationContext为WEB得到上下文方式,请见另一篇BLOG有详细介绍

SPRING 的得到BEAN 简单的可以用BeanFactory得到 ,ApplicationContext本来就是继承BeanFactory,提供了更多的功能而已。

spring为ApplicationContext提供的3种实现分别为:ClassPathXmlApplicationContext,FileSystemXmlApplicationContext和XmlWebApplicationContext,其中XmlWebApplicationContext是专为Web工程定制的。使用举例如下:
   1. FileSystemXmlApplicationContext
              eg1. ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml"); //加载单个配置文件
              eg2.
                      String[] locations = {"bean1.xml", "bean2.xml", "bean3.xml"};
                      ApplicationContext ctx = new FileSystemXmlApplicationContext(locations ); //加载单个配置文件
              eg3.     

           ApplicationContext ctx =new FileSystemXmlApplicationContext("D:/project/bean.xml");//根据具体路径加载文件
  2. ClassPathXmlApplicationContext
              eg1.  ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");
              eg2.
                      String[] locations = {"bean1.xml", "bean2.xml", "bean3.xml"};
                      ApplicationContext ctx = new ClassPathXmlApplication(locations);
              注:其中FileSystemXmlApplicationContext和ClassPathXmlApplicationContext与BeanFactory的xml文件定位方式一样是基于路径的。
3. XmlWebApplicationContext
          eg1. ServletContext servletContext = request.getSession().getServletContext();    
               ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);

 

 

//web下得到路径一般如下:
 上文中说过,当前用户目录,即相对于System.getProperty("user.dir")返回的路径。

  对于JavaEE服务器,这可能是服务器的某个路径,这个并没有统一的规范!

  而不是我们发布的Web应用程序的根目录!

  这样,在Web应用程序中,我们绝对不能使用相对于当前用户目录的相对路径。

  在Web应用程序中,我们一般通过ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径。

  这样,我们只需要提供相对于Web应用程序根目录的路径,就可以构建出定位资源的绝对路径。

  这是我们开发Web应用程序时一般所采取的策略。

 

 

 

 

 

 

/**
*       2007-6-25
*
*/
package org.chuangqiao.inWeb.service;

import javax.servlet.ServletContext;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
*       ����:��工厂类,用以得到一些service,也可以用继承ACTIONX,不过此类就脱离了继承 方便其他地方用到
* nieweiguo
*/
public class ServiceFactory {
//protected static ApplicationContext ctx=new FileSystemXmlApplicationContext("applicationContext.xml");
       protected static ApplicationContext ctx=null;
          static
          {
              //在Application环境下使用
              /*String[] paths = { "/applicationContextDataSource.xml",
                      "/applicationContextService.xml" };
              ctx = new ClassPathXmlApplicationContext(paths);
              */
              //在web环境下使用
//              ctx = BaseAction.getWebApplicationContext();
         
          }
       public static Object getService(String serviceName)
          {
        /*ServletContext servletContext=this.getServlet().getServletContext();
         HttpSession session = org.openamf.RequestContext.getHttpSession(true);
         ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(session.getServletContext());
        ctx=new FileSystemXmlApplicationContext("/applicationContext.xml"); */
       //System.out.println(ServletContext.getRealPath("/"));
        String[] paths = { "/applicationContextDataSource.xml",
          "/applicationContextService.xml" };
        System.out.println(System.getProperty("user.dir"));
       ctx=new ClassPathXmlApplicationContext(paths);
        return ctx.getBean(serviceName);
          }
       public static Object getService(Class serviceInrterface)
          {
              return getService(serviceInrterface.getName());
          }


}

//在action中得到spring bean

 

public class IndexAction extends Action{

 

   private PrdocuMgr prdocuMgr;

 

public void setServlet(ActionServlet actionServle){

   super.setServlet(actionServle);

ServletContext servletContext=actionServle.getServletContext();

WebApplicationContext wac=WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);

prdocuMgr=(PrdocuMgr )wac.getBean("prdocuMgr");

 

}

 

 

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前段时间,分开学习了这三个框架,都是看某黄埔军校的视频,整合的部分没看视频,想自己做。 但是有一些部分自己没有能完成,主要是如何从spring容器里取出ApplicationContext,这个我的实现比较low,看了看讲义,才OK的。 我的实现: [java] view plain copy WebApplicationContext acc = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext()); ls = (LoginService) acc.getBean("MyService"); 而讲义上的实现: [java] view plain copy @Autowired @Qualifier("MyService") private LoginService ls; public void setLs(LoginService ls) { this.ls = ls; } 这里的区别呢,是我的实现在spring中还要注册MyService,虽然下面的写法我貌似。。。没学过?好吧应该就是注解实现。 这里放上我的Step,给自己看看,就当复习了。 [plain] view plain copy 2018年5月9日13:08:51 今天写SSM整合 1.建立项目,添加spring5\springMVC5\Mybatis3的maven 2.写springspringmvc、mybatis的配置文件 2.1 spring配置文件,约束,哪里来? 源码中可以找sxd约束文件,这个的话我在 E:\2017下学期\spring-framework-5.0.5.RELEASE-dist\spring-framework-5.0.5.RELEASE\docs\spring-framework-reference 找到了,一个bean,一个context 2.2 spring配置文件,导入beans和database 2.3 spring-bean 我先创建一个实体类Person,再注册(注册了没用) 2.4 spring-db 我这里创建数据源,但是alt+/出不来提示,我一想,mysql的包没载入,在maven中加入 还是没得,恩,我加了jdbc的包,还是没有,我以为是没有源码,下载了,还是没有提示,棒 没有提示,我追了下源码,找set方法,我知道有4个,所以找得到,除此之外,还有一些其他属性可以设置 编写jdbc_mysql.properties文件,并导入 2.5 spring-bean 注册dao,这个是spring集成mybatis,注册sqlSession 这里就要导入mybatis和spring的整合包了,这里sqlsession中也要导入mybatis的配置文件 2.6 spring-bean 配置mapper自动扫描 MapperScannerConfigurer将扫描basePackage所指定的包下的所有接口类(包括子类), 如果它们在SQL映射文件中定义过,则将它们动态定义为一个Spring Bean, 这样,我们在Service中就可以直接注入映射接口的bean 意思就是可以直接ref="dao类名",给你自动注册好了 2.7 写mybatis的配置文件,一个别名,一个映射 约束去×××?dtd文件 2.8 写spring mvc配置文件,其实就是扫描controller 2.8 到这里,配置文件就写完了,这里注意的是,java代码没开始写,只是定义了几个包,dao\service\beans

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值