企业级开发过程中,一般使用Spring注解开发。使用注解获取Spring容器管理的类(这些类都必须是Spring容器中的类)!
开发过程中,有时会遇到需要在普通类中注入spring管理的单例bean。直接注入是注入不进去的,这是就需要创建一个工具类来获取Spring容器管理的bean。

   举例:普通类User.class
         public class User{
         @Resource
         private PortDAO portDAO;
         }
         注意:1.在普通类User中直接注入Spring容器中管理的PortDAO ,是不可行的
                   2.普通类:指不归Spring容器管理的类

1.工具类SpringContextUtil必须满足以下要求:
(1)也需要使用注解@Component注入Spring容器中

    举例:工具类SpringContextUtil
          @Component
          public class SpringContextUtil implements ApplicationContextAware {
	                private static ApplicationContext applicationContext; // Spring应用上下文环境
	      public void setApplicationContext(ApplicationContext applicationContext)
			throws BeansException {
		SpringContextUtil.applicationContext = applicationContext;
	}
	public static ApplicationContext getApplicationContext() {
		return applicationContext;
	}
	@SuppressWarnings("unchecked")
	public static <T> T getBean(String name) throws BeansException {
		return (T) applicationContext.getBean(name);
	}
}

2.在配置文件applicationContext.xml中配置工具类

<bean id="springContextUtil" class="com.bisien.infrastructure.crosscutting.base.SpringContextUtil" />

3.在普通bean中使用工具类SpringContextUtil注入spring管理的单例bean
举例:普通类User

public class User{
      PortDAO portDAO= SpringContextUtil.getBean("portDAO");
      }
注意:这样普通类就可以使用spring管理的单例bean
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