-
Spring一个接口多个实现类,一个实现类实现多个接口,注入方法
2019-06-26 15:32:171、一个实现类实现多个接口 例如:serviceImpl implements Interface1,Interface2 在controller中 ...2、一个接口多个实现类,注入指定的实现类 例如:Interface 接口有两个实现类 Interfac...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") 存在多个实例配合使用
-
一个类可以实现多个接口但是只能实现一个类
2019-04-10 16:05:39一个类可以实现多个接口,但是只能继承一个类public class SpbmServiceImpl extends BasicServiceImpl implements ISpbmService,ISpbmDao { }
一个类可以实现多个接口但是只能实现一个类
-
定义一个类实现Serializable接口
2016-09-03 19:01:52一、序列化简介 序列化是Java中的一个非常重要的...如果想让一个类可被序列化,那么这个类必须实现Serializable接口,这个接口本身没有任何方法和属性,它的作用只是为了标示一个类可以被序列化,这一个特性好像在J一、序列化简介
序列化是Java中的一个非常重要的特性,通过序列化机制,我们可以将Java的对象变成流,或者存储在硬盘中,或者通过网络传输给网络的其他用户。序列化是J2EE中的一个重要的技术。
二、Serializable接口
如果想让一个类可被序列化,那么这个类必须实现Serializable接口,这个接口本身没有任何方法和属性,它的作用只是为了标示一个类可以被序列化,这一个特性好像在Java里用的比较多,比如克隆也是采用了相同的机制。Serializable表明这个类可以直接写入一个流而进行存储,网络传输等操作。
Serializable表示这个类可以被序列化,告诉JVM这个类可以进行持久化操作,具体的内容你可以搜索一下序列化的知识
因此,如果我们想创建一个可以被序列化的类,我们可以像下面的代码一样做。public class OrderPayDataVo implements Serializable { /** * 订单号 * */ public String orderNo; /** * 订单总金额 */ public double payPrice; /** * 商品名称(课程包名称) * */ public String title; /** * 订单剩余有效时间 * */ public long leftPayTime; /** * 支付类型:1是支付宝,2是微信, 3是扫码支付 * */ public int payType; }
然后我们可以定义一个方法将实体类存入bundle中:public void startOrderPay(OrderPayDataVo orderPayDataVo){ //跳去相应的支付方式 Bundle bundle = new Bundle(); bundle.putSerializable(AppConstant.INTENT_ORDER_COURSE_PAY, orderPayDataVo); }
之后我们就可以获取实体类了:private void initData() { Bundle bundle = getIntent().getExtras(); CoursePayPojo mCoursePayPojo = (CoursePayPojo) bundle.getSerializable( AppConstant.INTENT_ORDER_COURSE_PLAN); if (null == mCoursePayPojo || TextUtils.isEmpty(mCoursePayPojo.getOrderNumers())) { T.getInstance(this).s("订单生成失败,请重新购买"); finish(); return; } // 从而获取实体类中的属性了 mPayPrice = mCoursePayPojo.getPayPrice(); mOrderNo = mCoursePayPojo.getOrderNumers(); mLeftPayTime = mCoursePayPojo.getLeftPayTime(); mTitle = mCoursePayPojo.getCourseName(); }
我这只是对序列化做的简单解释以及实际使用,更深层次的序列化学习就需要查阅相关资料了,我就不班门弄斧了。
-
一个普通类如何不实现一个接口的所有方法
2019-04-21 12:12:42再定义一个普通类Ldemo,先实现两个方法,因为没有实现所有的方法,报红了. 如果实现了所有的方法就会恢复正常 接下来我们创建一个抽象类Text,因为抽象类是一种未完成的类,不需要完成接口中的所...接口是一种规范,使得别人在实现接口的时候需要完成接口中那未实现的方法,普通类一旦实现接口就必须完成接口内所有未实现的方法,但是可以通过别的方式只去实现部分方法:
先定义一个Demo接口,写入三个方法
再定义一个普通类Ldemo,先实现两个方法,因为没有实现所有的方法,报红了.
如果实现了所有的方法就会恢复正常
接下来我们创建一个抽象类Text,因为抽象类是一种未完成的类,不需要完成接口中的所有方法,抽象类还有一个特点就是子类在继承的时候可以不重写非抽象方法,所以我们先让Text实现Demo接口的两个方法,于是这两个方法就变成了抽象类中的非抽象方法,子类是可以不去实现的.
然后我们再让Ldemo去继承这个抽象类,现在Ldemo类就可以不去实现父类(Text类)的接口(Demo)中的所有未完成方法.
-
如果一个类实现接口,那么它要实现这个接口所有的方法吗?如果这个类继承抽象类呢?
2019-05-06 09:17:25一个类实现接口和继承抽象类对于抽象方法的实现原则是相同的: (1)如果这个类是个普通类,那么必须实现这个接口/抽象类的所有抽象方法; (2)如果这个类是个抽象类,那么不必实现这个接口/抽象类的抽象方法,... -
为什么需要一个接口,一个接口的实现类,而不是直接调用类里的方法
2018-07-13 10:20:42商业转载请联系作者获得授权,非商业转载请注明出处。“接口是个规范”,这句没错。“不如直接就在这个类中写实现方法岂不是...如果多个类去实现同一个接口,程序怎么知道他们是有关联的呢?既然不是一个类去实现,... -
为什么Java中一个类可以实现多个接口,但只能继承一个类?
2019-12-27 09:16:14多继承会产生钻石问题(菱形继承) 类 B 和类 C 继承自类 A,且都重写了类 A 中的同一个方法 ...接口中的方法是抽象的,一个类实现可以多个接口 假设这些接口中存在相同方法(方法名与参数相同),... -
一个类可以实现多个接口,但只能继承一个抽象类。
2018-12-25 22:01:55而抽象类在代码实现方面发挥作用,可以实现代码的重用,例如,模板方法设计模式是抽象类的一个典型应用,假设某个项目的所有Servlet类都要用相同的方式进行权限判断、记录访问日志和处理异常,那么就可以定义一个... -
一个接口多个实现,指定实现类
2018-04-14 21:49:38目的:一个接口多个实现时,根据不同的条件调用不用的实现1、有如下接口public interface Pay { public Object pay(Map<String,Object> map); }2、有如下两个实现实现一:@Service("weixinPay&... -
同一接口有多个实现类,怎么来注入一个指定的实现?@Resource、@Autowired、@Qualifier
2019-04-10 10:58:02如果一个接口有2个不同的实现, 那么怎么来Autowire一个指定的实现? 举个例子: 1、接口:ILayer public Interface ILayer{ ...... } 2、实现类:ImageLayerImpl ,实现了ILayer接口。 @Service(... -
一个接口有多个实现类时,调用接口时,如何判定调用的哪个实现类?
2018-12-19 16:55:07所以用到了一个接口多个实现类,每个实现类查询不同数据库。记录一下接口是怎么调用不同的实现类的。 定时任务一: 定时任务二: 同时继承了一个实现类AbstractSendDataTask applicationContext.xml... -
Spring用@Autowire向一个类注入一个接口的两个实现类
2016-09-29 10:23:37@Service public class AaaService implements IChangePassword { @Override public void changePassword(String username, String password) { } } @Service public class BbbService implements IC -
一个类实现一个接口,可以重写接口中方法的参数类型吗?
2016-03-25 00:57:11接口中定义的都是抽象方法,没有实现,所以当有接口被继承后,必须实现接口类中的所有构造方法,这个过程就是重写接口方法,之后可以重新填写方法内容,但是方法的名,参数类型和个数、参数返回值类型不能改变。 -
一个接口多个实现类的Spring注入方式
2018-05-29 18:06:25一个接口多个实现类 - Spring 的 @Autowired 和 @Qualifier 配合注入 1. 首先, Interface1 接口有两个实现类 Interface1Impl1 和 Interface1Impl2 Interface1 接口: package com.example.service; /** * ... -
一个类extends 继承多个接口的实现方法
2018-07-03 10:37:29在java中 一个类中不能继承多个接口,但是可以通过一个接口继承多个接口来实现。具体代码如下public interface LanguageBeharvior { public void language(); }public interface SpeakBeharvior { public void ... -
一个类继承实现接口的抽象类是否要重写其方法
2018-06-29 11:34:19当A类想要实现一个接口中个别方法是(不是所有方法),可以创建一个抽象类去实现该接口,然后在有A类去继承这个抽象类。注意:这个抽象类必须重写这个接口的所有方法,A类才可以实现其中的个别方法;如果抽象类没有... -
Java中,一个类实现某个接口,必须重写接口中的所有方法吗?
2018-06-18 19:51:18Java中,一个类实现某个接口,必须重写接口中的所有方法吗?“Java中,一个类实现了某接口,则必须实现该接口中的所有方法么?”这句话其实是不准确的,因为我们还没有考虑到抽象类。抽象类实现某个接口,可以不实现... -
一个接口有多个实现类,Controller方法中动态调用具体都实现类
2019-10-31 19:18:09一个接口有多个实现类,Controller方法中动态调用具体都实现类接口实现类1实现类2ControllerSystem.out.println输出结果 接口 public interface IDemoService { public String test(); } 实现类1 @Service(... -
@Autowired一个接口有多个实现类
2019-04-24 17:25:34@Autowired是spring的注解,默认使用的是byType的方式向Bean里面注入相应的Bean。例如: @Autowired private UserService userService; 这段代码会在初始化的时候...但是如果UserService这个接口存在多个实现类的时... -
如何实现一个接口类,多个实现类,通过请求参数来实现动态选择实现类???@Service
2020-02-27 14:26:24一、建立枚举类:用于区分你需要有多少个实现类 二、建立接口类:用于声明父类的方法(注意,接口可不用注入,调用看实现类) 三、建立实现多个实现类:用于实现具体方法(注意:实现类需要注入容器) ... -
Java中,一个类实现某个接口,必须重写接口中的所有方法吗
2018-10-13 20:31:01Java中,一个非抽象类实现了某接口,则必须实现该接口中的所有方法。 而抽象类实现某个接口,可以不实现所有接口的方法,可以由它的子类实现。 -
java 一个类怎么实现两个接口
2019-03-20 18:44:06n个接口都是使用逗号分隔 public String sayHello(String name) { return "Hello, " + name; } public String sayHi(String name) { return ... -
一个接口有多个实现类时,注入时需要用指定是哪个实现类
2020-03-11 11:39:25一个接口有多个实现类时,注入时需要用@Qualifier指定是哪个实现类 或者 -
接口,抽象类;类可以实现多个接口,类只能继承一个类,接口可以继承多个接口
2019-07-15 14:56:35接口 接口中的抽象方法只能是 public 类型的,并且默认即为 public abstract 类型。 -
为什么有时需要先定义一个接口,然后再实现这个接口的实现类?
2018-09-06 18:53:21作者:Dion ...来源:知乎 接口是个规范”,这句没错。...如果多个类去实现同一个接口,程序怎么知道他们是有关联的呢? 既然不是一个类去实现,那就是有很多地方有用到,大家需要统一标准。甚至有的编程语... -
Java中 一个类实现了某接口 则必须实现该接口中的所有方法么?
2016-03-31 15:39:42Java中 一个类实现了某接口 则必须实现该接口中的所有方法么? 编程语言编程java 专业回答 JAVA时空 团队 woshidaniel 2015-09-23 22:28 不一定,抽象类实现某个接口,可以不实现所有接口... -
spring注解识别一个接口的多个实现类方法
2017-07-12 19:26:08spring注解识别一个接口的多个实现类方法,在引用类中匹配到正确的实现类接口如下:public interface Filter { public String doFilter(String param); }接口实现类:public class TimeFilter implements Filter {... -
idea如何查看一个接口的实现类
2019-12-14 20:06:10目录按住两次Shift键按住Ctrl+Alt +b键 看到实现类 按住两次Shift键 在任意界面连续 两次按Shift键-输入你要查找的接口名称 注意包别找错 出现如下界面 点击进入这个类 按住Ctrl+Alt +b键 看到实现类 ...
-
MySQL Router 实现高可用、负载均衡、读写分离
-
基于粒子群优化算法的光刻机光源优化方法
-
MySQL 索引
-
网站优化遇到瓶颈如何破局?
-
中通接口,中通代发接口,中通礼品代发接口,中通一件代发接口,中通空包代发接口,中通代发api接口,
-
FFmpeg4.3系列之16:WebRTC之小白入门与视频聊天的实战
-
项目经理成长之路
-
超级浏览器是一个什么样的防关联工具?
-
基于雾计算的大感官数据优化压缩数据收集
-
MySQL 性能优化(思路拓展及实操)
-
零基础极简以太坊智能合约开发环境搭建并开发部署
-
基于基因库的密码结构字典生成算法
-
【Python-随到随学】 FLask第一周
-
swank-protocol:Swank的低级客户端-源码
-
集合交并
-
华为1+X认证——网络系统建设与运维(初级)
-
展会概况
-
淘宝订单接口
-
项目管理工具与方法
-
RS 70 100 130 M 20042322&4401&4402.pdf