springboot项目启动获取所有bean的工具类_全局获取bean
1.获取spring容器中所有bean的工具类/*** 获取spring容器中所有bean的工具类,(比如接口为UserService,生成的bean为userService,默认小写)*/@Component//注意要交给springboot进行管理public class ApplicationContextUtils implements ApplicationContextAware {p
·
1.获取spring容器中所有bean的工具类
/**
* 获取spring容器中所有bean的工具类,(比如接口为UserService,生成的bean为userService,默认小写)
*/
@Component //注意要交给springboot进行管理
public class ApplicationContextUtils implements ApplicationContextAware {
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
//将容器中的bean赋值给context,为了static赋值
this.context = applicationContext;
}
/**
* 根据指定的名字获取bean对象
* @param name
* @return
*/
public static Object getBean(String name) {
return context.getBean(name);
}
}
2.使用介绍
//调用获取所有bean的工具类,根据用户名查询当前用户的所有的角色信息,可以直接注入bean
UserService userService = (UserService) ApplicationContextUtils.getBean("userService");
//根据用户名查询用户信息
User user = userService.findByUserName(name);
改进
@Component
public class ApplicationContextUtils implements ApplicationContextAware {
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
//将容器中的bean赋值给context,为了static赋值
this.context = applicationContext;
}
/**
* 根据指定的名字获取bean对象
* @param name
* @return
*/
public static Object getBean(String name) {
return context.getBean(name);
}
//通过class获取
public static <T> T getBean(Class<T> requiredType) throws BeansException {
return context.getBean(requiredType);
}
}
完整工具类
/**
* spring 上下文工具类
*/
@Component
public class ApplicationContextUtil implements ApplicationContextAware {
/**
* 上下文对象实例
*/
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
ApplicationContextUtil.applicationContext = applicationContext;
}
/**
* 获取applicationContext
*
* @return
*/
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
/**
* 通过name获取 Bean.
*
* @param name
* @return
*/
public static Object getBean(String name) {
return getApplicationContext().getBean(name);
}
/**
* 通过class获取Bean.
*
* @param clazz
* @param <T>
* @return
*/
public static <T> T getBean(Class<T> clazz) {
return getApplicationContext().getBean(clazz);
}
/**
* 通过name,以及Clazz返回指定的Bean
*
* @param name
* @param clazz
* @param <T>
* @return
*/
public static <T> T getBean(String name, Class<T> clazz) {
return getApplicationContext().getBean(name, clazz);
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)