栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

spring注入的是接口还是实现类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring注入的是接口还是实现类

1.问题来源

对接微信支付时需要自己写PayService接口,没有多想写接口的时候就在接口上加了@Service实现类,结果报错如下,提示该接口的实现类未注入到bean中,显然servie注解加错位置了。

2.详细说明

先来回顾一下刚开始学习spring的时候,利用xml方式将类托管给 spring的bean容器。

2.1 先建立一个类,如下Person类

package com.xu.pojo;

public class Person {
	private String name;
    private Dog dog;
    private Cat cat;
    
    void eat(){
        System.out.println("吃");
    }

}

2.2 编写application.xml文件



       
	
    
 

 此时Person类已经交给了bean容器管理。

  2.3 从容器中获取类(类似于注解中的@Autowired)

public class Test {
    public static void main(String[] args) {
        // 因为我们是用XML装配的bean,需要通过工厂获得类。
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 从容器中获取bean
        Person person = context.getBean("person", Person.class);
        person.eat();
    }
}

可以看出getBean会返回的是一个person类,这里的操作也就相当于

Pereson person = new Person();

显然,通过xml的详细步骤我们可以看出注入容器中的是一个类。

3.@Service注解

因为@Service是将一个类自动注入到spring容器中,通过xml方式我们可以看出getBean中拿到的是类,也就是类的实例化,接口是没有办法实例化的,只有实现类是可以进行实例化的,而所以是加在实现类上的。

4.@Autowired写接口名还是实现类的名字?

该注解类似于new,但是使用了多态中的向上转型,父类的对象指向了子类的引用,即创建了一个接口对象,但这个对象指向实现类。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/878514.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号