背景:这个也是之前面试中发现一个短板很多后端概念分不清楚,这次准备系统学习弥补一下不足。我这次想法还是根据项目中遇到问题通过查阅然后做个总结,想做个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"
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第一步感觉很多知识点需要多看看,希望可以做的更好的吧,把基础弄好。