有的时候需要在spring-boo获取普通bean,用来做测试或者其他的
我们写一个util 来获取
package smaug.util.context;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* Created by naonao on 17/9/9.
*/
@Component
public class SmaugContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if(SmaugContextUtil.applicationContext == null) {
SmaugContextUtil.applicationContext = applicationContext;
}
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
//通过name获取 Bean.
public static Object getBean(String name){
return getApplicationContext().getBean(name);
}
//通过class获取Bean.
public static <T> T getBean(Class<T> clazz){
return getApplicationContext().getBean(clazz);
}
//通过name,以及Clazz返回指定的Bean
public static <T> T getBean(String name,Class<T> clazz){
return getApplicationContext().getBean(name, clazz);
}
}
怎么验证呢, 我们写一个test
package order;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import smaug.service.provider.handler.shop.ShopHandler;
import smaug.service.provider.starts.OrderStartApplication;
import smaug.service.vo.shop.ShopRestItem;
import smaug.util.context.SmaugContextUtil;
import smaug.util.json.JsonUtil;
/**
* Created by naonao on 17/8/27.
*/
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@SpringBootTest(classes = {OrderStartApplication.class})
public class OrderTest {
Logger logger = LoggerFactory.getLogger(OrderTest.class);
@Autowired
private JsonUtil jsonUtil;
@Test
public void testShop() {
ShopHandler shopHandler = SmaugContextUtil.getBean(ShopHandler.class);
ShopRestItem item = shopHandler.getShopDetail(92809, "");
logger.info(jsonUtil.toJson(item));
}
}
其中shopHandler 是自己实现的一个处理层