1、实现ApplicationContextAware接口;
2、@Component注解标注,实现属性加载赋值;
@Component
public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
/**
* 实现ApplicationContextAware接口的回调方法,设置上下文环境
*/
@Override
public void setApplicationContext(ApplicationContext applicationContext) {
SpringContextUtil.applicationContext = applicationContext;
}
/**
* 获得spring上下文
*
* @return ApplicationContext spring上下文
*/
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
/**
* 获取bean
*
* @param name service注解方式name为小驼峰格式
* @return Object bean的实例对象
*/
public static Object getBean(String name) throws BeansException {
return applicationContext.getBean(name);
}
}
3、测试使用
@SpringBootTest
@RunWith(SpringRunner.class)
public class ApplicationContextTest {
@Test
public void test() {
Object redisTemplate = SpringContextUtil.getBean("redisTemplate");
System.out.println(redisTemplate);
}
也可以直接从IOC中获取ApplicationContext对象使用;
@SpringBootTest
@RunWith(SpringRunner.class)
public class ApplicationContextTest {
@Autowired
private ApplicationContext context;
@Test
public void testApplicationContex() {
Object redisTemplate = context.getBean("redisTemplate");
System.out.println(redisTemplate);
}
网友评论