厦门北京网站建设公司哪家好壹壹推广联盟

张小明 2026/1/1 9:42:37
厦门北京网站建设公司哪家好,壹壹推广联盟,wordpress 加谷歌广告,湛江专业建网站哪家好ApplicationContext 详解 ApplicationContext 是 Spring 框架的核心接口#xff0c;它是 BeanFactory 的子接口#xff0c;提供了更丰富的功能。下面从作用、使用方法、注意事项等方面详细介绍。 一、核心作用 ApplicationContext 主要负责#xff1a; IoC 容器#xff1a;…ApplicationContext 详解ApplicationContext 是 Spring 框架的核心接口它是 BeanFactory 的子接口提供了更丰富的功能。下面从作用、使用方法、注意事项等方面详细介绍。一、核心作用ApplicationContext 主要负责IoC 容器管理 Bean 的生命周期和依赖注入资源访问统一访问 classpath、文件系统、URL 等资源事件发布支持应用事件机制观察者模式国际化支持 i18n 消息解析注解驱动支持注解配置Component, Service 等AOP 集成与面向切面编程无缝集成二、常见实现类实现类适用场景配置方式ClassPathXmlApplicationContext独立应用classpath 下的 XML 配置XMLFileSystemXmlApplicationContext独立应用文件系统路径的 XMLXMLAnnotationConfigApplicationContext纯注解配置的独立应用Java ConfigGenericApplicationContext通用实现可自定义后处理器多种GenericGroovyApplicationContextGroovy 脚本配置GroovyGenericWebApplicationContextWeb 应用非 Spring Boot多种三、使用方法1. XML 配置方式// 加载 classpath 下的 XML 配置ApplicationContextcontextnewClassPathXmlApplicationContext(applicationContext.xml);// 加载文件系统路径的 XMLApplicationContextcontextnewFileSystemXmlApplicationContext(D:/config/applicationContext.xml);// 获取 BeanUserServiceuserServicecontext.getBean(userService,UserService.class);2. Java 注解配置方式// 配置类ConfigurationComponentScan(basePackagescom.example)PropertySource(classpath:app.properties)publicclassAppConfig{BeanpublicDataSourcedataSource(){// 配置数据源returnnewDriverManagerDataSource();}}// 启动容器ApplicationContextcontextnewAnnotationConfigApplicationContext(AppConfig.class);UserServiceuserServicecontext.getBean(UserService.class);3. Spring Boot 方式SpringBootApplicationpublicclassMyApplication{publicstaticvoidmain(String[]args){// 自动创建 ApplicationContextConfigurableApplicationContextcontextSpringApplication.run(MyApplication.class,args);// 获取 BeanMyServiceservicecontext.getBean(MyService.class);}}4. Web 应用配置web.xml 方式传统context-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:applicationContext.xml/param-value/context-paramlistenerlistener-classorg.springframework.web.context.ContextLoaderListener/listener-class/listenerServlet 3.0 注解方式publicclassMyWebAppInitializerimplementsWebApplicationInitializer{OverridepublicvoidonStartup(ServletContextcontainer){AnnotationConfigWebApplicationContextcontextnewAnnotationConfigWebApplicationContext();context.register(AppConfig.class);container.addListener(newContextLoaderListener(context));}}四、核心特性1. 资源访问// 获取 classpath 资源Resourceresourcecontext.getResource(classpath:config.properties);// 获取 URL 资源ResourceurlResourcecontext.getResource(https://example.com/data.json);// 获取文件系统资源ResourcefileResourcecontext.getResource(file:/opt/app/config.xml);2. 国际化// 获取消息Stringmessagecontext.getMessage(user.welcome,newObject[]{张三},Locale.CHINA);// 需要在配置中定义 MessageSource BeanBeanpublicMessageSourcemessageSource(){ResourceBundleMessageSourcesourcenewResourceBundleMessageSource();source.setBasename(messages);returnsource;}3. 事件发布// 定义事件publicclassUserRegisterEventextendsApplicationEvent{publicUserRegisterEvent(Objectsource){super(source);}}// 发布事件context.publishEvent(newUserRegisterEvent(user));// 监听事件ComponentpublicclassUserRegisterListenerimplementsApplicationListenerUserRegisterEvent{OverridepublicvoidonApplicationEvent(UserRegisterEventevent){// 处理注册逻辑}}五、注意事项1.容器重复创建问题// 错误多次创建容器publicclassSomeClass{publicvoidmethod1(){newClassPathXmlApplicationContext(beans.xml);// 浪费资源}publicvoidmethod2(){newClassPathXmlApplicationContext(beans.xml);// 又创建一个}}// 正确单例模式持有容器publicclassApplicationContextHolder{privatestaticfinalApplicationContextcontextnewClassPathXmlApplicationContext(beans.xml);publicstaticApplicationContextgetContext(){returncontext;}}2.Web 应用中的容器管理Servlet 容器和Spring 容器是两个不同的概念Web 应用中通常使用ContextLoaderListener创建根容器DispatcherServlet 可以创建自己的子容器可选避免手动创建 ApplicationContext应该由框架管理3.配置文件位置// 推荐使用 ClassPathXmlApplicationContext// 配置文件放在 src/main/resources 下newClassPathXmlApplicationContext(classpath:applicationContext.xml);// 避免硬编码绝对路径// new FileSystemXmlApplicationContext(D:/project/config/beans.xml);4.Bean 的作用域// 注意 Bean 的默认作用域是 singleton// 对于 Web 应用可以使用 request/session 作用域Scope(prototype)// 多例Scope(request)// Web 请求级别Scope(session)// Web 会话级别5.内存泄漏风险// 在 Web 应用中确保容器正确关闭// Spring Boot 会自动处理// 独立应用需要注册关闭钩子((ConfigurableApplicationContext)context).registerShutdownHook();6.配置拆分策略// 大型项目建议拆分配置ApplicationContextcontextnewClassPathXmlApplicationContext(classpath:spring-dao.xml,classpath:spring-service.xml,classpath:spring-mvc.xml);// 或使用 import 标签// import resourcespring-dao.xml/7.测试时的注意事项// 单元测试中使用 ContextConfigurationRunWith(SpringRunner.class)ContextConfiguration(classesAppConfig.class)publicclassMyServiceTest{AutowiredprivateMyServicemyService;// 测试方法}8.性能优化延迟初始化设置lazy-inittrue加速启动扫描优化ComponentScan指定精确包路径避免扫描整个 classpath配置缓存频繁访问的配置可以缓存避免重复读取9.版本兼容性Spring 5.x 需要 Java 8Spring Boot 2.x 使用 Spring 5.xSpring Boot 3.x 需要 Java 17 和 Spring 6.x10.资源释放// 使用 try-with-resources 确保关闭try(ConfigurableApplicationContextcontextnewClassPathXmlApplicationContext(beans.xml)){// 使用容器MyServiceservicecontext.getBean(MyService.class);service.doSomething();}// 自动关闭六、最佳实践优先使用注解配置现代 Spring 项目推荐使用 Java Config使用 Spring Boot对于新项目直接使用 Spring Boot 简化配置避免手动获取 Bean尽可能使用依赖注入Autowired合理拆分配置按功能模块拆分配置文件或配置类注意 Bean 的线程安全Singleton Bean 必须是线程安全的谨慎使用PostConstruct初始化逻辑不要过于复杂希望这些内容能帮助你全面理解 ApplicationContext
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

