DAY16 静态代理 动态代理类

class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        UserDoImpl userDo = context.getBean("UserDo", UserDoImpl.class);
        userDo.doWork();

注意:getBean中的UserDo一定是一个接口,不能是实现类!!!后面UserDoImpl才是实现类

一、代理:Proxy,能够实现在一个流程的横切面,统一的增加某一项内容

静态代理类:代码固定的,一个类的属性,set方法赋值,属性调用方法,实现代理

动态代理类:Proxy提供了创建动态代理类和实例的静态方法,它也是所创建的动态代理类的超类。

左边的代理工具是固定代码,右边的是执行代码

InvocationHandler:调用代理类,并返回结果

ProxyIn:生成代理实例

动态代理类,执行invoke方法,在方法中添加要执行一项方法,实质就把该方法切面插入了。

DAY16 静态代理 动态代理类_第1张图片

二、Spring做动态代理:

1、类导包(after,before),xml导aop约束。教训:从博客上拷了pom的依赖清单,导致所有项目都不能正常运行。

2、创建两个类

3、xml配置(中间商把类链接起来):

DAY16 静态代理 动态代理类_第2张图片

三、注解AOP实现

xml中开启注解

@aspect 切面类

@Before("execution(* com.rzgsl.pojo.UserDoImpl.*(..))")   //execution:执行位置
@After("execution(* com.rzgsl.pojo.UserDoImpl.*(..))")

前提,类必须得再xml中注册,后者使用@compont注解交给spring管理

*返回值类型,*方法,..多个方法

 

四、Spring整合Mybatis

DAY16 静态代理 动态代理类_第3张图片

DAY16 静态代理 动态代理类_第4张图片

原来mybatis-config.xml中的配置,可以整合写在spring-mybatis.xml中,spring-mybatis.xml中留别名,设置等,这样在mybatis-config.xml中还能有能容,否则就是空文件,不便于理解构架。

原来都是使用sqlSession来执行,现在在xml中使用sqlSessionTemplate,他们是一个东西。spring中有大量的Teamplate存在

在UserMapperImpl类中写方法,并把该类注入到xml的bean中

跟原来纯mybatis比,多了一个实现类,实现类私有了sqlSession,在xml中注入属性

1、编写数据源配置

2、sqlSessionFactory

3、sqlSessionTemplate

4、给接口加实现类

5、将自己写的实现类注入Spring中

6、测试使用

还有另外一个更为简单的方法,让实现类继承SqlSessionDaoSupport,实现UserMapper接口,直接可以GetSqlSession

五、Mybatis事务管理

在xml中先添加事务,再添加切面,切面中引入事务。

你可能感兴趣的:(DAY16 静态代理 动态代理类)