spring 获取bean的方式

来源:互联网 发布:淘宝和天猫哪个靠谱 编辑:程序博客网 时间:2024/05/18 01:31

一直想总结一下spring获取bean的方式,我只记录三种,自以为三种应该就够我用了。

1.在spring的配置文件中配置自动扫描<context:component-scan base-package="*"></context:component-scan>,*代表你要扫描的包。在你需要由spring管理的类头上加上@Component 注解,这样在需要用到此bean的地方用

@Autowired
private TestService  testService;

即可注入bean。

这种方式是我在项目中最常用也是感觉最方便的一种,这种方式在一般情况下都适用。


2.

ServletContext sc = request.getSession().getServletContext();


XmlWebApplicationContext cxt = (XmlWebApplicationContext) WebApplicationContextUtils.getWebApplicationContext(sc);


UserService userService = (UserService) cxt.getBean("userService");

这是第二种方式,我用这种方式主要是解决一种第一种方式解决不了的情况。举个例子,就是在web项目的Filter中需要获取spring管理的bean时,第一种方式是不能实现的。因为在项目启动时,初始化filter的时候,spring还没来得及扫描bean。这时就可以用这个方式来获取bean了。


3.实现ApplicationContextAware接口


  1. publicclassSpringContextUtilimplementsApplicationContextAware{
  2. // Spring应用上下文环境
  3. privatestaticApplicationContext applicationContext;
  4. /**
  5. * 实现ApplicationContextAware接口的回调方法。设置上下文环境
  6. *
  7. * @param applicationContext
  8. */
  9. publicvoid setApplicationContext(ApplicationContext applicationContext){
  10. SpringContextUtil.applicationContext= applicationContext;
  11. }
  12. /**
  13. * @return ApplicationContext
  14. */
  15. publicstaticApplicationContext getApplicationContext(){
  16. return applicationContext;
  17. }
  18. /**
  19. * 获取对象
  20. *
  21. * @param name
  22. * @return Object
  23. * @throws BeansException
  24. */
  25. publicstaticObject getBean(String name)throwsBeansException{
  26. return applicationContext.getBean(name);
  27. }
  28. }

这种情况可以用在项目中写一个获取bean的工具类,这种方式可以处理事先不确定要获取哪个bean的业务情况。




原创粉丝点击