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方法,在方法中添加要执行一项方法,实质就把该方法切面插入了。

二、Spring做动态代理:

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

2、创建两个类

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

三、注解AOP实现

<aop:aspectj-autoproxy/>

xml中开启注解

@aspect 切面类

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

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

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

 

四、Spring整合Mybatis

原来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中先添加事务,再添加切面,切面中引入事务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值