景德镇做网站哪家好诸城做网站公司

一、项目介绍 YOLOv10冰箱内部成分检测系统 是一个基于YOLOv10(You Only Look Once version 10)目标检测算法的智能系统,专门用于检测和识别冰箱内部的多种食物成分。该系统能够自动识别冰箱中的30种常见食物,包括水果、蔬菜、肉…

张小明 2025/12/29 8:51:26 网站建设

优秀网站页面设计图片做网站刷流量挣钱吗

Linux系统网络配置、故障排查与安全管理全解析 1. 网络基础配置与操作 在Linux系统中,有多个工具和配置文件可用于网络配置和操作。 - IP地址获取与接口配置 : dhclient 程序可通过DHCP协议向本地网络查询IP地址信息,并使用这些信息配置接口。例如,当你需要自动获取…

张小明 2025/12/31 2:28:52 网站建设

网站建设 分类建设英文网站费用

Graylog日志管理平台快速部署与实战指南 【免费下载链接】graylog2-server Free and open log management 项目地址: https://gitcode.com/gh_mirrors/gr/graylog2-server 想要搭建一个强大的日志管理系统,却担心配置太复杂?Graylog作为开源日志管…

张小明 2025/12/29 23:37:38 网站建设

咖啡网站开发建网站挣钱 优帮云

Cowabunga:8大功能打造终极iOS个性化体验指南 【免费下载链接】Cowabunga iOS 14.0-15.7.1 & 16.0-16.1.2 MacDirtyCow ToolBox 项目地址: https://gitcode.com/gh_mirrors/co/Cowabunga 在iOS设备个性化定制的世界里,Cowabunga无疑是一款革命…

张小明 2025/12/30 2:36:49 网站建设

做网站都需要服务器吗好做网站

解锁网易云音乐加密文件:ncmdumpGUI轻松转换指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 还在为网易云音乐的NCM加密文件无法在其他设备上播…

张小明 2025/12/29 18:14:31 网站建设

郑州网站商城建设php网站制作费用

ModbusSlave实战指南:手把手教你搞定RTU通信那些“坑”在工业现场,你是否也遇到过这样的场景?PLC读不到数据、HMI显示乱码、调试软件报CRC错误……明明代码没改,设备一上电就“罢工”。别急,这大概率不是硬件坏了&…

张小明 2025/12/29 12:24:55 网站建设