包含ioc和aop两大核心概念
aop----事务管理
spring框架运用的设计模式(查一下)
---------------------------------------
Ioc(控制反转)和Di-----dependency injection(依赖注入)Ioc 被调用对象不是由调用对象生成(new),而是用spring容器(通过反射机制)生成
---------------------------------------
先理解简单工厂(对象在工厂里new)---理解spring(对象在spring里new)----------------------------------------代理模式:抽象角色,代理角色(对真实对象的一个封装,也重写了抽象类的方法,但没有具体实现),真实角色(最重要引用的对象)
public Proxy extends Subject{
realSubject real; @Override void request(){ before(); real=new RealSubject();//对真实对象的一个封装 real.request(); after(); }}public class Test1{
public static void main(String args[]){ ProxySubject proxy=new ProxySubject(); proxy.request(); }}-----------------------------------------------------当真实对象事先不存在时,使用动态代理public class DynamicSubject implements InvocationHandler{ private Object obj; public DynamicSubject(Object obj){ } public Object invoke(Proxy。。。。){ method.invoke(sub,args); }}public class Test2{
public static void main(String args[]){ Real real=new Real();//真实角色 InvocationHandler handler=new DynamicSubject(real);//动态代理处理器 Class realClass=real.getClass(); Real real1=(Real)Proxy.newProxyInstance(realClass.getClassLoader(),realClass.getInterfaces,handler);//调用代理模式的处理器,出现一个实例,1类加载器 2真是角色的接
口3...
real1.request(); }}--------------------------------------------------------------------横切关注点,方面,连接点(程序执行过程中的一个点,如方法调用,字段访问。。),增强,切入点--------------------------------------------------------------------
public class TransactionInterceptor implements MethodIntercptor{ public Object invoke(){ String methodName=arg0.getMethod().getName(); if(methodName.startWith("save")||methodName.startWith("update") ||methodName.startWith("delete")){ System.out.println("DFJGKL//"); } arg0.proceed(); }}