Java 如何从spring容器中获取注入的bean对象
1.使用场景
控制层调用业务层时,控制层需要拿到业务层在spring容器中注入的对象
2.代码实现
importorg.apache.struts2.ServletActionContext; importorg.slf4j.Logger; importorg.slf4j.LoggerFactory; importorg.springframework.context.ApplicationContext; importorg.springframework.context.support.ClassPathXmlApplicationContext; importorg.springframework.web.context.WebApplicationContext; importorg.springframework.web.context.support.WebApplicationContextUtils;
/** *从spring容器中获取注入的bean对象 *@explain必须获取到ServletContext对象,Controller层以struts2为例 *@authorMarydon *@creationTime2018年6月1日上午10:06:49 *@version1.0 *@since *@emailmarydon20170307@163.com */ publicfinalclassBeansUtils{ privatestaticfinalLoggerlogger=LoggerFactory.getLogger(BeansUtils.class); privatestaticApplicationContextctx; privatestaticWebApplicationContextwebCtx; //静态代码块:加载该类时会被运行的代码 static{ if(ctx==null){ try{ //入参需要拿到ServletContext对象 webCtx=WebApplicationContextUtils .getRequiredWebApplicationContext(ServletActionContext.getServletContext()); logger.info("从web.xml容器中加载spring-config.xml"); }catch(Exceptione){ logger.info("直接加载spring-config.xml"); } if(webCtx==null) //你可以自定义spring配置文件的文件名 ctx=newClassPathXmlApplicationContext("spring-config.xml"); } } /** *通过beanID获取bean实例 * *@parambeanID *bean的代码 *@return返回对应的实例 *@throwsRuntimeException *bean没有定义 */ publicstaticObjectgetBeanInstance(StringbeanID)throwsRuntimeException{ logger.info("在spring容器中获取Bean对象ID="+beanID); Objectobj; if(BeansUtils.ctx==null){ if(BeansUtils.webCtx.containsBeanDefinition(beanID)){ obj=BeansUtils.webCtx.getBean(beanID); }else{ logger.info("beanID="+beanID+"没有定义"); thrownewRuntimeException(beanID+"没有定义!"); } }else{ if(BeansUtils.ctx.containsBeanDefinition(beanID)){ obj=BeansUtils.ctx.getBean(beanID); }else{ logger.info("beanID="+beanID+"没有定义"); thrownewRuntimeException(beanID+"没有定义!"); } } returnobj; } }
以上就是Java如何从spring容器中获取注入的bean对象的详细内容,更多关于Java获取bean对象的资料请关注毛票票其它相关文章!