嗯,我一直在看一些关于Spring依赖注入(inject)和MVC的教程,但我似乎仍然不明白我们如何具体实例化类?
我的意思是,例如我有一个变量
@Autowired
ClassA someObject;
我如何让 spring 创建 someObject 作为 ClassB 的实例来扩展 ClassA?像 someObject = new ClassB();
我真的不明白它在 spring 中是如何工作的,ContextLoaderListener 是自动执行的,还是我们必须创建某种配置类,在其中我们确切指定 spring 应该将这些类实例化为什么? (在这种情况下,我在教程中的任何地方都没有看到)如果是,那么我们如何指定以及它看起来如何?我们如何配置它以在 web.xml 等中工作?
最佳答案
你可以这样做:
接口(interface):
package org.better.place
public interface SuperDuperInterface{
public void saveWorld();
}
实现:
package org.better.place
import org.springframework.stereotype
@Component
public class SuperDuperClass implements SuperDuperInterface{
public void saveWorld(){
System.out.println("Done");
}
}
客户:
package org.better.place
import org.springframework.beans.factory.annotation.Autowire;
public class SuperDuperService{
@Autowire
private SuperDuperInterface superDuper;
public void doIt(){
superDuper.saveWorld();
}
}
现在您已经定义了接口(interface),编写了实现并将其标记为组件 - docs here .现在唯一剩下的就是告诉 spring 在哪里可以找到组件,以便它们可以用于 Autowiring 。
<beans ...>
<context:component-scan base-package="org.better.place"/>
</beans>
关于java - 接口(interface)的Spring依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13815139/