需要自定义方法:
package com.example.demo.util; 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:用于普通类也能使用Bean * @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); } }
使用:
package com.example.demo.util; import com.example.demo.Controller.login.JwtAuthenticator; import com.example.demo.Dao.userandroleandpermissionDao.HRUserDao; import com.example.demo.Entity.userandroleandpermission.HRUser; import org.apache.shiro.SecurityUtils; import org.apache.shiro.subject.Subject; public class MethodUtils { public HRUser findUserByToken(){ Subject subject = SecurityUtils.getSubject(); String token = subject.getPrincipal().toString(); String code = JwtAuthenticator.getUsername(token); HRUserDao hrUserDao = SpringUtil.getBean(HRUserDao.class);//此处根据类.class来获取bean HRUser user = hrUserDao.findByCode(code); if(user != null){ return user; }else{ return null; } } }