zoukankan      html  css  js  c++  java
  • SpringBoot中普通类无法通过@Autowired自动注入Service、dao等bean解决方法

    无法注入原因:

    有的时候我们有一些类并不想注入Spring容器中,有Spring容器实例化,但是我们又想使用Spring容器中的一些对象,所以就只能借助工具类来获取了

    工具类:

    package com.mikey.design.utils;
    
    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.NoSuchBeanDefinitionException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    import org.springframework.stereotype.Component;
    /**
     * @author Mikey
     * @Title:
     * @Description:
     * @Email:1625017540@qq.com
     * @date 2018/12/3 21:57
     * @Version 1.0
     */
    @Component
    public class SpringUtil implements ApplicationContextAware {
        private static ApplicationContext applicationContext = null;
    
        public SpringUtil() {
        }
    
        public void setApplicationContext(ApplicationContext arg0) throws BeansException {
            if (applicationContext == null) {
                applicationContext = arg0;
            }
    
        }
    
        public static ApplicationContext getApplicationContext() {
            return applicationContext;
        }
    
        public static void setAppCtx(ApplicationContext webAppCtx) {
            if (webAppCtx != null) {
                applicationContext = webAppCtx;
            }
        }
    
        /**
         * 拿到ApplicationContext对象实例后就可以手动获取Bean的注入实例对象
         */
        public static <T> T getBean(Class<T> clazz) {
            return getApplicationContext().getBean(clazz);
        }
    
        public static <T> T getBean(String name, Class<T> clazz) throws ClassNotFoundException {
            return getApplicationContext().getBean(name, clazz);
        }
    
        public static final Object getBean(String beanName) {
            return getApplicationContext().getBean(beanName);
        }
    
        public static final Object getBean(String beanName, String className) throws ClassNotFoundException {
            Class clz = Class.forName(className);
            return getApplicationContext().getBean(beanName, clz.getClass());
        }
    
        public static boolean containsBean(String name) {
            return getApplicationContext().containsBean(name);
        }
    
        public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException {
            return getApplicationContext().isSingleton(name);
        }
    
        public static Class<?> getType(String name) throws NoSuchBeanDefinitionException {
            return getApplicationContext().getType(name);
        }
    
        public static String[] getAliases(String name) throws NoSuchBeanDefinitionException {
            return getApplicationContext().getAliases(name);
        }
    }
    View Code

    使用:

  • 相关阅读:
    Macos同时配置github与公司内部使用的gitlab
    position跟display、margin collapse、overflow、float这些特性相互叠加后会怎么样?
    Echarts实现嵌套双环饼状图
    MySQL 8.0.19安装教程(windows 64位)
    解决ECharts Can't get dom width or height!无法初始化图表的问题
    maven项目的pom.xml提示Missing artifact traffic-iso.sdk:sdk:jar:0.0.1
    ES6数组去重的常用方法
    uni-app中设置全局变量和动态修改全局变量
    彻底搞懂$router 和 $route
    onselectstart
  • 原文地址:https://www.cnblogs.com/biaogejiushibiao/p/10061466.html
Copyright © 2011-2022 走看看