精华内容
下载资源
问答
  • 1、个实现类实现多个接口 例如:serviceImpl implements Interface1,Interface2 在controller中 @AutowiredInterface1 只能调用Interface1接口的方法 总结,注入单个接口,只能调用对应的接口方法 2、个...

    1、一个实现类实现多个接口

    例如:serviceImpl implements Interface1,Interface2

    在controller中

    @Autowired  Interface1

    只能调用  Interface1接口的方法

    总结,注入单个接口,只能调用对应的接口方法

    2、一个接口多个实现类,注入指定的实现类

    例如:Interface 接口有两个实现类 InterfaceImpl1 和 InterfaceImpl2

    //实现类1

    @Service
    public class InterfaceImpl1 implements Interface {

    //实现类1

    @Service
    public class InterfaceImpl2implements Interface {

    //业务类,controller

    @Autowired  Interface 

    private Interface interface;

    按照上面的写法,启动服务时会报错

    解决方法

    1.指明实现类的优先级,注入的时候使用优先级高的实现类

    //实现类1

    @Service

    @Primary   //同一个接口的实现类,最多只能有一个添加该注解
    public class InterfaceImpl1 implements Interface {

    在controller中注入接口,默认使用的是Primary  标注的实现类的方法

    2.通过 @Autowired 和 @Qualifier 配合注入

    @Autowired
    @Qualifier("interfaceImpl1")
    Interface1 interface1;    //正常启动

    3.使用@Resource注入,根据默认类名区分

    @Resource(name = "interfaceImpl1")
    Interface1 interface1;    //正常启动

    4.使用@Resource注入,根据@Service指定的名称区分

    需要在实现类@Service后设置名称:

    @Service("s1")
    public class InterfaceImpl1 implements Interface {

    @Resource(name = "s1")
    Interface1 interface1;    //正常启动

     

     

    spring常用注解说明

    • @Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。
    • @Scope注解 作用域
    • @Lazy(true) 表示延迟初始化
    • @Service用于标注业务层组件、 
    • @Controller用于标注控制层组件(如struts中的action)
    • @Repository用于标注数据访问组件,即DAO组件。
    • @Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
    • @Scope用于指定scope作用域的(用在类上)
    • @PostConstruct用于指定初始化方法(用在方法上)
    • @PreDestory用于指定销毁方法(用在方法上)
    • @Resource 默认按名称装配,当找不到与名称匹配的bean才会按类型装配。
    • @DependsOn:定义Bean初始化及销毁时的顺序
    • @Primary:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
    • @Autowired 默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用
    • @Autowired @Qualifier("personDaoBean") 存在多个实例配合使用

     

     

    展开全文
  • 一个接口多个实现,指定实现类

    万次阅读 2018-04-14 21:49:38
    目的:一个接口多个实现时,根据不同的条件调用不用的实现1、有如下接口public interface Pay { public Object pay(Map<String,Object> map); }2、有如下两个实现实现一:@Service("weixinPay&...

    目的:一个接口多个实现时,根据不同的条件调用不用的实现

    1、有如下接口

    public interface Pay {
    	public Object pay(Map<String,Object> map);
    }

    2、有如下两个实现

    实现一:

    @Service("weixinPay")
    public class WeixinPay implements Pay{
        @Override
        public Object pay(Map<String, Object> map){
            return "weixinpay";
        }
    }

    实现二:

    @Service("aliPay")
    public class AliPay implements Pay{
        @Override
        public Object pay(Map<String, Object> map){
            return "alipay";
        }
    }

    3、根据不同的条件调用不同的实现

    方法一:

    @Resource(name="weixinPay")
    ShopPay weixinPay;
    	
    @Resource(name="aliPay")
    ShopPay aliPay;

    方法二:

    @Autowired
    @Qualifier("weixinPay")
    ShopPay weixinPay;
    
    @Autowired
    @Qualifier("aliPay")
    ShopPay aliPay;


    展开全文
  • 而抽象在代码实现方面发挥作用,可以实现代码的重用,例如,模板方法设计模式是抽象一个典型应用,假设某个项目的所有Servlet都要用相同的方式进行权限判断、记录访问日志和处理异常,那么就可以定义一个...

    接口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约。而抽象类在代码实现方面发挥作用,可以实现代码的重用,例如,模板方法设计模式是抽象类的一个典型应用,假设某个项目的所有Servlet类都要用相同的方式进行权限判断、记录访问日志和处理异常,那么就可以定义一个抽象的基类,让所有的Servlet都继承这个抽象基类,在抽象基类的service方法中完成权限判断、记录访问日志和处理异常的代码,在各个子类中只是完成各自的业务逻辑代码,伪代码如下:

    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public abstract class BaseServlet extends HttpServlet {
        public final void service(HttpServletRequest request, HttpServletResponse response)
                throws IOException, ServletException {
            // 记录访问日志
            // 进行权限判断
        }

        protected abstract void doService(HttpServletRequest request, HttpServletResponse response)
                throws IOException, ServletException;
            // 注意访问权限定义成protected,显得既专业,又严谨,因为它是专门给子类用的
    }

    class MyServlet1 extends BaseServlet {
        protected void doService(HttpServletRequest request, HttpServletResponse response)
                throws IOException, ServletException {
            // 本Servlet只处理的具体业务逻辑代码
        }
    }

    父类方法中间的某段代码不确定,留给子类干,就用模板方法设计模式。

    备注:这道题的思路是先从总体解释抽象类和接口的基本概念,然后再比较两者的语法细节,最后再说两者的应用区别。比较两者语法细节区别的条理是:先从一个类中的构造方法、普通成员变量和方法(包括抽象方法),静态变量和方法,继承性等6个方面逐一去比较回答,接着从第三者继承的角度的回答,特别是最后用了一个典型的例子来展现自己深厚的技术功底。

    展开全文
  • 可以实现多个接口,但是只能继承
    public class SpbmServiceImpl extends BasicServiceImpl implements ISpbmService,ISpbmDao
    {
    
    }

    一个类可以实现多个接口但是只能实现一个类

    展开全文
  • spring注解识别一个接口多个实现类方法,在引用中匹配到正确的实现类接口如下:public interface Filter { public String doFilter(String param); }接口实现类:public class TimeFilter implements Filter {...
  • 多继承会产生钻石问题(菱形继承) B 和 C 继承自 A,且都重写了 A 中的同个方法 ...接口中的方法是抽象的,类实现可以多个接口 假设这些接口中存在相同方法(方法名与参数相同),...
  • 一个接口多个实现类 - Spring 的 @Autowired 和 @Qualifier 配合注入 1. 首先, Interface1 接口有两个实现类 Interface1Impl1 和 Interface1Impl2 Interface1 接口: package com.example.service; /** * ...
  • 接口 接口中的抽象方法只能是 public 类型的,并且默认即为 public abstract 类型。
  • 在java中 不能继承多个接口,但是可以通过个接口继承多个接口实现。具体代码如下public interface LanguageBeharvior { public void language(); }public interface SpeakBeharvior { public void ...
  • 如题所述,当一个接口多个子类实现时,Spring框架怎样从容器中正确取出我们想要的实例呢? (定义了CommonService接口,同时有个两个子类实现了这个接口同时两个实现类上都加了@Service注解,表明在项目启动...
  • 接口或服务 public interface CacheServiceextends Serializable, K extends Serializable> { ...实现类1 @Service("redisCacheService") public class RedisCacheServiceImpl implements CacheService {
  • @Autowired一个接口多个实现类

    万次阅读 2019-04-24 17:25:34
    @Autowired是spring的注解,默认使用的是byType的方式向Bean里面注入相应的Bean。例如: @Autowired private UserService userService; 这段代码会在初始化的时候...但是如果UserService这个接口存在多个实现类的时...
  • 所以用到了一个接口多个实现类,每个实现类查询不同数据库。记录一下接口是怎么调用不同的实现类的。 定时任务: 定时任务二: 同时继承了实现类AbstractSendDataTask   applicationContext.xml...
  • 如果一个接口有2个不同的实现, 那么怎么来Autowire个指定的实现? 举个例子: 1、接口:ILayer public Interface ILayer{ ...... } 2、实现类:ImageLayerImpl ,实现了ILayer接口。 @Service(...
  • 多说: ...三、建立实现多个实现:用于实现具体方法(注意:实现需要注入容器) 四、建立操作类型工厂 五、使用方法示例:这个标注的对象就是根据请求参数的类型来动态选择的。 ...
  • 最近写了前台个管理模块,后来也是我来写,采用四层架构,在定义接口时,基本是一个接口对应实现类,使用@Autowired注解,但我想如果有多个实现类,如何注解,来梳理一下 举例说明: 1、接口:IAnimal 2、实现...
  • 实现动态调用,方法有很种,在这里记下种我觉得比较简单的,方便以后翻阅。 接口类 package com.su.mybatis.oracle.service; public interface TestService { String firstStep(); String secondStep()...
  • 1.比如有一个接口如下: [java] view plain copy public interface Filter {   public String doFilter(String param);  }  2.有如下接口实现类: ...
  • Spring的注解@Qualifier小结 近期遇到spring的注解问题,现将遇到的问题记录下来,以供遇到同样问题的童鞋解决~ 先说明下场景,代码如下:有如下接口:public ...} 同时有下述两个实现类 EmployeeServi...
  • 一个接口多个实现类的调用方式

    千次阅读 2019-02-25 10:27:21
    A用户调用Aservice实现类,B用户调用Bservice实现类 1、使用switch-case public static Person printPerson(int kind) { Person p = null; switch (kind) { case FIRST: p = new A(&quot;人1&quot;);...
  • 方法 的方式,通过ctrl+alt+b快捷键发现接口多个实现类 这种情况恰可以使用debug,来查看具体调用的是哪个实现类的方法,操作如下: 1.打断点 2.以debug模式运行项目 3.在断点处,复制想要查看的代码,并在...
  • 一个接口能继承另一个接口,和之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。 下面的Sports接口被Hockey和Football接口继承: // 文件名: Sports.java public interfa
  • 一个接口多个实现类,当调用接口中的方法时,如何判定用的是哪个实现类? 1.直接new个子类实例,这样肯定知道用的哪个实例。 2.定义接口类型的变量,用某个实例去初始化,这样也可以确定用的哪个实例。 代码...
  • 根据前台返回的不同参数,选择一个接口不同的实现类实现不同业务逻辑,我们用到了proxy代理。 首先是spring.xml 配置文件 如下:(proxy 代理 ××ServiceImpl实现类) 代理代码 ...
  • //一个子类可以同时继承抽象实现接口 //接口 interface A{ public static final String FLAG="天河学院"; public abstract void print(); public abstract String getInfo(); } //抽象 ...
  • 商业转载请联系作者获得授权,非商业转载请注明出处。“接口是个规范”,这句没错。“不如直接就在这个中写实现方法岂不是...如果多个类实现一个接口,程序怎么知道他们是有关联的呢?既然不是实现,...
  • //实例化接口的时候定义选择哪个实现类 WidgetInterface wi = new InputWidegt(flowInstanceService,orgService); //以下会调用 InputWidegt 实现方法进行处理 String tagSign = wi.handleWidgetMacro(tagSign, ...
  • java 支持多继承,但可以实现多个接口,间接的实现多继承,也可以通过内部。 参考代码:MultiExtendsTest // 测试间接的实现多继承 public class MultiExtendsTest extends D implements A, B, C { @...
  • 、简单例子: 1. 直接new一个实例,这样肯定知道用的哪个实例 ...举例子:A接口,A1,A2,A3实现A接口,有一个eat方法,A1:吃饭,A2:吃鱼,A3:吃肉 需要得到"吃肉",那么 A a = n
  • 接口存在两个实现类的时候必须指定其中一个来注入 //@Autowired //@Qualifier("queryServiceOne") @Resource(name = "queryServiceOne") private QueryService queryServiceOne; @...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,486,716
精华内容 994,686
关键字:

一个类不能同时实现多个接口