spring笔记
spring
1 了解ssm框架的过渡
1.1 ssm框架是什么
分别代表的是spring MVC + spring + MyBatis三个框架。
- springMVC框架是一个表现层框架,技术实现主要还是jsp+servlet,代表三层架构里面的表现层。
- spring框架是服务层框架,进行业务逻辑处理。
- MyBatis框架是数据访问层框架,对数据库操作。
1.2分清楚一个设计模式和三层架构和实现技术之间的关系
-
设计模式用的是MVC设计模式
jsp model2模型就是使用mvc设计模式。下面以jsp model2的模型来介绍。包括三个模块。 M:model:模型 实现技术是javaBean,(javaBean:bean:咖啡豆)其中有两种Bean: 1.实体类bean:用于封装用户数据的实体类。 2.业务bean:service层和dao层的类:用于业务逻辑处理和数据库访问操作的类。 V:view:视图,视野 实现技术是jsp。 C:controller:控制 实现技术是servlet:用于三层之间的流程控制。
-
三层架构是是一种思想,它实现了MVC设计模式。开发中也用这种架构进行开发。
三层架构中,分为表现层、服务层、数据访问层。 表现层对应设计模式中的V和C两个模块。这一层实现技术是jsp+servlet。 服务层和数据访问层对应设计模式中的M:模型。模块。这两层实现技术是JavaBean,包括两类bean,不过实体类bean在三层都有联系使用。controller层中将用户提交的数据封装为实体类对象,service层和dao层可能会传递实体类对象。
1.3 ssm框架优势在哪
来袭,接好这波新技能!
-
springMVC是实现MVC设计模式的一个表现层牛逼框架,十分轻量级。
牛逼体现在: 原来javaweb里面学的是jsp+servlet+javabean开发。 springmvc实现了mvc设计模式,所以,springmvc框架实现了model、view、controller、三个模块的功能。 不过要注意两点: 1.model中是封装的用户数据对象数据,而不包括业务逻辑处理类。 2.servlet实现技术换为了controller类,不过功能和servlet一样,jsp技术正常使用。 3.springmvc就是代表了原来的jsp+servlet技术实现的表现层。
-
spring框架是服务层的框架,主要用来业务逻辑处理。
spring框架主要通过管理service对象和dao层对象来实现处理的。具体后续学习后再补充。
MyBatis框架是数据访问层的框架,主要用进行数据库的操作。
MyBatis框架和spring框架里面的实现技术好像还是业务bean的类技术。
2 mybatis框架
2.1 mybatic框架的映射的理解
2.2 mybatis框架的优势
2.3 maven新总结
2.3.1 maven的三种仓库
导入坐标后,如果自己电脑的本地仓库没有从maven的中央仓库下载。第三方仓库先了解。
3 spring入门小记
学习框架的使用,一定要知道大概的流程,每个流程怎么操作,每个流程的功能是干什么,这样才能根据理解去写代码。这都是学习框架的使用要掌握的。而深入学习框架,是分析每个流程的源码,分析他是怎么实现的,然后再分析他为什么这样写代码。
1.spring重要两个概念:
- IOC控制反转、依赖注入
- AOC
控制反转:由自己new对象变为IOC容器创建和管理对象。
依赖注入:就是给属性赋值。
3.依赖注入方法:
- 构造器注入:
标签中用 标签赋值 - set方法注入:
标签中用 标签赋值
3.1 spring中关键的理解处
1.spring<bean id= “">标签中的id核心作用是唯一标识一个实体类的定义(也叫做实体类的配置元数据),单例模式下,因为一个实体类只有一个bean对象,所以id间接唯一标识对象。但是多例模式下,一个
2.javabean和spring bean的术语区分
- javabean定义是:Java类的的一种标准规范。但是开发术语中,提到javabean一般指的是普通的java对象。
- spring bean:源码中,bean包括bean注册和实例化为bean对象两个阶段,他们是两个不同阶段。但是术语和开发中,spring bean就指的是spring容器管理的bean对象。类比一下,用户注册就是根据用户的信息进行注册,这时候只是注册,注册信息还存在系统中,还没有检验成功将用户信息保存到数据库中。用户就是对象。Bean注册就是根据Bean的实体类信息进行注册,Bean就是实体类对象,只不过这时候只是保存注册信息在容器中,还没有创建对象。
- @Controller、@Service、@Repository这些注解是进行Bean注册(也叫Bean对象注册,术语Bean就指的是Bean对象),注册指的是将标记的实体类的元数据(属性,方法)封装为BeanDefination对象,然后将这个对象传给BeanRegister,保存起来,后续进行实例化做准备。这个注解就是向spring传递信息,传递需要Bean注册的信息。我只要知道这个注解的作用就可以使用这个注解去实现什么功能,他扫描到后会根据他的机制去执行这个要求来实现功能,我只是一个使用者。
3.spring容器指的是IOC控制反转容器,他是spring框架的一个模块,然后spring容器本身是一个接口,BeanFactory和ApplicationContext两个接口都代表spring容器,注意,这是java里面的一种思想。
第一种理解,不太好理解
容器是一个接口,用接口定义容器的基本功能,但不实现,具体功能实现由实现类去完成,创建实现类的对象就是创建容器,因为实现类对象包含了容器的所有功能,实现类对象就是容器的具体体现实体,而容器只是一种抽象体,
第二种理解,可以接受
spring开发了两个接口定义容器的功能(相当于说明要创建容器,必须要做什么)然后接口实现类就根据接口的要求实现了容器的功能,所以实现类的对象就是具体的一个容器。
4.注解名称和
@Service(value = "userService2")
/*这里的bean名称指的是bean定义的名称(就是一个配套信息的名称)
* 这个地方主注意:
* 1.不是唯一标识一个bean对象。(多例模式,多个对象id一样,矛盾)
* 2.不是唯一标识一个实体类,多个<bean>标签,id不一样,实现类一样,矛盾
* 3.唯一标识一个bean定义的配置信息,也就是一套配置的名称,同一个实现类可以有多个配置*/
4 spring的启动与配置流程
4.1 spring的启动过程(xml方式)
xml注解配置方式的启动流程下面这个启动流程图,包含了我三天以来的感悟与思考。
spring的启动过程(注解方式)
注意注解方式普通类型的依赖注入和xml方式不同。
主要是这个地方滤清楚:
- 扫描到@Component注解后,只将id,class等基本属性放到beandefination对象中,接着扫描其他注解,像懒加载,作用域@scope,初始化方法,销毁方法等注解,把这些注解信息放到bean定义对象中,之后放完了,才创建对象,之后进行赋值,基本类型赋值是从内存中取或者直接字符串赋值,引用类型则是从ioc容器中取。
5.spring AOP
5.1 基于注解的切面配置小记
总结AOP基于注解的编程
一句话:在切面中配置切入点和增强的关系。
切面:@Aspect标记的类
切入点:
@Pointcut("execution(* cn.edu.huuc.demo2.Service02.*(..))")execution里面的包名下的能够被增强的方法
public void exceptionMsg() {
}
/* public void exceptionMsg() {
}这是一个空方法,作为切入点的载体,让后面切面中增强的方法进行引用*/
增强:具体的增强方法:msgMethod就是一个增强
@Around("exceptionMsg()")
public Object msgMethod(ProceedingJoinPoint thisJoinPoint) throws Throwable {
}
关系:@Around,@Before @after里面要引用切点载体。
最后注意:
切入点和增强不是一个方法,切入点是被拦截到的可以被增强的方法,增强是要进行什么方法增强(是另外一个方法),
然后连接点是所有可以被增强的方法,切入点只是表达式里面的包下以Service开头的方法进行增强,连接点包含切入点。
作者:yzh先生
博客:https://www.cnblogs.com/ZiJun
本文版权归作者和博客园共有,转载请在文章中注明原文链接:https://www.cnblogs.com/ZiJun/p/18852487 ,愿尊重劳动成果,谢谢!
若有关于博客内容的各种问题,欢迎在评论区讨论或发消息,让我们一起进步!