前言
- 时间:2021.7.12
- 内容:
- 静态代理 ycznz-proxy UserServiceTest
- 动态代理 ycznz-proxy UserServiceDyTest
- 控制反转 spring-ioc
- 面向切面编程 spring-aop
- 【需要再复习】spring-aop-xml
- 备注:大量截图预警,边听边记笔记的效率忽高忽低,最后整理算是复习一遍(大致是整理堆砌的截图)。后面做笔记时候再注意一些文字备注吧,今天太多新知识点了,也不能说都不会,但要自己复述还真说不出什么东西来,好像是些为了后面学习spring框架打基础。刚接触domain、dao、service这些时候也是这样的状态,后来在日复一日的
被动巩固中就莫名其妙地理解了,希望这一回的懵懵状态也能如此叭! - 备注:图片链接出问题惹,这样多图的笔记第一次记,加上自己对内容并不是特别熟练,整理的就不太清晰,多写几次会好起来的叭。
- 备注:7.13早上重新整理了下,决定之后上传的笔记暂时不加图了(555整理图片太耗时惹)因为关于typora导入csdn之后如何把图片一起链接过来的问题还没解决。。
上午
1-1 静态代理
新建模块
文件目录
新建接口
新建接口实现类
新建代理类
添加依赖
-
网址:https://mvnrepository.com/
-
阿里云配置
<repositories> <!--使用阿里服务器--> <repository> <id>aliyun</id> <name>aliyun</name> <url>https://maven.aliyun.com/repository/public</url> </repository> </repositories>
-
检查仓库
- 添加其他依赖
- 成功
新建测试类
1-2 动态代理
工具类
测试类
2 控制反转
新建模块
配置依赖
UserDao
- 新建UserDao接口
- 新建UserDaoImpl实现类
UserService
UserServiceTest
UserDaoOracle
applicationContext.xml
下午
- 配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
- applicationContext.xml
- beans内有很多bean,bean是java类
- applicationContext是bean工厂类
3 spring-aop
新建模块
依赖
applicationContext.xml
xmlns:aop="http://www.springframework.org/schema/aop"
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
MyAspect
UserDao
AopTest
4 spring-aop-xml
新建模块
导包
applicationContext
MyAspect
XmlTest
汇总
ycznz-proxy 代理
- 上午的主要知识点是代理。重点在于MhHandler这个代理类。
- 下文分别调用普通实现类UserServiceImpl,和代理类UserServiceProxyImpl来实现输出指定语句的功能。
- 普通实现类单纯输出,代理类可以批量输出同样的话。
- 【未解决】关于MhHandler的调用、使用、执行机制。
MhHandler.java
package com.pro.service;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
/**
* @author Yuhua
* @since 21.7.12 10:44
*/
//动态代理
public class MhHandler implements InvocationHandler {
private Object object;
//参数是,准备被代理的对象
public MhHandler(Object object) {
this.object = object;
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//调用的方法的名称
String methodName = method.getName();
System.out.println("您好,您正在调用的方法是:"+methodName);
method.invoke(object,args); //调用被代理对象的方法
System.out.println("再见,您调用的方法:"+methodName+"完毕");
return null;
}
}
UserService.java
package com.pro.service;
/**
* @author Yuhua
* @since 21.7.12 9:56
*/
public interface UserService{
public void save(String name);
}
UserServiceImpl.java
package com.pro.service;
/**
* @author Yuhua
* @since 21.7.12 9:56
*/
public class UserServiceImpl implements UserService {
public void