Spring Bootコンテキストを取得する
Springでは、
1.自動注入
ContextLoader
によってコンテキスト環境を取得することができる.WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();
しかしこの方式はSpring Bootでは無効となります.本論文では三つの方式がSpring Bootコンテキスト環境を取得することを提供する.1.自動注入
@Autowired
WebApplicationContext webApplicationConnect;
2.実現ApplicationContextAware
インターフェース /** * spring bean * * @author simon * @create 2018-09-10 9:51 **/
@Component
public class SpringBeanTool implements ApplicationContextAware {
/** * */
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
/** * applicationContext * * @return * applicationContext */
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
/** * name Bean. * * @param name * bean name * @return * bean */
public static Object getBean(String name){
return getApplicationContext().getBean(name);
}
/** * class Bean. * @param clazz * class * @param * @return */
public static T getBean(Class clazz){
return getApplicationContext().getBean(clazz);
}
/** * name, Clazz Bean * @param name * bean name * @param clazz * class * @param * @return * bean */
public static T getBean(String name,Class clazz){
return getApplicationContext().getBean(name, clazz);
}
}
3.ブートクラスでの設定 public class SpringBeanTool {
private static ApplicationContext applicationContext;
public static ApplicationContext getApplicationContext(){
return applicationContext;
}
public static void setApplicationContext(ApplicationContext applicationContext){
SpringContextUtil.applicationContext = applicationContext;
}
public static T getBean(String name){
return (T)applicationContext.getBean(name);
}
public static T getBean(Class clazz){
return applicationContext.getBean(clazz);
}
}
ブートクラス:public static void main(String[] args) {
ApplicationContext context = SpringApplication.run(Application.class, args);
SpringBeanTool.setApplicationContext(context);
}