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

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.xdnf.cn/news/17159.html

相关文章:

  • JSqlParser学习笔记 快速使用JSqlParser
  • C++临时对象:来源与性能优化之道
  • mysql 数据库系统坏了,物理拷贝出数据怎么读取
  • 【机器学习】(算法优化一)集成学习之:装袋算法(Bagging):装袋决策树、随机森林、极端随机树
  • Day31:文件的规范拆分与写法
  • XXE漏洞原理及利用
  • QT:交叉编译mysql驱动库
  • 【测试】⽤例篇
  • 【Pytorch✨】LSTM04 l理解长期记忆和短期记忆
  • springboot博客实战笔记01
  • Linux-Day02.Linux指令
  • AI开灯的几种方法,与物理世界的交互过渡
  • 量化大型语言模型的评估
  • SparkSQL—sequence 函数用法详解
  • LeetCode 135:分糖果
  • Vue3学习笔记
  • AI小说创作工具体验:本地部署助力文学创作,Ollama+AIStarter一键搞定
  • Prompt Engineering
  • 嵌入式硬件篇---OpenMV存储
  • 疏老师-python训练营-Day35模型可视化推理
  • 华奥系科技奥采01:重新定义物联网数据采集标准
  • OpenLayers 详细开发指南 - 第八部分 - GeoJSON 转换与处理工具
  • DC-DC的分压反馈电阻怎么取值
  • 16_OpenCV_漫水填充(floodFill)
  • 最大重复子字符串
  • 数据分页异步后台导出excel
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 85(题目+回答)
  • JMeter的基本使用教程
  • HarmonyOS 多屏适配最佳实践:基于 ArkUI 的响应式 UI 方案
  • 深入理解Java的SPI机制,使用auto-service库优化SPI