Spring中IOC和AOP个人理解

本文章也是综合各位大神以及自己理解创作的


先简单说一下拦截器,
什么是拦截器:

拦截器是AOP中的概念,它本身是一段代码,可以通过定义“织入点”,来指定拦截器的代码在“织入点”的前后执行,从而起到拦截的作用

正如上面 Struts2Reference中讲述的,Struts2Interceptor,其拦截的对象是Action代码,可以定义在Action代码之前或者之后执行拦截器的代码。

在项目中,我们经常用来拦截通过非正常程序而进行的访问

Struts2的拦截器和Servlet过滤器类似。在执行Actionexecute方法之前,Struts2会首先执行在struts.xml中引用的拦截器,在执行完所有引用的拦截器的intercept方法后,会执行Actionexecute方法。

其中intercept方法是拦截器的核心方法,所有安装的拦截器都会调用之个方法。在Struts2中已经在struts-default.xml中预定义了一些自带的拦截器,如timerparams等。如果在<package>标签中继承struts-default,则当前package就会自动拥有struts-default.xml中的所有配置。代码如下:

<package name="demo" extends="struts-default" > ... </package>

  拦截器是Struts2框架的核心,它主要完成解析请求参数、将请求参数赋值给Action属性、执行数据校验、文件上传等工作

     struts-default.xml中有一个默认的引用,在默认情况下(也就是<action>中未引用拦截器时)会自动引用一些拦截器。struts2中默认的拦截器是defaultStack. 

  自定义拦截器需要特别注意的是不要忘记引入struts2默认的拦截器。为了实现某些操作,我们可以自定义拦截器,

自定义拦截器有三种方式定义。分别为实现Interceptor接口,继承抽象类AbstractInterceptor,继承MethodFilterInteceptor类。

现在回到正题IOC(Inversion of Control) 控制反转/依赖注入,又称DI(Dependency Injection) (依赖注入) 

IOC的作用:产生对象实例,所以它是基于工厂设计模式的

 

Spring IOC的注入

       通过属性进行注入,通过构造函数进行注入,

       注入对象数组     注入List集合  

       注入Map集合      注入Properties类型

 

 Spring IOC 自动绑定模式:

          可以设置autowire按以下方式进行绑定

                   按byType只要类型一致会自动寻找,           

                     按byName自动按属性名称进行自动查找匹配.

 

AOP 面向方面(切面)编程

AOP是OOP的延续,是Aspect Oriented Programming的缩写,

    意思是面向方面(切面)编程。

   注:OOP(Object-Oriented Programming ) 面向对象编程

 

 AOP  主要应用于日志记录,性能统计,安全控制,事务处理(项目中使用的)等方面。

 

 Spring中实现AOP技术:

     在Spring中可以通过代理模式来实现AOP

     代理模式分为

           静态代理:一个接口,分别有一个真实实现和一个代理实现。

           动态代理:通过代理类的代理,接口和实现类之间可以不直接发生联系,而                        可以在运行期(Runtime)实现动态关联。

 

    动态代理有两种实现方式,可以通过jdk的动态代理实现也可以通过cglib

    来实现而AOP默认是通过jdk的动态代理来实现的。jdk的动态代理必须要有

    接口的支持,而cglib不需要,它是基于类的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值