首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DI的类只能通过DI创建吗?

使用DI的类只能通过DI创建吗?
EN

Stack Overflow用户
提问于 2015-06-26 19:39:03
回答 2查看 33关注 0票数 0

我正在使用spring制作一个web应用程序,在web.xml中我定义了上下文-param来查找application-context.xml文件,该文件扫描除控制器之外的所有内容,并且app-servlet.xml只扫描控制器。

application-context.xml将数据源包含到数据库中,我将数据源注入daos中,如下所示:

代码语言:javascript
复制
@Autowired
DataSource dataSource;

现在,如果我尝试在控制器中手工创建一个DAO (我知道我可能应该为此使用服务,但现在只是为了测试目的),我会得到空指针异常,但是当我注入DAO时它会正确加载。

那为什么会发生这种事?dao不是由DI容器管理的,只是数据源,所以为什么我不能手工创建dao呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-26 19:41:25

是的,不受Spring控制的物体是..。超出了Spring的控制范围。

有一些方法可以解决这个问题,例如,允许newed对象获得Spring (例如,字节代码操作)。

票数 1
EN

Stack Overflow用户

发布于 2015-06-26 19:41:57

春豆厂和“新”是正交的:一旦你称之为“新”,它就在你的手中,而不是春天的手中。

您所描述的情况很常见:您希望Spring在生产中管理bean生命周期和依赖关系,但是在测试时,您希望自己使用模拟来实现。我的建议是编写应用程序来使用Spring来创建DI和bean,但是在测试时有用于手动注入模拟的构造函数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31080913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档