Java中如何获取Spring中配置的bean
使用spring的 applicationContext.getBeanDefinitionNames() ,来获取命名空间内所有的bean的name,然后根据bean的name获取 bean的class信息 ,根据 需要的bean的包路径 ,来 过滤 出自己需要的bean的信息。
第一种方式:在用spring做一个web项目,有一个需求是在没有servletContext的情况下,根据beanId获得当前容器中的具体bean对象。请问如何实现?注意,这个beanId可能是外部系统传过来的,所以无法用@autowire提前注入。
ac.getBean(beanId);说明:这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的情况。
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,如何在程序中获取Spring配置的bean呢?Bean工厂(com.springframework.beans.factory.BeanFactory)是Spring框架最核心的接口,它提供了高级IoC的配置机制。
写一个类,实现BeanFactoryAware接口,把该接口配置到spring中,然后把getbean方法写成静态的,就可以动态获取了。
如何从当前spring容器中获得bean
1、使用的时候,通过Springfactory.getBean(beanName),就可以获取到bean了。注意:这个是静态方法,直接通过类名去调用。
2、写一个类,实现BeanFactoryAware接口,把该接口配置到spring中,然后把getbean方法写成静态的,就可以动态获取了。
3、beanID);最后提供一种不依赖于servlet,不需要注入的方式。但是需要注意一点,在服务器启动时,Spring容器初始化时,不能通过以下方法获取Spring 容器,细节可以查看spring源码org.springframework.web.context.ContextLoader。
4、在项目运行时吗?这个方法我在用,spring初始化时将容器对象注入到工具类中,运行时用容器获取bean,你可以试试。
5、这实际上是使用了依赖查找来获得对象,并且在servlet代码中硬编码了应用对象的bean名字。这种方式,相当于把spring容器中的bean加载到了servlet容器中,即把spring中的bean放到web.xml的bean中。
静态文件获取spring管理的bean对象
1、方法一:在初始化时保存ApplicationContext对象new ClassPathXmlApplicationContext(applicationContext.xml).getBean(beanId);这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的配置信息。
2、Spring 文件中将bean注入到想要获得该bean的类中。
3、下面是一种方法。这个类需要配置在Spring中。
4、写一个类,实现BeanFactoryAware接口,把该接口配置到spring中,然后把getbean方法写成静态的,就可以动态获取了。
5、第一种方式:在用spring做一个web项目,有一个需求是在没有servletContext的情况下,根据beanId获得当前容器中的具体bean对象。请问如何实现?注意,这个beanId可能是外部系统传过来的,所以无法用@autowire提前注入。
6、spring的上下文可以同时获取两个bean。spring项目,在相同的上下文中创建两个springbean。需要在单独的Configuration文件和单独的访问中创建。
如何获取spring的bean
需要的bean的信息,主要包括:bean的类路径,和bean的name。其中同一个bean的类型下,有可能有多个name。
第一种方式:在用spring做一个web项目,有一个需求是在没有servletContext的情况下,根据beanId获得当前容器中的具体bean对象。请问如何实现?注意,这个beanId可能是外部系统传过来的,所以无法用@autowire提前注入。
//获取spring装配的bean个数 GetApplicationContext.getInstance().getBeanDefinitionNames().length;//逐个打印出spring自动装配的bean。
在项目运行时吗?这个方法我在用,spring初始化时将容器对象注入到工具类中,运行时用容器获取bean,你可以试试。
ac.getBean(beanId);说明:这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的情况。
方法一:在初始化时保存ApplicationContext对象new ClassPathXmlApplicationContext(applicationContext.xml).getBean(beanId);这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的配置信息。
spring获取bean的几种方式
方法一:在初始化时保存ApplicationContext对象new ClassPathXmlApplicationContext(applicationContext.xml).getBean(beanId);这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的配置信息。
第一种方式:在用spring做一个web项目,有一个需求是在没有servletContext的情况下,根据beanId获得当前容器中的具体bean对象。请问如何实现?注意,这个beanId可能是外部系统传过来的,所以无法用@autowire提前注入。
简单地说,正如方法的名称所表达的, getBean() 负责从Spring IOC容器中获取bean实例。首先,让我们定义一些用于测试的Spring bean。
BeanFactory允许InputStream作为构造函数的参数,也可以org.springframework.core.io.Resource接口。
springboot获取getBean方法以及ApplicationContext空指针问题解决_百度...
applicationContext.xml配置文件中配置的名叫adminprojecttypeAction的这个Action实例化失败了。 主要原因就是对应的AdminProjecrTypeAction这个类的构造方法里出现空的对象,导致空指针异常了。
这个问题很明显,你使用了spring,但你的bean并不是从spring容器中拿到。正常的应该是:UserAction userAction=(UserAction )ApplicationContext.getBean(userAction);这样才是属于spring管理,它才能进行依赖注入。
看来你很不会看异常?上面都说了错在哪了,你没看到,看异常的第一行,ICostServiceImpl类的48行?空指针是最好找的问题,肯定是哪个引用指向了一个空的对象。
写一个类,实现BeanFactoryAware接口,把该接口配置到spring中,然后把getbean方法写成静态的,就可以动态获取了。
调用这样方法得到的实例是跟自动注入得到的实例是一样的。但是如果你主动去new这样一个bean,那spring容器是不会帮助你把这个bean里的属性初始化好的。