- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4.3 Bean的实例化 3)配置spring配置文件 这里需要配置两个bean,第一个bean使用的构造器方法实例化工厂类,第二个bean中的id是实例化对象的名称,factory-bean对应的被实例化的工厂类的对象名称,也就是第一个bean的id,factory-method是非静态工厂方法。 * * 4.3 Bean的实例化 三种实例化方式的区别 构造器实例化:通过无参构造的方法实例化Bean,其实质是将Bean对应的类交给Spring自带的工厂(BeanFactory)管理,由Spring自带的工厂模式帮我们创建和维护这个类。 静态工厂方式实例化:通过静态工厂创建并返回Bean。其实质是将Bean对应的类交给我们自己的静态工厂管理。Spring只是帮我们调用了静态工厂创建实例的方法。 实例工厂方式实例化:通过实例工厂创建并返回Bean,其实质就是把创建实例的工厂类和调用工厂类的方法创建实例的方法的过程也交由Spring管理,创建实例的这个过程也是由我们自己配置的实例工厂内部实现的。 * * 4.4 面向切面AOP编程 AOP其实是OOP(Object-Oriented Programing)思想的补充和完善,我们知道,OOP引进抽象、封装、继承、多态等概念,对万事万物进行抽象和封装,来建立一种对象的层次结构,它强调了一种完整事物的自上而下的关系。但是具体到每个事物内部的情况,OOP就显得无能为力了。 * * 4.4 面向切面AOP编程 * * 4.4 面向切面AOP编程 AOP技术则恰恰相反,它利用一种称为横切的技术,能够剖解开封装的对象内部,并将那些影响了多个类并且与具体业务无关的公共行为封装成一个独立的模块(称为切面)。更重要的是,它又能以巧夺天功的妙手将这些剖开的切面复原,不留痕迹的融入核心业务逻辑中。 对于目前的Spring框架,建议使用AspectJ实现Spring A0P,使用AspectJ实现Spring AOP的方式有两种,一是基于XML配置开发AspectJ,二是基于注解开发AspectJ。 * * 4.4 面向切面AOP编程 1、基于XML配置文件的AOP实现 基于XML配置开发AspectJ是指通过XML配置文件定义切面、切入点及通知,所有这些定义都必须在aop:config元素内。 aop:config:开发AspectJ的顶层配置元素,在配置文件的bean下可以包含多个该元素 aop:aspect:配置一个切面,aop:config元素的子元素,属性ref指定切面的定义 aop:aspect ref=verifyUserAspectid=aspect/ aop:pointcut:配置切入点,属性expression指定通知增强哪些方法 * * 4.4 面向切面AOP编程 aop:pointcut id=pointcut expression=execution(* .*.*(..))/ 上述表达式的意思是切入点为包及子包下所有的类及类中所有的方法 execution表达式的格式如下: execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)throws-pattern?) * * 4.4 面向切面AOP编程 括号中各个pattern分别表示: 1)修饰符匹配(modifier-pattern?) 2)返回值匹配(ret-type-pattern)可以为*表示任何返回值,全路径的类名等 3)类路径匹配(declaring-type-pattern?) 4)方法名匹配(name-pattern)可以指定方法名或者*代表所有, send* 代表以send开头的所有方法 * * 4.4 面向切面AOP编程 5)参数匹配(param-pattern)可以指定具体的参数类型,多个参数间用“,”隔开,各个参数也可以用“*”来表示匹配任意类型的参数,如(String)表示匹配一个String参数的方法;(*,String) 表示匹配有两个参数的方法,第一个参数可以是任意类型,而第二个参数是String类型;可以用(..)表示零个或多个任意参数 6)异常类型匹配(throws-pattern?) 其中后面跟着“?”的是可选项 * * 4.4
文档评论(0)