SpringBoot @Bean如何加载Bean里面的List<Bean2>而不空指针异常!

如果@ImportResource(locations = "spring.xml")引入xml文件来加载上面的就没问题
"<"bean name="Test" class="com.config.Test"">"
"<"property name="list"">"
"<"bean name="Test2" class="com.config.Test2"">""<"/bean>"
"<"/property">"
"<"/bean">"
如果用@Bean注解来加载
@Bean
public Test getTest(){
Test test = new Test();
List list = new ArrayList();
list.add(Test2);
Test.setList(new Test2());
return test;
}
如果调用Test里的方法,Test的的方法里又执行了Test2里的方法,Test2里的方法又用@Autowired调用了其他,就会空指针异常,请问下怎么解决啊?

1个回答

Test、Test2 均使用spring来管理, Test 代码这样写

@Autowired
private List<Test2> list;
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Springboot加载bean查找父类
Springboot加载bean的时候,有时候有些类不再spring.factory文件中,但是声明的@Bean方法却能加载bean,spring是怎么处理的呢,我们以spring-webflux包中的WebFluxConfigurationSupport类为例说明,这个类有许多的@bean方法,其中之一: @Bean public DispatcherHandler webHandler...
Websocket--注入Bean,空指针异常
在websocketEndpoint中,使用@Autowired一些列注解注入Bean时候,一直无法注入,包空指针。 环境:JDK 8     Tomcat:8.5  SpringBoot 1.5.4 其中尝试了很多种方式,都无法满足,第一种解决解决办法, @ServerEndpoint(value=&quot;/websocketTest/{userId}&quot;,configurator=SpringC...
bean的加载(十一)初始化bean
我们知道Spring在配置bean的时候有一个init-method属性,这个属性的作用是在bean实例化前调用init-method指定的方法来根据用户业务进行相应的实例化,首先看下这个方法的执行位置,Spring中程序已经执行过bean的实例化,并进行了属性填充,而就在这时将会调用用户设定的初始化方法。 protected Object initializeBean(final String
bean的加载(七)创建bean
常规bean的创建时在doCreateBean中完成的,我们看看这个方法protected Object doCreateBean(final String beanName, final RootBeanDefinition mbd, final Object[] args) { // Instantiate the bean. BeanWrapper instanceWrapper =
加载bean
this.reader.loadBeanDefinitions(resource),这句代码是整个资源加载的切入点。(1)封装资源文件。当进入XmlBeanDefinitionReader后首先对参数Resource使用EncodedResource类进行封装。(2)获取输入流。从Resource中获取对应的InputStream并构造InputSource。(3)通过构造的InputSource...
bean的加载
bean的加载过程比bean的解析复杂的多,主要是AbstractBeanFactory下面的doGetBean方法实现1、转换对应的beanName传入的参数可能是bean的别名,也可能是FactoryBean,所以需要在这里转换2、尝试从缓存中加载单例单例在容器中只会创建一次,后面直接获取bean就行了,首先尝试从缓存中拿,如果不成功就从singletonFactories,因为创建单例存在依...
如何把List里面的值取到Bean里面
各位大哥,rn小弟现在在做一个小功能,把CSV里面的数据读取到页面显示出来,只用JSTL标签,但是读取过程中是把数据一整条(包括逗号)读出来加到LIST里面的一个空间内,所有想把各个元素分离并加到bean里面,在页面能用JSTL的表示出来。rn哪位大哥提供下思路?rn谢谢
Structs引入bean时报空指针异常
我现在搭建一个简单的SSH框架的实例,结果在Action中引入Bean的时候报空指针异常,希望有知道的回复下,万分感谢。rnrn[img=https://img-bbs.csdn.net/upload/201405/14/1400070467_978529.png][/img]rnrnweb.xml文件的内容:rn[code=text]rnrnrn SpringStructIBatisrnrn rn contextConfigLocationrn rn classpath:spring/service/spring-service.xmlrn rn rn rn org.springframework.web.context.ContextLoaderListenerrn rnrn rn struts2rn org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterrn rn rn struts2rn *.actionrn rnrn rn springrn org.springframework.web.servlet.DispatcherServletrn rn contextConfigLocationrn /WEB-INF/applicationContext.xmlrn rn rnrnrn[/code]rnrnapplicationContext.xml的内容:rn[code=text]rnrnrnrn rn rn rn rn rn[/code]rnrnstruts.xml的内容:rn[code=text]rnrnrnrnrnrn rn rn /jsp/test.jsp rn rn rn rnrn[/code]rnrnspring-service.xml的内容:rn[code=text]rnrnrnrn rn rn rn rn rn rn rn rn rn[/code]rnrnStudent.java的内容:rn[code=java]rnpackage com.comprehensive.model;rnrnimport java.io.Serializable;rnrnpublic class Student implements Serializablernrn private static final long serialVersionUID = 1L;rn rn private int num;rn private String name;rn private String address;rn private char sex;rn public int getNum() rn return num;rn rn public void setNum(int num) rn this.num = num;rn rn public String getName() rn return name;rn rn public void setName(String name) rn this.name = name;rn rn public String getAddress() rn return address;rn rn public void setAddress(String address) rn this.address = address;rn rn public char getSex() rn return sex;rn rn public void setSex(char sex) rn this.sex = sex;rn rn rn public void print()rn System.out.println("========");rn rnrnrn[/code]rnrnTestAction.java的内容:rn[code=java]rnpackage com.comprehensive.action;rnrnimport com.comprehensive.model.Student;rnimport com.opensymphony.xwork2.ActionSupport;rnrnpublic class TestAction extends ActionSupport rnrn private static final long serialVersionUID = 1L;rn rn private Student student;rn rn public Student getStudent() rn return student;rn rnrn public void setStudent(Student student) rn this.student = student;rn rnrn public String toTestAction()rn System.out.println("=======ceshi=======");rn //引入的时候会报错rn student.print();rn return SUCCESS;rn rnrnrnrn[/code]rn
springboot 加载完bean之后的初始化
一般情况下,我们的项目在刚启动的时候就需要初始化一些数据,特别有些是需要查询表的情况下,这时候我们就要用到springboot的初始化了, 我自己的个人网站就用到了这种技术 我们需要实现 CommandLineRunner 接口并在类上面添加 @Component 和 @Order(2) 注解 , 并重写run()方法,springboot会自动扫描这些注解,即可完成初始化, 注意:这个初始...
[SpringBoot] 通过注解加载自定义的Bean
1.在springboot工程中,默认会扫描启动类所在包路径下面的所有bean,比如启动类下面还有很多的包路径,里面定义了一些类,通过@Componount’注解指定的类会被加载到bean容器,但是如果自己有一个类,达成了jar包不在启动类下面,怎么加载呢? 2.可以使用注解的形式,比如 @Autwire ClassName classname; 但是如果有多个的话,这样就不...
Bean、List<Bean>、Json、Map、Xml相互转换
       系统交互中,经常会遇到各种形式的参数传递,XML、Map、Json等等,今天整理了一个涵盖各种类型转换的工具类,与大家分享分享!      package org.ccnu.edu.util; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans...
工具类:解析json格式java bean,List<bean>
需要jar:fastjson-1.1.34.jar 1、测试bean类:User.java public class User{ private int id; private String name; public User() { } public User(int id,String name) { this.id = id; this.name = name; }
spring的bean工厂加载完找不到bean
获取bean工厂简略代码rnprivate static ApplicationContext overrideApplicationContext;rnpublic static void main(String[]args)rn rn ApplicationContext context;rn if (overrideApplicationContext != null)rn rn context = overrideApplicationContext;rn elsern rn rn BeanFactoryLocator bfl = ContextSingletonBeanFactoryLocator.getInstance();rn BeanFactoryReference bf = bfl.useBeanFactory("OBJ_REGISTRY");rn context = (ApplicationContext)bf.getFactory();rn Dao dao =(Dao) context.getBean("dao",Dao.class);//这里找不到bean了rn rnrnspring 的引用文件beanRefContext.xml加载ok.rnrn rn rn rn classpath*:/spring/applicationContext.xmlrn classpath*:/spring/jmsContext.xmlrn classpath*:/spring/dataAccessContext.xmlrn classpath*:/spring/serviceContext.xmlrn classpath*:/spring/actionContext.xmlrn rn rn rn rnrn运行之后就找不到rnclasspath*:/spring/dataAccessContext.xml这个文件里的bean了rn Dao dao =(Dao) context.getBean("dao",Dao.class);//这里找不到bean了
bean的加载(六)准备创建bean
Spring源码中,我们不可能指望在一个函数中完成一个复杂的逻辑,而且我们跟踪了那么多Spring代码,经历了那么多函数,或多或少也发现了一些规律:一个真正干活的函数其实是以do开头的,比如doGetObjectFromFactoryBean;而给我们错觉的函数,比如getObjectFromFactoryBean,其实只是从全局角度去做一些统筹的工作。而这个规则对于createBean也不例外,
bean的加载-缓存中获取单例bean
单例只会在容器里面创建一次,后续获取bean直接从缓存中尝试获取,如果没有在尝试从singletonFactories中获取,创建bean的时候可能会出现依赖注入的情况,为了避免循环依赖,在还没有创建bean之前就会把bean的ObjectFactory加到缓存,依赖时,直接使用ObjectFactory就可以了1、具体的实现方法2、主要分为以下步骤一、检查缓存中是否存在实例二、实例如果为空,则锁...
bean的加载-获取单例和准备创建bean
1、获取单例如果缓存中不存在已经加载的单例bean,就需要重头开始bean的加载过程,在spring中AbstracBeanFactory的 getSingleton的重载方法实现了bean的加载1.1、检查缓存是否已经加载过,spring3.2是直接使用synchronized锁定需要同步的变量,4.0之后Object singletonObject = this.singletonObject...
bean的加载(八)创建bean的实例
下面我们一步步分析doCreatBean方法,首先从createBeanInstance开始。 protected BeanWrapper createBeanInstance(String beanName, RootBeanDefinition mbd, Object[] args) { // Make sure bean class is actually resolved at th
bean的加载(九)记录创建bean的ObjectFactory
在doCreateBean中有这样一段代码: //是否需要提早曝光:单例&允许循环依赖&当前bean正在创建中,检测循环依赖 boolean earlySingletonExposure = (mbd.isSingleton() && this.allowCircularReferences && isSingletonCurrentlyInCreation(beanName));
springboot启动时获取Bean
在springboot中我们通过配置类来加载配置信息,而在配置类中是无法加载Bean的。我们有时候需要在项目启动时加载数据库数据,这就造成无法使用配置的数据源,而spring给我们提供了一个方法,就是实现CommandLineRunner。@Component @Order(value = 2) public class DroolsAutoDbRule implements CommandLin...
SpringBoot定制自己的bean
springboot每次使用都是直接autowire注入进去的,然后注入进去并不能set &amp; get 来修改属性,这高度封装就产生了一个问题。像之前用Spring,在xml文件配置一下即可,但SpringBoot呢? 方法一: 以最常见的DataSource数据库为例。一般注入DataSource直接在application.properties配置一下数据源即可以使用,返回的为Spr...
springboot注入bean的问题
[code=java]@ServerEndpoint(value = "/websocket")rn@Componentrnpublic class WebSocketrnrn @Autowiredrn private IntegralDao integralDao; rn rn @OnOpen rn public void onOpen() rn System.out.println("连接已完成"); rn rn rn @OnMessage rn public void say(String message, Session session) rn try rn Integral integral = integralDao.findIntegralByUserName(message);rn session.getBasicRemote().sendText(String.valueOf(integral.getState())); rn catch (IOException e) rn e.printStackTrace(); rn rn [/code]rnrn
springboot初始化bean扫描
这里主要是扫描自定义注解 public class AnnotationScan implements ApplicationListener{ @Autowired RedisTemplate redisTemplate; private final static Logger logger = LoggerFactory.getLogger(Annotation
Springboot学习-bean的定义
Springboot以其强大的功能而广受开发者的喜爱,其中非常优秀的一个功能就是注解非常智能化,本文探讨springboot的自动发现功能。spring框架中用来定义bean的注解有@Repository,@Component,@Bean(@Configuration注解的类中),@Controller,@Service,等注解。这些注解用来标记对应的类是一个bean,然而,如何在spring容器...
cfx bean list
cfx处理JavaBean类型与List的集合类型,工程师utf-8编码
SpringBoot里@autowired的Bean是从哪儿获得的
按照我现有的知识水平,我觉得@Autowired 自动装配时,注入的Bean可能来自rn1,xml里定义的rn2,使用@component注解让Spring自动创建的rn但是今天看到一个代码,rn@Autowiredrn private UserDao userDao;rn其中UserDao来自rnpublic interface UserDao extends CrudRepositoryrn无论在哪儿也找不到这个Bean是在哪儿定义的,但是代码还能正常工作。rn于是猜测rn猜测1 @Autowired除了自动装配外,如果找不到Bean还会创建一个Beanrn猜测2 这是 CrudRepository导致的, CrudRepository会自动创建一个Beanrn求解释求科普
SpringBoot里的Bean的初始化与销毁顺序
我今天学习到SpringBoot里面自定义Bean的初始化与销毁方法,我先总结一下我学到的四种方法: 方法一: 指定init-method 和 destory-method 方法二: 通过让 Bean 实现 InitializingBean 接口,定义初始化逻辑                                              DisposableBean 接口,定义销毁...
Spring bean 加载的先后顺序。。
[code=Xml]rnrn rn rn rn rnrn[/code]rnrn不能成功加载,而必须反a放到b前面,这是什么原因。rnrn找了一些资料,也没有具体的说明。rnrn请高手指点。rnrnClassPathXmlApplicationContext
spring框架bean加载 一
Spring 框架源码解析:类加载过程原理 spring框架使用很广泛,既然使用很多,那么我们就应该对其了解,便于在工作中能更好的使用,遇到问题我们可以更快的排查,或者难道大家知道它是如何工作的吗?后续的几篇文章会介绍spring 加载xml并加载bean的过程,会有部分代码以及流程图,如有不对的地方大家还应该指出。 我们先上一段我们的测试代码:public class TestService
bean的加载(十)属性注入
在了解循环依赖的时候,我们曾经反复提到了populateBean这个函数,也多少了解了这个函数的主要功能就是属性填充,那么如何实现填充呢? protected void populateBean(String beanName, RootBeanDefinition mbd, BeanWrapper bw) { PropertyValues pvs = mbd.getPropertyValu
spring bean加载原理
简单的分析了一下spring bean的加载原理,属于个人的理解,源码比这个要复杂的多: spring的配置文件applicationContext.xml的内容如下: beans> bean id="userDao" class="com.qjl.study.spring.dao.impl.UserDaoImpl">bean> beans> 非web环境下我们通常这么来
多重加载Bean方式
可以从Bean定义、名称、注入、生命过程等方面分类也可以从基于配置方式进行分类。大体上可以分为以下图中几种类型的加载方式。Bean定义方面:声明Bean,为了以后的调用,大部分用来定义类对象和方法 基于Xml:最简单的方式,直接在xml文件中配置id并在java里获取Id。 有三种获取方式,原理相同都是在xml里设置Bean的Id,也可以通过factory-method方式获取 需要注意构造函数和...
Spring bean的加载过程
  对于加载bean的功能,Spring的调用方式是 MyBean bean = bf.getBean(&quot;myBean&quot;);而我们从这一方法进入寻找bean的加载过程。发现过程如下图所示,共9个步骤 1.转换beanName:传入的参数beanName可能是别名、FactoryBean。FactoryBean解析去掉修饰符,也就是如果是name=&quot;&amp;amp;aa&quot;,会解析为name=&quot;aa&quot;; ...
spring的bean解析与加载
也不知道有多少时间深入学习spring,从昨天开始尝试将笔记写在博客上。做一步看一步吧。加油!spring bean的解析与加载简单说: 通过web.xml文件读取到配置文件位置,然后进行读取配置文件。 通过XmlBeanFactory进行解析。 然后由defaulteListablleBeanFactory进行bean注册。 经过查证XmlBeanFactory已经过时,建议使用DefaultL
Spring bean加载方式
在加载spring的bean的xml文件,生成spring容器。得到bean对象的几中用法。 在srping中可以配置一个xml文件,但是为了解耦也可以配置多个xml文件。 通过spring容器直接生成bean对象。   1、用ApplicationConetx上下文对象来加载application.xml文件。   解析一个xml文件: 比如说: Appl...
Spring源码解析-bean加载
本文介绍bean的加载,对应着代码: Cat cat = (Cat) bf.getBean(&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;testCat&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a
Bean 的加载时机和延迟加载
在ssh框架中,我们的beans.xml(或者spring.xml)里配置了bean的构造条件。 这里的bean默认都是在服务器启动时就直接加载到内存里的。 即我们类里的相关这些bean的set方法在服务器启动时候就立即调用,加载构造bean对象。 [code=&quot;java&quot;] [/code] 但是如果我们加了 lazy-init=&quot;true&quot; 后...
spring加载bean原理。
Spring管理bean: 1.从web.xml里面配置的ContextLoaderListener开始。 2.ContextLoaderListener继承ContextLoader 3.执行ContextLoaderListener的contextInitialized方法,获得servletContext. 4.把servletContext传入ContextLoader的initW
2.Spring Bean的加载过程
贯穿整个Spring的核心是什么?毫无疑问,那就是Bean了。那么什么是Bean呢?可能很多初学者都搞不清,从字面的意思上来说Bean是豆子的意思,当然在Spring框架中不是这个意思。Bean是一种特殊类,是一种可重用的组件,它们都可以称之为Bean。 Spring Bean简单应用 定义实体类 public class User { private String name;...
Spring源码解析之Bean的加载
本文基于Spring4.2.7版本,由于Bean的处理是Spring的核心模块,所以版本之间也没有太大的差异从源码中看端倪相信大家多少有些基本的概念了,我们就从源码中来看看Spring是如何创建Bean的
Spring Bean加载(一)
Spring Bean加载、注册过程源码解析
相关热词 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天 c#字典序排序 c# 截屏取色 c#中的哪些属于托管机制