- 需要学习的技术:
Spring,git,SpringBoot,go,业务知识 - 目前学习:
Spring,SpringMVC - 遇到的问题:
今天没有什么棘手的问题,都正常的处理掉了 - 今日学习内容总结:
AOP:
作为Spring的两大特征之一,aop知识点还是很多的,我挑重要的进行了一个简单的整理,首先了解aop的概念,aop是面向切面编程,在不打扰原有代码的基础上对功能进行增强,就是javase学的动态代理,在spring中aop主要面对方法,一些可以对其进行基础增强的方法叫做连接点,选中的方法叫做切入点,统一处理这些切入点的共有方法叫做通知,通知和切入点对应关系的描述叫做切面,通知既然是方法就不能独立存在需要写入类中,这个类就叫做通知类,spring使用aop一般使用aspect框架,将aop实现的很好,使用一般用四个注解,@EnableAspectJAutoProxy告诉Spring aop通过注解实现,@PointCut()切入点表达式,选择哪个切入点方法,通过在括号内进行一个描述,定义一个切入点方法,切入点定义依托一个不具有实际意义的方法进行,即无参数、无返回值、方法体无实际逻辑。
例如
切入点表达式格式具体我在网上找到一张图
方法参数类注解例如@Around(切入点定义的方法)
@Aspect设置类为aop切面类,
@Around()很重要,可以实现其他四种注解,设置当前通知方法与切入点之间的绑定关系,当前通知方法在原始切入点方法前后运行,当然有注意事项:
环绕通知必须依赖形参ProceedingJoinPoint才能实现对原始方法的调用,进而实现原始方法 调用前后同时添加通知
Spring事务:
使用主要是两个注解和一个接口:
@EnableTransactionManagement:设置当前Spring环境中开启注解式事务支持
@Transactional:为当前业务层方法添加事务(一般写在接口上,接口中所有方法都可以开启事务)
在JdbcConfig类中配置事务管理器使用PlatformTransactionManager接口创建一个它的实现类DataSourceTransactionManager,要注入一个datasource就用昨天整合的druid的datasource
事务
Spring事务角色:事务管理员和事务协调员
事务管理员:发起事务方,在Spring中通常指代业务层开启事务的方法
事务协调员:加入事务方,在Spring中通常指代数据层方法,也可以是业务层方法
Spring事务属性:
属性很多,但是重要的就这一个
tips:并不是所有的异常都会回滚事务,Spring的事务只会对Error异常和RuntimeException异常及 其子类进行事务回顾,其他的异常类型是不会回滚的
事务传播:
下面的属性这是对应如果存在某个事务协调员需要独立的提交不和事务管理员同步就配置这个属性,则选择下面这个枚举型
例如:@Transactional(propagation = Propagation.REQUIRES_NEW)
以上就是spring的学习的全部了(包括昨天的实习总结)主要是学习ioc、di,aop,事务,纯注解开发,速度学习很多可能有遗漏,还有很多没有经过实战的建议,虽然很少用spring了,为了快速过渡到springboot
SpringMVC:
SpringMVC是一种基于Java实现MVC模型的轻量级Web框架
可以看作代替servlet
使用mvc步骤:
1.导坐标
2.创建spring控制类就是替代Servlet
@Controller:设定SpringMVC的核心控制器bean
@RequestMapping():value(默认),请求访问路径(拦截括号里的路径)
@ResponseBody:设置当前控制器方法响应内容为当前返回值,无需解析
3.初始化springmvc控制类,设置加载的bean
4.初始化servlet容器加载mvc环境,设置mvc技术处理的请求(将所有请求交给mvc处理)
继承一个AbstractAnnotationConfigDispatcherServletInitializer类就行,其他就是实现方法:
1.设置bean加载控制:修改Spring配置类,设定扫描范围为精准范围。
2.修改Spring配置类,设定扫描范围为com.itheima,排除掉controller包中的bean
用的时候再去看源码就行,现在只需要用方案一,第二种方案做语法了解就行
其他:
感觉公司的大家都很专业,氛围也很好,今天师父把我介绍给了组里的大佬们,虽然不能一一认清,但是我还是很开心的,归属感这就来了,组里最近很忙,我加把劲多学点就能早点帮上忙了,虽然我也不知道会不会拖后腿,前路漫漫,勿忘初心,我进来就是学习的,加把劲把师傅给我的学习任务搞完,加油!