spring自动装配和interface(spring基础一)

背景:这个也是之前面试中发现一个短板很多后端概念分不清楚,这次准备系统学习弥补一下不足。我这次想法还是根据项目中遇到问题通过查阅然后做个总结,想做个spring一个系列,也会把查阅的博客地址标注到下面。

首先说下spring的ioc,ioc是控制反转把获取实例交给框架,我理解主要解决java中经常new一个对象的问题。主要的途径就是bean。我们qa项目主要通过xml文件的形式。现简单说下qa后端项目的结构即58的scf框架:

contract   ------->这是是一个contract包在pom依赖中添加依赖就可以直接rpc远程调用接口了。

    entity   -------->这个是入参实例,同时对于参数要进行序列化,否则会出现rpc无法调用成功的情况。

    result  --------->通用的返回

    service -------->各种可以调用rpc接口,这里面都是抽象的interface

pom

service

    ****.service

        bll  ------->功能逻辑

       dao ------->数据库增删改查方法

       enums ------->枚举类型

       impl    -------->实现contract包中抽象的interface

       utils    -------->基础方法

    resource

        config     ------>这里面主要包含scf.config(集群名和ip的配置),数据库配置

            scfconfig    ------->集群名和ip的配置

            conf.properties ------->线程数,redis配置和job配置

            db.properties   ------->各个集群对应数据库配置

            redis.properties  ------>redis配置

            rocket_mq_consumer.properties  ----->MQ消费配置           

        mapping ------>mybatis的xml配置

        generatorConfig  ------->这个主要mybatis生成dao层数据和mapping中xml数据的。

        mybatis_config    ------->mybatis的全局配置,这个我没有改过框架来的时候就有。

        scf-contracts       --------->集群bean的配置文件

        spring-jdbc        ---------->数据库链接bean

1.bean的配置  这个我理解是一个如何写入bean的过程。

bean配置有两种一种通过xml文件形式,另一种采用注解配置的方式:

xml配置形式:

id:一般是类型首字母小写。

class:一般是全类名,这样java可以通过反射在ioc中获取bean,但是rpc我这边使用公司一个jar包"SCFContractFactoryBean"

<property>属性:这个可以将string,int,list和map类型的字面值注入到bean中,我这边只遇到过string。目前配置包含两部分:

contractInterface--->interface接口名称

rpc--------->tcp地址。

此外property可以一个name对应列表形式value,如图:

https://blog.csdn.net/bingguang1993/article/details/87690413

https://blog.csdn.net/weixin_43732570/article/details/93201285

https://www.cnblogs.com/myz666/p/8214511.html

2.注解@Autowired 自动装配

从bean中获取实例一种方式,我目前遇到基本都是建立rpc连接和调用对应contract的接口。

3.interface接口

interface和类的区别?

3.1 interface主要分成全局变量和抽象方法,所以接口不能实例化,类可以实例化如图。

3.2 interface需要子接口实现起抽象方法(implements)。接口和接口之间是继承关系,而且可以多继承;

类是用来继承(extends)。继承只能有一个父类,接口可以有多个。

3.3 类是用来描述实物的共性功能,接口是来描述实物额外功能。

https://www.cnblogs.com/zhuxr/archive/2018/04/24/8926490.html

我昨天还遇到这种情况,如图:

接口里面有若干的类,我之前想了好久这个怎么弄,想着先implemetes实现了,在弄new发现行,后来才知道可以MyFansListVO.Arg arg=new MyFansListVO.Arg();

总结:这个也是整体了解spring第一步感觉很多知识点需要多看看,希望可以做的更好的吧,把基础弄好。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章