当前位置: 首页 > news >正文

ApplicationContext的实现类有哪些?

口语化答案

好的,面试官。常用的只要用 classpathxml 的基于 xml 的方式,annotion 的基于注解的方式,不常见的还有 web 和 groovy。在目前的实际情况下,主要是 annotion,注解形式放入到容器中。像老的 tomcat 那种方式,用的是 web 形式,不过现在都是 boot 注解形式。groovy 适用于一些动态加载 bean 的方式,通过脚本的形式处理。

题目解析

经典题,问的还比较多,主要是想借此考察一下,你在项目中,都用过什么样的形式的。其实主要答出注解和 xml 这道题就 ok。

面试得分点

xml,注解,web,groovy

题目详细答案

Spring容器配置方式详解(通俗版)

主流配置方式

1. 注解配置(现代开发首选)

@Configuration  // 声明这是配置类
@ComponentScan("com.example") // 自动扫描包
public class AppConfig {@Bean  // 声明一个Beanpublic DataSource dataSource() {return new HikariDataSource();}
}// 启动容器
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);

特点

  • 代码即配置,直观清晰
  • Spring Boot默认采用这种方式
  • 支持自动装配(@Autowired)

2. XML配置(传统项目使用)

<!-- applicationContext.xml -->
<beans><bean id="userService" class="com.example.UserService"/><bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"/>
</beans>

加载方式

// 从classpath加载
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");// 从文件系统加载
ApplicationContext context =new FileSystemXmlApplicationContext("C:/config/spring.xml");

特殊场景配置

3. Web应用配置(传统Java Web)

传统web.xml配置

<context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring-config.xml</param-value>
</context-param>
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

现代无XML方式(Spring 3.0+):

public class MyWebAppInitializer implements WebApplicationInitializer {@Overridepublic void onStartup(ServletContext servletContext) {// 创建注解配置的Web容器AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();context.register(AppConfig.class);// 注册DispatcherServletServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", new DispatcherServlet(context));dispatcher.addMapping("/");}
}

4. Groovy配置(动态脚本)

Groovy 是一种基于JVM的动态编程语言,可以简单理解为"Java的脚本版兄弟"。

// config.groovy
beans {dataSource(HikariDataSource) {jdbcUrl = "jdbc:mysql://localhost/test"username = "root"password = "123456"}
}

加载方式

ApplicationContext context = new GenericGroovyApplicationContext("config.groovy");

现代开发建议

  1. 新项目:直接使用Spring Boot + 注解配置
    • 零XML配置
    • 自动配置简化开发
  1. 老项目维护
    • XML配置项目:逐步迁移到注解
    • Web项目:考虑升级到Spring Boot
  1. 动态需求
    • 需要热更新配置 → 考虑Groovy
    • 需要兼容旧系统 → 保持XML
http://www.dtcms.com/a/315669.html

相关文章:

  • 「PromptPilot 大模型智能提示词平台」—— PromptPilot × 豆包大模型 1.6:客户投诉邮件高效回复智能提示词解决方案
  • 芯祥科技:工业/车规级BMS芯片厂商 规格选型对比
  • Python import 详解
  • linux_https,udp,tcp协议(更新中)
  • C++ ---》string类的模拟实现
  • CRT调试堆检测:从原理到实战的资源泄漏排查指南
  • HBM Basic(VCU128)
  • nflsoi 7.29 题解
  • Python-深度学习--2信息熵,条件熵(ID3决策树),KL散度
  • 飞算JavaAI—AI编程助手 | 引领开发新时代,智能化编程的完美助手
  • python学智能算法(三十三)|SVM-构建软边界拉格朗日方程
  • 分布式微服务--Nacos持久化
  • Modstart 请求出现 Access to XMLHttpRequest at ‘xx‘
  • 用 Python 构建高质量的中文 Wikipedia 语料库:从原始 XML 到干净段落
  • rabbitMq内容整理
  • PromptPilot搭配Doubao-seed-1.6:定制你需要的AI提示prompt
  • 云计算一阶段Ⅱ——11. Linux 防火墙管理
  • LeetCood算法题~水果成篮
  • [element-plus] ClickOutside点击其他地方
  • 【IDEA】IntelliJ IDEA 中文官方文档全面介绍与总结
  • Docker 部署工程基本命令记录
  • uniapp renderjs 逻辑层,视图层互相传递数据封装
  • 星图云开发者平台赋能商储油安全管控数字化转型
  • 漏洞分析:90分钟安全革命
  • NLP自然语言处理 03 Transformer架构
  • 基于 FFmpeg 与 V4L2 的多路摄像头视频采集,图像处理处理与 RTMP 推流项目(开源)
  • GPU 基础矩阵精规组织教程:从基础作用到实战应用
  • EAGLE-2:通过动态草稿树加速语言模型推理
  • 国内办公安全平台新标杆:iOA一体化办公安全解决方案
  • 用 PyTorch 实现一个简单的神经网络:从数据到预测