Spring 当一个接口多个实现时,怎么注入

时间:2022-07-22
本文章向大家介绍Spring 当一个接口多个实现时,怎么注入,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

代码如下

  • Data.java
package cn.lpe234.demo;

/**
 * Created by lpe234 on 2017/9/26.
 */
public interface Data {
    void out();
}
  • AData.java
package cn.lpe234.demo;

import org.springframework.stereotype.Component;

/**
 * Created by lpe234 on 2017/9/26.
 */
@Service
public class AData implements Data {
    @Override
    public void out() {
        System.out.println("AData");
    }
}
  • BData.java
package cn.lpe234.demo;

import org.springframework.stereotype.Component;

/**
 * Created by lpe234 on 2017/9/26.
 */
@Service
public class BData implements Data {
    @Override
    public void out() {
        System.out.println("BData");
    }
}

进行试验

最简单的--使用 new 创建对象

需要什么类就去new什么类。

@Test
public void testData() {
    Data data1 = new Data() {
        @Override
        public void out() {
            System.out.println("new Data {}");
        }
    };
    Data data2 = new AData();
    Data data3 = new BData();

    data1.out();
    data2.out();
    data3.out();
}

输出

// 
new Data {}
AData
BData

Spring 自动注入

两种方式 @Autowired@Resource.

  • @Autowired 按类型进行注入
  • @Resource按名称进行注入
// 均使用 AData 的实现

@Autowired
@Qualifier("AData")
Data data;

@Resource(name = "AData")
Data getData;