精华内容
下载资源
问答
  • 主要介绍了如何获得spring上下文的方法总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 本篇文章主要介绍了详解在SpringBoot应用中获取应用上下文方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
  • 涉及到的类包括: 1. ITestService.java 2. TestServiceImp.java 3. autoWiringService.java 以及Spring配置文件: 4.autoWiring.xml 对应的源码为: ...猜测是否是无法读取xml文件?还是哪里没有配置好?
  • springboot应用获取spring上下文的几种方式

    实际开发中我们经常需要通过spring上下文获取一些配置信息,本文阐述springboot应用获取spring上下文的几种方式。

    【仅需9.9订阅专栏合集,作者所有付费文章都能看(持续更新)】

    推荐【Kafka教程https://bigbird.blog.csdn.net/article/details/108770504
    推荐【rabbitmq教程https://bigbird.blog.csdn.net/article/details/81436980
    推荐【Flink教程https://blog.csdn.net/hellozpc/article/details/109413465
    推荐【JVM面试与调优教程https://bigbird.blog.csdn.net/article/details/113888604
    推荐【SpringBoot全套教程https://blog.csdn.net/hellozpc/article/details/107095951
    推荐【SpringCloud教程https://blog.csdn.net/hellozpc/article/details/83692496
    推荐【Mybatis教程https://blog.csdn.net/hellozpc/article/details/80878563
    推荐【SnowFlake教程https://blog.csdn.net/hellozpc/article/details/108248227
    推荐【并发限流教程https://blog.csdn.net/hellozpc/article/details/107582771
    推荐【Redis教程https://bigbird.blog.csdn.net/article/details/81267030
    推荐【Netty教程https://blog.csdn.net/hellozpc/category_10945233.html

    全套springboot教程 https://blog.csdn.net/zpcandzhj/category_10159292.html

    方式一:实现ApplicationContextAware接口

    import org.springframework.beans.BeansException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    import org.springframework.stereotype.Component;
    
    /**
     * 实现ApplicationContextAware接口设置applicationContext
     * 提供static方法供调用者使用,不要求使用者受spring容器管理
     */
    @Component
    public class SpringContextUtil1 implements ApplicationContextAware {
    
        public static ApplicationContext applicationContext;
    
        @Override
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
            SpringContextUtil1.applicationContext = applicationContext;
        }
    
        public static ApplicationContext getApplicationContext() {
            return SpringContextUtil1.applicationContext;
        }
    
        public static Object getBean(String name) {
            return getApplicationContext().getBean(name);
        }
    
        public static <T> T getBean(Class<T> clazz) {
            return getApplicationContext().getBean(clazz);
        }
    
        public static <T> T getBean(String name, Class<T> clazz) {
            return getApplicationContext().getBean(name, clazz);
        }
    }
    

    方式二:非static方法版

    import org.springframework.beans.BeansException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    import org.springframework.stereotype.Component;
    
    /**
     * 实现ApplicationContextAware接口设置applicationContext
     * 如果使用者也是被spring管理的bean则可以使用注入的方式使用,而非调用static方法
     */
    @Component
    public class SpringContextUtil2 implements ApplicationContextAware {
    
        public ApplicationContext applicationContext;
    
        @Override
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
            this.applicationContext = applicationContext;
        }
    
        public ApplicationContext getApplicationContext() {
            return this.applicationContext;
        }
    
        public Object getBean(String name) {
            return applicationContext.getBean(name);
        }
    
        public <T> T getBean(Class<T> clazz) {
            return applicationContext.getBean(clazz);
        }
    
        public <T> T getBean(String name, Class<T> clazz) {
            return getApplicationContext().getBean(name, clazz);
        }
    }
    
    
    @Component
    public class ContextUser{
    
        /**
         * 使用者直接注入
         */
        @Autowired
        public SpringContextUtil2 springContextUtil2;
     
    }
    

    方式三:在springboot引导类里设置

    import org.springframework.context.ApplicationContext;
    
    /**
     * 在springboot引导类里设置applicationContext
     * 工具类无需实现ApplicationContextAware接口
     */
    
    public class SpringContextUtil3 {
    
        public static ApplicationContext applicationContext;
    
        public static ApplicationContext getApplicationContext() {
            return SpringContextUtil3.applicationContext;
        }
    
        public static void setApplicationContext(ApplicationContext applicationContext) {
            SpringContextUtil3.applicationContext = applicationContext;
        }
    
        public static Object getBean(String name) {
            return getApplicationContext().getBean(name);
        }
    
        public static Object getBean(Class<?> requiredType) {
            return getApplicationContext().getBean(requiredType);
        }
    
        public static <T> T getBean(String name, Class<T> clazz) {
            return getApplicationContext().getBean(name, clazz);
        }
    }
    
    
    //在springboot引导类里设置applicationContext
    @SpringBootApplication
    public class MainApplication {
    
        public static void main(String[] args) {
            ConfigurableApplicationContext context = SpringApplication.run(MainApplication.class, args);
            SpringContextUtil3.setApplicationContext(context);
        }
    }
    

    方式四:直接注入ApplicationContext

    @Component
    public class ContextUser{
    
        /**
         * 在需要使用上下文的地方直接注入(前提:使用者受spring容器管理)
         */
       @Autowired
       public ApplicationContext applicationContext;
     
    }
      
    

    怎么样,第四种方式是不是很easy?!

    更多内容请关注【程猿薇茑】

    欢迎关注公众号「程猿薇茑」
    **微信扫一扫**
    展开全文
  • 问题 springboot 整合 storm 无法使用注解获取 Ioc 里的 bean,获取不到 spring 上下文 applicationContext 待整理,参考 1、 https://blog.csdn.net/iteye_14294/article/details/82278852 2、 ...

    问题

    springboot 整合 storm 无法使用注解获取 Ioc 里的 bean,获取不到 spring 上下文 applicationContext

    待整理,参考

    1、
    https://blog.csdn.net/iteye_14294/article/details/82278852
    2、
    https://www.cnblogs.com/gouyg/p/storm-springboot.html
    3、
    https://www.jianshu.com/p/19ee4cce176e

    查找相关资料,搜索

    springboot 结合 storm 怎么注入 bean

    展开全文
  • 问题: 使用WebSocket时,发送消息,会出现用@Autowired引入的对象为null。 原因: 因为@Autowired的所有...获取spring上下文的代码 package com.yt.util; import org.jetbrains.annotations.NotNull; import org.sp

    问题:

    使用WebSocket时,发送消息,会出现用@Autowired注入的bean对象为null。

    原因:

    因为@Autowired的所有对象,都是在系统启动的时候加入了spring的上下文中,而WebSocket是多实例的,所以造成注入的bean对象为null。

    解决方法:

    直接从spring上下文中获取已加载的bean对象。

    获取spring上下文的代码

    package com.yt.util;
    
    import org.springframework.beans.BeansException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    import org.springframework.stereotype.Component;
    
    /**
     * spring上下文获取类
     * @author tyg
     * @date 2020-08-31 15:21
     */
    @Component
    public class ApplicationContextUtil implements ApplicationContextAware {
    
        /** Spring上下文 */
        private static ApplicationContext applicationContext;
    
        /**
         * 将spring上下文同步到当前的applicationContext
         * @param applicationContext    上下文
         * @throws BeansException bean异常
    	 * @author tyg
    	 * @date 2020-08-31 15:21
         */
        @Override
        public void setApplicationContext(@NotNull ApplicationContext applicationContext) throws BeansException {
            ApplicationContextUtil.applicationContext = applicationContext;
        }
    
        /**
         * 获取已注入到spring上下文中的对象
         * @param beanName  类名称
         * @param t 返回指定的对象
         * @throws BeansException bean异常
    	 * @author tyg
    	 * @date 2020-08-31 15:21
         */
        public static <T>  @NotNull T getBean(String beanName, Class<T> t) throws BeansException {
            return (T) applicationContext.getBean(beanName);
        }
    }
    
    

    调用示例:

    // chatMessageServiceImpl是spring启动时就加载的bean。
    ChatMessageServiceImpl chatMessageService = ApplicationContextUtil.getBean("chatMessageServiceImpl", ChatMessageServiceImpl.class);
    
    
    展开全文
  • Arthas获取spring上下文

    千次阅读 2020-06-23 00:07:45
    对基于spring的工程而言,获取到spring上下文就可以做很多事情,比如获取注册的Bean...获取spring上下文 tt -t org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter invokeHandle.

    对基于spring的工程而言,获取到spring上下文就可以做很多事情,比如获取注册的Bean对象,查看其属性值,调用其方法等。生产环境中排查问题时,不方便修改代码打印变量的值、重启服务以便调用刷新缓存的方法等,这时,使用arthas就方法许多了。

    基于SpringMvc的工程
    1. 获取spring上下文
      tt -t org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter invokeHandlerMethod -n 3
      在这里插入图片描述
    2. 获取Bean对象
      tt -i 1000 -w 'target.getApplicationContext().getBean("serviceBTRelationServiceImpl")'
    3. 如果Bean是AOP代理后的对象,如何获取目标对象呢
      tt -i 1000 -w 'target.getApplicationContext().getBean("serviceBTRelationServiceImpl").getTargetSource()'
    4. 获取目标对象
      tt -i 1000 -w 'target.getApplicationContext().getBean("serviceBTRelationServiceImpl").getTargetSource().target'
    5. 执行目标对象属性或方法
      tt -i 1000 -w 'target.getApplicationContext().getBean("serviceBTRelationServiceImpl").getTargetSource().target.cacheMap'
      在这里插入图片描述
    基于Dubbo的工程

    ognl 语法

    • 静态方法 @System@getProperties(“java”)
    • 普通对象 #userService.get(“id”)

    在Dubbo里有一个扩展com.alibaba.dubbo.config.spring.extension.SpringExtensionFactory,把Spring Context保存到了里面。 因此,我们可以通过ognl命令获取到。

    1. 查询类加载信息,这里使用类加载器的hash
      sc -d 'com.alibaba.dubbo.config.spring.extension.SpringExtensionFactory'
    2. 获取spring上下文
      ognl -c 5197848c '#context=@com.alibaba.dubbo.config.spring.extension.SpringExtensionFactory@contexts.iterator.next'
    3. 使用spring上下文获取业务对象
      ognl -c 5197848c '#context=@com.alibaba.dubbo.config.spring.extension.SpringExtensionFactory@contexts.iterator.next, #context.getBean("tianqiRedisFactory").jedisPools' -x 3
    展开全文
  • 原文:... Spring上下文(ApplicationContext)的获取有三种方式。 1.通过WebApplicationUtils工具类获取。WebApplicationUtils类是在Spring框架基础包spring-web-3.2.0.RELEASE.jar(我使用...
  • 1.web上下文、spring上下文、springMVC上下文之间的关系 本段转载自:https://segmentfault.com/q/1010000000210417 要想很好理解这三个上下文的关系,需要先熟悉spring是怎样在web容器中启动起来的。spring的...
  • 第一步:实现 ApplicationContextAware接口第二步:给类加上注解 @Component 让spring识别并且注入第三步:定义好静态的 ApplicationContext ,在ApplicationContextAware实现的 setApplicationContext赋值过去;...
  • 实际开发中我们经常需要通过spring上下文获取一些配置信息,本文阐述springboot应用获取spring上下文的几种方式。 方式一:实现ApplicationContextAware接口 import org.springframework.beans.BeansException; ...
  • 主要介绍了springboot 使用上下文获取bean,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • * 获取spring MVC请求上下文 * @return */ public static SpringMVCContext getSpringMVCContext() { HttpServletRequest request = getRequest(); HttpServletResponse response = ((ServletRequestAttributes...
  • 1、创建一个springContextUtil类 import org.springframework.context.ApplicationContext; public class SpringContextUtil { private static ApplicationContext ... //获取上下文 public s...
  • 从Servlet容器中获取Spring上下文

    千次阅读 2018-08-09 13:35:16
    当 Web 应用集成 Spring 容器后,代表 Spring 容器的WebApplicationContext对象将以 WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE 为键存放在ServletContext的属性列表中。您当然可以直接通过...
  • 一句代码即可: ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
  • 百度这个问题真的好难查,终于找到一个解决方法https://blog.csdn.net/u014723529/article/details/51404187类似文章还有http://kewen1989.iteye.com/blog/1891124正文公司项目,之前是用spring,后来要移植到...
  • 使用Spring上下文获取容器内对象

    千次阅读 2018-08-23 13:38:04
    前者的作用在于让spring容器来管理这个类,而后者的作用就是从spring容器中获取这个类的对象,更关键的是,这个对象是单例的。 为了使用@Autowired获取某个类的单例,必须将当前类也交给spring容器管理,即使用@...
  • 项目用到了ApplicationContextAware,通过它Spring容器会自动把上下文环境对象调用ApplicationContextAware接口中的setApplicationContext方法。我们在ApplicationContextAware的实现类中,就可以通过这个上下文环境...
  • 在web项目中获取spring上下文

    千次阅读 2017-08-15 15:53:14
    获取原因:在一方法类中需要用到另一个变量实例,尝试多种方法均失败,故而采用获取spring上下文方法,在需要的地方从spring容器中获取该Bean的方法。注:不是最好的方法,但是是管用的 public class Main ...
  • Spring获取上下文工具类@Component public class SpringContextUtil implements ApplicationContextAware { private static ApplicationContext context; public static ApplicationContext ...
  • 主要给大家介绍了关于如何在Spring异步调用中传递上下文的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
  • 主要介绍了Spring 应用上下文获取 Bean,结合实例形式总结分析了Spring 应用上下文获取 Bean的实现方法与操作注意事项,需要的朋友可以参考下
  • 因为项目里面用到了动态获取Bean的方式,所以考虑实现AppplicationContextAware的方式来获取Spring上下文。 但是最近服务器上经常出现 SpringUitl.getBean空指针的问题. 代码如下: package ...
  • 你的需求是当服务器启动后加载一些数据,我们就可以使用... 这样获取是不可以的,当j2ee容器启动后会或获取一次spring上下文,如果使用该方式会在一次获取上下文。自己想想就知道.ServletContextListener 不受sp
  • * 从Spring上下文取出Bean工具类 * * @author ZhuPengWei * @date 2018/6/27 18:04 */ public class SpringApplicationContextUtil { private static ApplicationContext applicationContext = null; publ....
  • 关于spring上下文,springmvc上下文区别请读者自己百度哦。filter中获取spring的上下文@Override public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 92,095
精华内容 36,838
关键字:

无法获取spring上下文

spring 订阅