接口的Springdependency injection

好吧,我一直在看一些关于Springdependency injection以及MVC的教程,但我似乎还不明白我们如何才能具体实例化类?

我的意思是,例如,我有一个变量

@Autowired ClassA someObject; 

我如何使spring创建someObject作为ClassB的实例,它将扩展ClassA? 像someObject = new ClassB();

我真的不明白它在Spring中是如何工作的,ContextLoaderListener是自动完成它还是我们必须创建某种配置类,我们确切地指定spring应该将这些类实例化为什么? (在这种情况下,我没有在教程中的任何地方看到过)如果是,那么我们如何指定它们是什么样的? 我们如何配置它在web.xml等工作?

你可以这样做:

接口:

 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(); } } 

现在您已经定义了接口,编写了一个实现并将其标记为组件 – 这里是docs 。 现在唯一剩下的就是告诉spring哪里可以找到组件,这样它们就可以用于自动assembly。

    

您必须在applicationContext.xml文件中指定要创建对象的类的类型,或者如果您使用的是最新版本的Spring,则可以使用@Repository @Component@Service @Repository@Repository任何一个直接注释该类。 在web.xml中,如果使用基于xml的配置,则必须将xml文件的路径指定为servlet的上下文参数。

是的,您必须提供一个context.xml文件,您可以在其中指定实例。 将它提供给ApplicationContext,它将为您自动assembly所有字段。

http://alvinalexander.com/blog/post/java/load-spring-application-context-file-java-swing-application