动态代理:
在测试类中来指定 DaoIf target=new Dao() DaoIf prox=(DaoIf) Proxy.newProxyInstance(target.getClass().getClassLocader(),)构造一个对象, 三个参数分别是:加载器,代理接口,代理做什么的封装类 但是我们还自己写封装类实现InvocationHandler接口,它作用是为代理要做什么进行一个封装。 method.invoke(target,args); 返回让拦截器做处理
拦截器:在invoke()中写我们的代理处理过程 我们用拦截器作用就是把对常规的操作,比如,事务开始,提交等,抽象出来,把它单独处理。
概念:concern 关注点---应用要达到的目标 分集中化和分散化两种类型 在分散化类型中是针对Aspect 横切面
过滤器 实现pointcut接口
其中方法分配器 MethodMatcher isRuntime() 是否在运行时类型判断 也就是我们对过滤方法的规则要求, 如果设置返回true,表示要对过滤方法的参数有要求,这时则调用三个参数的方法matches(xxx,xxx,xxx) 如果设置返回为假,表示要对过滤方法的参数没有有要求,只对过滤方法名字即可,则调用两个参数的方法matches(xxx,xxx) 而matches方法也分真假,如果返回真,则对这个方法提供过滤,如果为假,则对这个方法不提供过滤功能 在xml中提供我们写的过滤器类的配置声明,还要对容器中提供的bean声明 <bean id="daoPointcut" class="org.sprng" <property name="
NameMatcheMethodPointcutAdvisor 在xml中提供方法名字的匹配就可以了。
持久化的事务的处理自己写的模式: 我们自己写这些事务的处理,为了理解spring自带的类的工具是如何实现的。其实spring会自带这些类实现事务管理工具的