使用spring自动装配后,怎么样使用new而里面装配的属性不报
空指针使用spring自动装配后,怎么样使用new而里面装配的属性不报空指针;
如:
public class PeopleMgmtImpl extends BaseMgmt implements PeopleMgmt{
@Autowired
private PeopleDAO peopleDAO;
public void setPeopleDAO(PeopleDAO peopleDAO){
this.peopleDAO = peopleDAO;
}
如果我在其他地方new了PeopleMgmtImpl ,peopleDAO会报空指针;
有没有好的办法可以解决。不要说peopleDAO也用new,有没有其他方法
------解决方案--------------------目测... ...没有!
------解决方案--------------------用new关键字new出来的对象,jvm会重新分配对应的空间和指针,这完全就不受spring管理。所以spring管理的任何其它的东西你就拿不到,也就会报nullpoint错
------解决方案--------------------既然用了spring就不能再new了。在需要PeopleMgmtImpl 的地方通过spring注入。
------解决方案--------------------这种情况项目中都会写个SpringUtil的。直接获取,然后赋值给DAO的。
比如有些项目是封装的注入不到的,就是封装的包固定扫描。。。。
这时候就必须有个这样的Util了。
一般都是有个监听器,通过ServletContextEvent获取ApplicationContext
然后以后都可以从里面获取bean了。
------解决方案--------------------你如果直接new那就根本没有用到spring容器,所以回报空指针,如果要获得就只有ApplicationContext ac=new Xml.....("bean.xml");这种方法了。。。,当然也要把PeopleMgmtImpl进行容器管理,,别的再没办法 了
------解决方案--------------------自己读配置文件。解析。