spring boot 普通类注入service

tech2022-12-09  93

1,applicationcontextaware 作用

在java web项目中,有时候我们需要将普通类注入到service 中 会用到以下的代码

ApplicationContext appContext = new ClassPathXmlApplicationContext("applicationContext-common.xml"); AbcService abcService = (AbcService)appContext.getBean("abcService");

这步骤会重新加载applicationContext-common.xml并实例化上下文bean。

2,解决

定义一个新的类,继承applicationcontextaware 重写方法。

import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; @Component public class SpringUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext=applicationContext; } public static ApplicationContext getApplicationContext() { return applicationContext; } public static Object getBean(String name) { return applicationContext.getBean(name); } public static <T> T getBean(Class<T> tClass) { return applicationContext.getBean(tClass); } }

3,在service 层加 @Service 注解

@Service public class ClusterResultServer {

4,获取bean

@Autowired ClusterResultServer _clusterResultServer= (ClusterResultServer)SpringUtil.getBean(ClusterResultServer.class);

欢迎关注公众号:

最新回复(0)