Java Spring:将自动连线属性添加到列表
我在xml配置中定义了一个bean: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>() { {
<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
或其他回调