发表于: 2017-11-30 22:33:29

1 513


今天完成的事情

1.理清spring AOP中的一些概念

spring 提供了4种类型的AOP支持

1.基于代理的经典spring AOP

2.纯POJO切面

3.@AspectJ注解驱动的切面

4.注入式AspectJ切面

前三种都是spring AOP实现的变体,构建在动态代理的基础上

spring的经典AOP比较笨重和复杂,已经很少用到了

利用XML配置,用spring的aop命名空间,可以将POJO转换为切面

spring借鉴了AspectJ的编程模型,实现了不使用XML来实现定义切面

最后,spring还支持把bean装配进AspectJ切面中,AspectJ是另一个AOP实现,在编译期就可以将切面织入

spring基于动态代理,所以spring方法连接点,相比于AspectJ,无法提供字段和构造器接入点,当需要细粒度的控制切面时,可以利用AspectJ来补充

尝试了对切面进行注入:

@Component
@Aspect
public class Cut2 {
   @Autowired
   private HH hh;
   @Pointcut("execution(* aop.Haha.print(..))")
   public void cut(){}
   @Before("cut()")
   public void before(){
   hh.hh();
   }
}

依赖对象:

@Component
public class HH {
   private String hhh;
   public void hh(){
   System.out.println("hhhhhh");
   }
}

测试:

@Test
public void haha(){
Haha haha = context.getBean(Haha.class);
   haha.print();
}

成功:

AspectJ切面依赖注入的情况应该和上面的基本相似


2.梳理一下,spring mvc中请求从浏览器发送出去到返回相应的过程

请求离开浏览器时,带有用户所请求内容的信息,至少会有URL,然后到达前端控制器,它是一个单实例的Servlet,会将请求委托给应用程序的其他组件来执行实际的处理。这个组件就是spring mvc 的控制器,前端控制器通过查询处理器映射来确定请求的将会发送到哪一个控制器,处理器映射会根据请求所携带的URL信息来进行决策。到了控制器之后,控制器会接受请求所携带的信息,并将业务逻辑委托给一个或多个服务对象进行处理,经过处理后的信息被称之为模型,然后控制器将数据模型打包,并标示出渲染输出的视图名,将这两者发送到前端控制器,前端控制器会使用视图解析器来将返回的逻辑视图名匹配为一个特定的视图实现,然后前端控制器将数据模型交付给视图,视图将数据模型渲染输出,输出会通过响应对象传递给客户端。


明天的计划

再看看spring mvc


遇到的问题



收获

对AOP,mvc的理解清楚了一点



返回列表 返回列表
评论

    分享到