相信大家经常使用Spring自动注入功能,来完成service层和controller层的交互,但很多人并不知道其中的原理是什么,为什么要这样用。
其实他的本质是一种面向接口编程的实例应用。
什么是面向接口编程,请查看我的博客中的其他文章。
声明接口 public interface TestService{ public void sayHi(); } 实现类1 @Service("First") public class TestServiceImplFirst implements TestService{ public void sayHi(){ System.out.println("Hi,First"); } 实现类2 @Service("Second") public class TestServiceImplSecond implements TestService{ public void sayHi(){ System.out.println("Hi,Second"); }
public class testController{ @Autowired private TestService testService; } } 此时如果只有一个实现类的时候,是可以实现自动注入的。但如果有两个实现类则不行。需要修改testController的代码为 public class testController{ @Autowired @Qualifier("First") private TestService testService; } 则可以自动注入第一个实现类。 这到底是什么原理呢,其实不难,只是这样一个过程。 具体是什么过程呢,请看我博客中的面向接口编程就懂了。