2021暑期学习第1天

这篇博客记录了作者2021暑期学习的第一天,主要涉及Spring框架的代理和控制反转概念。上午学习了静态和动态代理,下午探讨了控制反转和面向切面编程。静态代理中创建了MhHandler代理类,动态代理则使用了工具类。控制反转通过applicationContext.xml配置,理解为容纳bean的容器。最后,简要提到了面向切面编程的应用。
摘要由CSDN通过智能技术生成

前言

  • 时间:2021.7.12
  • 内容:
    1. 静态代理 ycznz-proxy UserServiceTest
    2. 动态代理 ycznz-proxy UserServiceDyTest
    3. 控制反转 spring-ioc
    4. 面向切面编程 spring-aop
    5. 【需要再复习】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 动态代理

工具类

测试类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-edNsSRp6-1626108145292)(pic/210712/image-20210712110201422.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NR5OlCUF-1626108145294)(pic/210712/image-20210712110215938.png)]

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工厂类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8jg4SwIM-1626108145294)(pic/210712/image-20210712141900750.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iKXNc6tY-1626108145295)(pic/210712/image-20210712142108891.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qo5QuOJ5-1626108145295)(pic/210712/image-20210712142154690.png)]

3 spring-aop

新建模块

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UKFz59IC-1626108145296)(pic/210712/image-20210712144625780.png)]

在这里插入图片描述

依赖

在这里插入图片描述

在这里插入图片描述

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值