Java Spring:将自动连线属性添加到列表

Java Spring:将自动连线属性添加到列表,java,spring,Java,Spring,我在xml配置中定义了一个bean: <bean id="dataService" class="com.sample.DataService" /> 在另一个类中,它被用作资源并放在列表中 @Resource(name = "dataService") private Driver dataService; private List<Driver> drivers = new ArrayList<Driver>() { {

我在xml配置中定义了一个bean:

<bean id="dataService" class="com.sample.DataService" />

在另一个类中,它被用作资源并放在列表中

@Resource(name = "dataService")
private Driver dataService;

private List<Driver> drivers = new ArrayList<Driver>() {
        {
            drivers.add(dataService);
        }
};
@Resource(name=“dataService”)
专用驱动数据服务;
私有列表驱动程序=新的ArrayList(){
{
添加(数据服务);
}
};

我在线
drivers.add(数据服务)上获得
NullPointer异常
我认为dataService不应该为null,因为它是自动连接的。我错过了什么

autowire int在创建bean之后完成

尝试使用构造函数注入并将bean添加到constrator中的列表中

private Driver dataService;

private List<Driver> drivers;
@Autowired
public MyBean(Driver driver){
    drivers = new ArrayList<Driver>();
    drivers.add(driver);
}
专用驱动程序数据服务;
私人名单司机;
@自动连线
公共MyBean(驱动程序){
驱动程序=新的ArrayList();
驱动程序。添加(驱动程序);
}

自动连线int在创建bean后完成

尝试使用构造函数注入并将bean添加到constrator中的列表中

private Driver dataService;

private List<Driver> drivers;
@Autowired
public MyBean(Driver driver){
    drivers = new ArrayList<Driver>();
    drivers.add(driver);
}
专用驱动程序数据服务;
私人名单司机;
@自动连线
公共MyBean(驱动程序){
驱动程序=新的ArrayList();
驱动程序。添加(驱动程序);
}

您可以在适当的位置填充您的收藏:

@Resource(name=“dataService”)
专用驱动数据服务;
私人名单司机;
@施工后
公共作废设置(){
驱动程序=新的ArrayList();
添加(数据服务);
}

您可以在适当的位置填充您的收藏:

@Resource(name=“dataService”)
专用驱动数据服务;
私人名单司机;
@施工后
公共作废设置(){
驱动程序=新的ArrayList();
添加(数据服务);
}

您没有得到
NullPointerException
,因为dataService是
null
。您得到的是
NullPointerException
,因为您试图向
列表添加一个尚未初始化的值。在引用子类中的
驱动程序时,您正在将ArrayList的一个新的匿名子类实例分配给
驱动程序
。如果您从
drivers.add(dataService)
行中删除了“drivers”,则不会得到
NullPointerException

但是,在使用默认构造函数或使用依赖项注入的参数化构造函数初始化对象之前,您仍然会看到
dataService
null
。我会这样做:

@Autowired
private List<Driver> drivers;
@Autowired
私人名单司机;

Spring将自动从
所有的
所需类型的可用bean创建
列表。不需要
@PostConstruct
或其他回调。

您没有得到
NullPointerException
,因为dataService是
null
。您得到的是
NullPointerException
,因为您试图向
列表添加一个尚未初始化的值。在引用子类中的
驱动程序时,您正在将ArrayList的一个新的匿名子类实例分配给
驱动程序
。如果您从
drivers.add(dataService)
行中删除了“drivers”,则不会得到
NullPointerException

但是,在使用默认构造函数或使用依赖项注入的参数化构造函数初始化对象之前,您仍然会看到
dataService
null
。我会这样做:

@Autowired
private List<Driver> drivers;
@Autowired
私人名单司机;
Spring将自动从
所有的
所需类型的可用bean创建
列表。无需
@PostConstruct
或其他回调