JAVA-SpringAOP
1.1最终通知
@After("pointcut()") public void after(){ System.out.println("我是最终的通知的方法!!!"); }
1.2环绕通知
环绕通知:
* 1.特点: * 1.方法执行前后,通知都要执行 * 2.环绕通知可以控制目标方法是否执行 * 3.环绕通知必须添加返回值 * 2.proceed() * 作用1:如果有下一个通知,则执行下一个通知 * 作用2:如果没有下一个通知,则执行目标方法
环绕通知的写法:
@Around("pointcut()") public Object around(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("环绕通知开始"); Object result = joinPoint.proceed(); System.out.println("环绕通知结束"); return result; }
1.3Spring中通知总结
第一类:记录程序的运行状态
1,前置通知
2.后置通知 记录目标方法的返回值!!!
3.异常通知 记录目标方法执行之后,抛出异常信息
4.最终通知 记录程序最后的状态
第二类:
5.环绕通知 控制目标方法是否执行. 环绕通知是未来使用最多的,功能最强大的
1.4 Spring中AOP的案例需求:需要方法的执行时间
通知的选择:首选环绕通知
需求2:利用AOP可以实现缓存控制
通知类型:环绕通知
业务思路:
1.用户直接查询缓存,
如果缓存中没有与数据,表示第一次查询,让目标方法执行
如果缓存中有数据, 表示第N次查询.目标方法不执行,从缓存中获取数据即可.
需求3:利用AOP控制事物
通知类型:环绕通知
需求4:利用AOP控制方法的权限
通知类型:环绕通知
业务思路:
1.在AOP中的环绕通知中,判断当前用户是否有权限
2.有权限:可以执行目标方法,获取数据
3.没有权限:不能执行目标方法.
关于AOP现状说明:一般工作中很少直接编辑AOP底层代码.绝大部分的业务逻辑都是使用的高级API 不需要从底层写起...
#2.Spring 总结知识总结:
Spring的作用:Spring可以整合其他的第三方框架!从架构的角度,实现了代码的松耦合!
1.Spring-IOC/DI IOC控制反转/数据结构Map集合
DI:依赖注入 类型注入/名称注入/一般接口都是单实现.
2.Spring-AOP 在修改源码的条件下,对方法进行拓展!!
4.动态代理 JDK动态/Cglib动态代理 method.invoke()
5.切面 = 切入点表达式 + 通知方法
6.AOP中因为切面较多,每个切面都完成特定的功能,所以一般不会研究顺序.
@Order注解 可有控制顺序.
3.1.2 Ajax特点:局部刷新,异步访问!
1.什么是同步:当用户刷新页面时,必须等到所有的页面数据加载回来之后,同一刷新显示
同步状态:504异常超时, 404异常,前端数据和后端不匹配
2.什么是异步:当用户刷新页面时,在内部发起了多个请求.页面数据先回来的,则局部数据先刷新展现
3.Ajax为什么可以异步:Ajax引擎!(异步引擎,第三方) (代理思想)
3.1回调函数:当服务器数据返回之后,通过回调函数的方式通知用户.
常见Ajax API jQuery/axios让ajax调用变得简洁
3.2.2 SpringMVC入门案例 3.3 SpringMVCget总结:SpringMVC是SPring基于MVC思想,专门针对于前后端交互的开发的框架
3.3.1 传统Servlet的弊端1.传统的servlet一个业务方法,需要编辑第一个servlet.如果业务复杂,则导致Servlet数量增多
2.Servlet的请求方式,只能支持get/post请求.
3.通过Servlet获取参数的类型 都是String,需要手动的进行类型的转换
4,如果编辑Servlet则需要大量的web.xml(8行配置)文件.
上述知识都是历史产物. 均已经淘汰. 后期SpringMVC框架将Servlet进行封装.
3.3.2 常用的注解说明@Controller 将该类首先交给SpringMVC管理,之后将Springmvc整体框架,交给管理.
@RequestMapping 该路径必须与用户的访问路径一致.如果路径不一致,则会报404异常
@ResponseBody 表示改方法的返回值都是json串结构,如果返回值为String类型,则原数据返回.
3.4 SpringMVC--简单参数传递3.4.1 需求说明
常识:通过游览器的地址栏,只能发起get请求.
URL1:http://localhost:8080/findUserbyld?id=1
难点:动态接受请求/参数ID
#常用注解1.@Configuration 标识当前类是配置类
2.@ComponentScan 包扫描注解 扫描注解
3.@Bean 标识该方法的返回值交给Spring容器管理
4.@Scope 控制多例和单例
5.@Lazy 懒加载
6.@PostConstruct 初始化方法
7.@PreDestroy 销毁方法
8.@Component 将当前类未来的对象交给容器管理
9.@Autowired 按照类型进行注入
10.@Qualifier 按照名称进行注入
11.@Repository 标识持久层注解
12.@Service 标识Service层
13.@Controller 标识Controller层
14.@Value 为属性赋值 @Value("${key}")
15.@PropertySource 加载指定路径的配置文件properties
16.@Aspect 标识当前类是一个切面类
17.@Pointcut 用于定义切入点表达式 表达式写法4种
18.@EnableAspectJAutoProxy 让AOP的注解有效果
19.@Before AOP-前置通知
20.@AfterReturning AOP-后置通知
21.@AfterThrowing AOP-异常通知
22.@After AOP-最终通知
23.@Around AOP-环绕通知
24.@Order
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)