头条 科技 产经 家电 智能 手机 芯片 数码 电商 WAP版
-移动互联网与智能搜索领域是未来IT产业发展的趋势!
中国IT产经新闻//正文
无需手动创建的类Filesystemxmlapplicationcontext
来源:
2023-08-17
编辑:晓露

      Spring有两个核心接口:BeanFactory 和 ApplicationContext,其中ApplicationContext是BeanFactory 的子接口。它们代表Spring容器,Spring容器是生成Bean实例的工厂,并管理容器中的Bean,Bean是Spring管理的基本单位,在基于spring的javaEE应用中,所有的组件都被当成bean来处理。很多时候,ApplicationContext 都是以声明式方式操作容器,无须手动创建。例如:可利用像ContextLoader 的支持类,在 Web 应用启动时自动创建 ApplicationContext。当然,也可以采用编程方式创建 ApplicationContext。


      Spring中ApplicationContext的三种不同实现:
      1)FileSystemXmlApplicationContext:这种方式是通过程序在初始化的时候,导入Bean配置文件,然后得到Bean实例。ApplicationContext ctx = newFileSystemXmlApplicationContext("spring-config.xml"); //当前路径加载单个配置文件String[] locations = {"bean1.xml", "bean2.xml", "bean3.xml"};ApplicationContext ctx = new FileSystemXmlApplicationContext(locations ); //同时加载多个配置文件ApplicationContext ctx = new FileSystemXmlApplicationContext("D:/project/bean.xml");//根据具体路径加载文件。对于FileSystemXmlApplicationContext:


      默认表示的是两种:
      1.没有盘符的是项目工作路径,即项目的根目录;
      2.有盘符表示的是文件绝对路径.
      注意:如果要使用classpath路径,需要前缀classpath:
      2)ClassPathXmlApplicationContext,ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");//加载单个配置文件,String[] locations = {"bean1.xml", "bean2.xml", "bean3.xml"};ApplicationContext ctx = newClassPathXmlApplication(locations);//同时加载多个配置文件。或者用通配符同时加载多个配置文件:ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:/*.xml");
      注:其中FileSystemXmlApplicationContext和ClassPathXmlApplicationContext与BeanFactory的xml文件定位方式一样是基于路径的。ClassPathXmlApplicationContext和FileSystemXmlApplicationContext的区别如下:
      1、classpath:前缀是不需要的,默认就是指项目的classpath路径下面;
      2、如果要使用绝对路径,需要加上file:前缀表示这是绝对路径;
      3、XmlWebApplicationContext:在B/S系统中,通常在web.xml初始化bean的配置文件,然后由WebAppliCationContextUtil得到ApplicationContext,ServletContext servletContext =request.getSession().getServletContext();ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);

厂商动态
热门综合更多
CopyRight @ 2008-2024 IT产经新闻网 All Right Reserved 违者必究 湘ICP备2022017330号-2
Baidu
map