Ale*_*dre 5 spring dependency-injection
我想知道是否可以使用Spring来解决在我的程序中手动创建的对象的依赖关系.看看下面的课程:
public class TestClass {
private MyDependency md;
public TestClass() {
}
...
public void methodThaUsesMyDependency() {
...
md.someMethod();
...
}
}
Run Code Online (Sandbox Code Playgroud)
这个TestClass不是一个spring bean,但是需要MyDependency,这是一个spring bean.有没有什么方法可以通过Spring注入这个依赖,即使我在我的代码中使用new运算符实例化TestClass?
谢谢
编辑:我在下面的原始答案中描述的方法是在容器外部完成 DI 的一般方法。对于您的特定需求 - 测试 - 我同意 DJ 的回答。使用Spring的测试支持更合适,例如:
@Test
@ContextConfiguration(locations = { "classpath*:**/applicationContext.xml" })
public class MyTest extends AbstractTestNGSpringContextTests {
@Resource
private MyDependency md;
@Test
public void myTest() {
...
Run Code Online (Sandbox Code Playgroud)
虽然上面的示例是 TestNG 测试,但也有8.3.7.2 中解释的 Junit 支持。上下文管理和缓存。
一般方法:使用@Configurable注释您的类并利用 AspectJ 加载时或编译时编织。有关更多详细信息,请参阅Spring 文档中有关 AOP 的 6.8.1 节。
然后,您可以使用@Resource或@Autowired注释实例变量。尽管它们实现了相同的依赖注入目标,但我建议使用@Resource,因为它是 Java 标准而不是 Spring 特定的。
最后,如果您计划将来序列化或持久化对象,请记住考虑使用瞬态关键字(或JPA 的@Transient )。您可能不想序列化对 DI 存储库、服务或组件 bean 的引用。
| 归档时间: |
|
| 查看次数: |
1207 次 |
| 最近记录: |