在spring中,获取bean有时候会有一定的麻烦,今天小编就和大家分享一下spring中获取bean的几种方式,一起来了解一下吧。
一、实现一个接口ApplicationContextAware,这种方式较为快捷,比较推荐
/** * Spring ApplicationContext 工具类 */ @SuppressWarnings("unchecked") @Component public class SpringUtils implements ApplicationContextAware { private static ApplicationContext applicationContext; public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { SpringUtils.applicationContext = applicationContext; } public static T getBean(String beanName) { if (applicationContext.containsBean(beanName)) { return (T) applicationContext.getBean(beanName); } else { return null; } } public static MapgetBeansOfType(Class baseType) { return applicationContext.getBeansOfType(baseType); } }
二、继承抽象类ApplicationObjectSupport,这个方法旨在调用父类的getApplicationContext()方法,来获取Spring容器对象。
@Service public class SpringContextHelper2 extends ApplicationObjectSupport { //提供一个接口,获取容器中的Bean实例,根据名称获取 public Object getBean(String beanName) { return getApplicationContext() .getBean(beanName); } }
三、通过读取XML文件反射生成对象,适用于Spring独立应用程序,必须要程序通过配置文件初始化Spring才能应用。
ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml"); ac.getBean("userService"); 例: 在application.xml中配置:
四、通过Spring提供的工具类获取ApplicationContext对象
ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc); ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc); ac1.getBean("beanId"); ac2.getBean("beanId");
注:这种方式适用于Spring的B/S系统,通过ServletContext对象获取ApplicationContext对象。然后再通过它获取须要的类实例。
以上就是spring中获取bean的所有内容了,想知道关于Java架构师的更多内容,请一直关注我们的网站吧。