• SpringMvc 获取ApplicationContext


    有时,我们不通过Controller层进入Service层,比如同步数据,任务,以及文件上传共通Handler对文件处理后保存数据等都会由一个非Controller类调用Service。

    这时候如果new Service会因为没有事务控制也没法打开jdbc连接,也不满足spring的bean管理。因此需要获取到spring创建的service。

    ApplicationContext会在spring的扫描时加入进来。

    获取方式:

    需要创建一个类(例:ContextUtils)实现ApplicationContextAware接口。

    会自动实现一个setApplicationContext的方法,spring在扫描完毕类后,调用ApplicationContextAware接口的实现类,自动传递applicationContext到这个类中。

    创建一个自己的getBean方法获取自己想要的类。

    public class ContextUtils implements ApplicationContextAware {
        
        private static ApplicationContext context;
    
        @Override
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
            context = applicationContext;
        }
        
        public static Object getBean(String strBeanName) {
            return context.getBean(strBeanName);
        }
    
    }

    在dispatch-context.xml中加入自己写的ContextUtils类。

    <!-- ContextUtils -->
    <bean id="contextUtils" class="com.pccw.solutions.retire.common.utils.ContextUtils"></bean>

    这样就可以在自己想要的任何位置获取Bean.

  • 相关阅读:
    Linux
    SpringData JPA复合主键
    SpringData JPA实现CRUD,分页与多参数排序
    springboot自定义配置文件
    drools入门示例
    Java 自定义注解与注解解析实例
    GitHub创建项目,保存代码。
    SpringAOP的应用实例与总结
    springmvc与fastjson的整合,注解@RequestBody的使用
    graphviz画图与中文乱码等问题总结
  • 原文地址:https://www.cnblogs.com/DennyZhao/p/8143646.html
Copyright © 2020-2023  润新知