首页 > 其他分享 >Spring之ApplicationContext

Spring之ApplicationContext

时间:2023-11-19 17:11:32浏览次数:32  
标签:ApplicationContext AccountService Spring context 上下文 class

ApplicationContext

ApplicationContext是Spring的高级容器。

与BeanFactory类似,它可以加载bean定义并根据请求分发bean;此外,它还添加了很多特定的功能,比如:从属性文件解析文本消息、将应用程序事件发布到感兴趣的事件侦听器。

public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory,
        MessageSource, ApplicationEventPublisher, ResourcePatternResolver {
}

Spring提供了适合不同需求的ApplicationContext,每个应用程序上下文可以拥有多个配置文件、配置类或两者的混合,相关类图见下图:

ConfigurableApplicationContext

ConfigurableApplicationContext 扩展自 ApplicationContext,新增了 reflesh() 和 close() 这两个方法,使得其具有启动、刷新和关闭应用上下文的能力:

(1)在应用上下文关闭的情况下调用 refresh() 即可启动应用上下文;在应用上下文启动的情况下调用 reflesh() 即可清除缓存并且重新装载配置信息;

(2)调用 close() 方法则可以关闭应用上下文。 

AbstractApplicationContext 等子类实现了 refresh() 方法

ApplicationContext实现类

FileSystemXmlApplicationContext

通过FileSystemXmlApplicationContext可以从文件系统或url加载基于XML的Spring配置文件。

应用代码如下:

String path = "D:/source/Test/src/main/resources/applicationcontext/bean-config.xml";

ApplicationContext context = new FileSystemXmlApplicationContext(path);
AccountService accountService = context.getBean("accountService", AccountService.class);

ClassPathXmlApplicationContext

通过ClassPathXmlApplicationContext可以从类路径加载基于XML的Spring配置文件。

应用代码如下:

ApplicationContext context = new ClassPathXmlApplicationContext("applicationcontext/bean-config.xml");
AccountService accountService = context.getBean("accountService", AccountService.class);

AnnotationConfigApplicationContext

AnnotationConfigApplicationContext是在Spring 3.0中引入的(与@Configuration、@Component和JSR-330元数据注释等一起工作)。

应用代码如下:

ApplicationContext context = new AnnotationConfigApplicationContext(AccountConfig.class);
AccountService accountService = context.getBean(AccountService.class);

ConfigurableWebApplicationContext

AnnotationConfigWebApplicationContext

AnnotationConfigWebApplicationContext是AnnotationConfigApplicationContext的一个基于web的变体。

从Spring 3.0开始,可以通过编程方式配置ApplicationContext,开发人员需要做的是实现WebApplicationInitializer接口。

public class MyWebApplicationInitializer implements WebApplicationInitializer {

    public void onStartup(ServletContext container) throws ServletException {
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        context.register(AccountConfig.class);
        context.setServletContext(container);

        // servlet configuration
    }
}

XmlWebApplicationContext

如果在web应用程序中使用基于XML的配置可以使用XmlWebApplicationContext;类似AnnotationConfigWebApplicationContext,可以通过实现WebApplicationInitializer接口来配置应用程序。

应用代码如下:

public class MyXmlWebApplicationInitializer implements WebApplicationInitializer {

  public void onStartup(ServletContext container) throws ServletException {
    XmlWebApplicationContext context = new XmlWebApplicationContext();
    context.setConfigLocation("/WEB-INF/spring/applicationContext.xml");
    context.setServletContext(container);

    // Servlet configuration
  }
}

 

标签:ApplicationContext,AccountService,Spring,context,上下文,class
From: https://www.cnblogs.com/xfeiyun/p/17842148.html

相关文章

  • springboot3+vue3大事件的展示
    跟着黑马老师,做了一遍收获很大 ......
  • springboot解决跨域问题
    当看这个的时候应该就是遇到跨域问题了,下面是解决的代码`@ConfigurationpublicclassCorsConfig{//当前跨域请求最大有效时长。这里默认1天privatestaticfinallongMAX_AGE=24*60*60;@BeanpublicCorsFiltercorsFilter(){UrlBasedCorsConfigurationSo......
  • Spring异步机制:@Async
    概述当一个方法标注@Async注解时,该方法的调用将异步发生;这意味着调用者将在调用后立即返回,方法的实际执行将发生在提交给SpringTaskExecutor的任务中。示例示例1使用@EnableAsync注解启用异步机制@EnableAsync@ConfigurationpublicclassAsyncConfig{} @Service......
  • SpringCloud应用集成Nacos服务注册与发现
    SpringCloud应用集成Nacos服务注册与发现官方文档第一步:引入依赖版本见=>附录:根pom文件=>版本控制片段www.cnblogs.com/anhaoyan... <!--引入nacos用于服务注册与发现--><dependency><groupId>com.alibaba.cloud</groupId><artifact......
  • SpringCloud应用集成Nacos和Dubbo
    SpringCloud应用集成Nacos和Dubbo官网教程官方demo第一步:引入依赖版本见=>附录:根pom文件=>版本控制片段www.cnblogs.com/anhaoyan... <!--SpringBoot依赖--><dependency><groupId>org.springframework.boot</groupId><artifa......
  • SpringCloudAlibaba
    SpringCloudAlibaba官网地址什么是SpringCloudAlibabaSpringCloudAlibaba致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过SpringCloud编程模型轻松使用这些组件来开发分布式应用服务。依托SpringCloudAlibaba,您只需要......
  • SpringCloudAlibaba版本关系
    SpringCloudAlibaba版本关系官方云原生应用脚手架由于SpringBoot3.0,SpringBoot2.7~2.4和2.4以下版本之间变化较大,目前企业级客户老项目相关SpringBoot版本仍停留在SpringBoot2.4以下,为了同时满足存量用户和新用户不同需求,社区以SpringBoot3.0和2.4分别为......
  • SpringCloud应用集成Nacos配置中心
    SpringCloud应用集成Nacos配置中心官方文档第一步:引入依赖版本见=>附录:根pom文件=>版本控制片段www.cnblogs.com/anhaoyan...<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-con......
  • Spring拦截器(Interceptor)的使用
    一.注册拦截器,定义一个类实现HandlerInterceptor接口,重写里面的三个方法,具体代码实现如下:packagecom.luoluo.interceptor;importorg.springframework.stereotype.Component;importorg.springframework.web.servlet.HandlerInterceptor;importorg.springframework.web.se......
  • SpringCloud应用集成Nacos服务注册与发现
    SpringCloud应用集成Nacos服务注册与发现官方文档第一步:引入依赖版本见=>附录:根pom文件=>版本控制片段www.cnblogs.com/anhaoyan... <!--引入nacos用于服务注册与发现--><dependency><groupId>com.alibaba.cloud</groupId><artifact......