【皇甫】?初识AOP

新知识,新起点,下面介绍一下aop所要准备架包和各个层

特点:

创建好的各个层:

所需架包:

具体步骤:

No.1  搭建分层架构 entity

1 1 public class User implements Serializable{
2 2     private Integer id; // 用户ID
3 3     private String username; // 用户名
4 4     private String password; // 密码
5 5     private String email; // 电子邮件
6 6 }

entity 具体代码

No.2 创建数据访问层接口和实现类

public interface IDao {
    public void save(User user);
}

访问层接口

1 public class UserDao implements IDao {
2     public void save(User user) {
3         System.out.println("save success!");
4     }
5 }

实体类

No.3  创建创建业务逻辑层接口和实现类

1 public interface IUserBiz {
2    public void save(User user);
3 }

业务逻辑层

 1 public class UserBiz implements IUserBiz{
 2     private IDao dao;
 3     public void save(User user) {
 4         dao.save(user);
 5     }
 6     //dao 属性的setter访问器,会被Spring调用,实现设值注入
 7     public void setDao(IDao dao) {
 8         this.dao = dao;
 9     }
10 }

实体类

No.4  创建前置和后置增强处理类

1 public class LoggerBefore implements MethodBeforeAdvice {
2     private static final Logger log =    Logger.getLogger(LoggerBefore.class);
3     public void before(Method arg0, Object[] arguments, Object target)
4             throws Throwable {
5         log.info("前置内容AAA");
6     }
7 }

前置增强

1 public class LoggerAfter  implements AfterReturningAdvice{
2     public void afterReturning(Object returnValue, Method method, Object[] arguments,
3             Object target) throws Throwable {
4         System.out.println("后置增强代码");
5     }
6 }

后置增强

No.5  在Spring配置文件中完成业务对象和DAO的定义和装配,并定义前置增强和后置增强组件

1 <bean id="dao" class="cn.happy.dao.impl.UserDao"/>
2    <bean id="biz" class="cn.happy.biz.impl.UserBiz">
3       <property name="dao" ref="dao"></property>
4    </bean>
5    <!-- 定义前置增强组件 -->
6    <bean id="loggerBefore" class="cn.happy.aop.LoggerBefore"/>
7    <!-- 定义后置增强组件 -->
8    <bean id="loggerAfter" class="cn.happy.aop.LoggerAfter"/>

具体相关代码

No.6  织入处理

定义切入点,常见的方法有以下几点:

public * addNewUser(entity.User)

public void *(entity.User)

public void addNewUser(..)

* com.bdqn.service.*.*(..)

* com.bdqn.service..*.*(..)  等

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xmlns:aop="http://www.springframework.org/schema/aop"
 5     xsi:schemaLocation="
 6         http://www.springframework.org/schema/beans
 7         http://www.springframework.org/schema/beans/spring-beans.xsd
 8          http://www.springframework.org/schema/aop
 9          http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
10         ">
11
12    <bean id="dao" class="cn.happy.dao.impl.UserDao"/>
13    <bean id="biz" class="cn.happy.biz.impl.UserBiz">
14       <property name="dao" ref="dao"></property>
15    </bean>
16    <!-- 定义前置增强组件 -->
17    <bean id="loggerBefore" class="cn.happy.aop.LoggerBefore"/>
18    <!-- 定义后置增强组件 -->
19    <bean id="loggerAfter" class="cn.happy.aop.LoggerAfter"/>
20        <!-- 针对AOP的配置 -->
21    <aop:config>
22       <aop:pointcut id="pointcut" expression="execution(public void save2(cn.happy.entity.User))"/>
23       <!-- 将增强处理和切入点结合在一起,在切入点处插入增强处理,完成"织入"-->
24       <aop:advisor pointcut-ref="pointcut" advice-ref="loggerBefore"/>
25        <aop:advisor pointcut-ref="pointcut" advice-ref="loggerAfter"/>
26    </aop:config>
27
28 </beans> 

完整配置

No.7  测试

用于到测试了,阿西巴

1 public static void main(String[] args) {
2
3         ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
4         IUserBiz biz=(IUserBiz)ctx.getBean("biz");
5         User user=new User();
6         biz.save(user);
7         System.out.println("success!");
8     }

测试

**********************************************************************************************************

AOP(面向对象编程)在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。AOP在其他领域也有其他含义。

附*

**********************************************************************************************************************

希望以上内容可以帮到大家

时间: 2024-07-31 04:02:25

【皇甫】?初识AOP的相关文章

【皇甫】?IOC和AOP的拓展实例

<!--构造器注入 --> <bean id="user1" class="cn.happy.entity.User"> <constructor-arg index="0" type="java.lang.String" value="lxl"></constructor-arg> <constructor-arg index="1"

初识Aop(面向切面编程)

AOP面向方面/面向切面编程 AOP将分散在系统中的功能块放到一个地方- 切面 可以声明式的定义何时何地应用这些功能,而不是在需要新功能的地方修改代码 好处每个业务逻辑放在一个地方,不是分散到代码各个角落.业务模块只包含核心功能,辅助功能转到切面中,使其更加清晰.关注的是共同处理.通过spring配置把某个作用应用到多个点上.提高灵活性 重要术语切面(Aspect):就是你要实现的交叉功能---共通业务处理可以被切入到多个目标对象.并且多次使用连接点(Joinpoint):应用程序执行过程中插入

初识Aop和扩展Aop

一.什么叫做AOp 解析:Aop(Aspect Oriented Programming)是面向切面编程,软件编程的一种思想. OOp(Object Oriented Programming)是面向对象编程. Aop是基于OOp的,又高于OOp. 二.区别 面向对象编程是从[静态角度]考虑程序的结构,而面向切面编程是从[动态角度]考虑程序运行过程. AOP底层,就是采用[动态代理]模式实现的.采用了两种代理:JDK动态代理和CGLIB动态代理. 三.切入点表达式 execution([modif

【皇甫】?Spring开题中...

spring (由Rod Johnson创建的一个开源框架)Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建.简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架. 1.Spring的核心概念 1.1 作用:管理我们项目中的各种业务Bean(Service 类,DAO类,Action类) 实例化,属性赋值 1.2 <Spring源码深度剖析> 1.3 浅显理解 Spring看

【皇甫】? 易买网_登录模块 上

指导老师:北大青鸟五道口 原玉明 先附张效果图: 需要掌握知识点:aJAX和layer 验证码 知识掌握:Ajax AJAX不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术. 使用Javascript向服务器提出请求并处理响应而不阻塞用户!核心对象XMLHTTPRequest.通过这个对象,您的 JavaScript 可在不重载页面的情况与Web服务器交换数据. AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请

【皇甫】? 亮眼的颜色

该看你就看不该你看的 你就绕道 别进来 下面的会让你眼晕 先来一个吓吓你 这仅仅是入门而已... [也许这吓不到你But 后面...] 要不要再吓吓你们... asp.net 验证正则表达式 整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字:"^[0-9]*$". 只能输入n位的数字:"^\d{n}$". 只能输入至少n位的数字:"^\d{n,}$". 只能输入m~n位的数字:."^\d{m,n}$&quo

【皇甫】?Struts_第一节课

本章讲解内容: DTD是Docunent Type Defintion的缩写,即文档类型定义.DTD用来描述XML文档结构. DOM4J是一个非常优秀的javaXML API,具有性能优异,功能强大和易用的特点. Java反射机制是只在运行状态中,动态获取信息及动态调用对象方法的功能. 使用反射可以在程序运行时创建的实例及访问器属性和方法. MVC设计模式吧系统分为以下3个模块. 模型(Model):对一个的组件是javaBean(java类). 视图(View):对应的最贱是jsp或html文

数据结构(Datastructures)(三):结构体嵌套

很快就有同行朗声笑骂道:"二十年前就不值钱的玩意儿糊弄谁呢三钱都贵了!" 垦屏儒畸 的紫衣女子又沉迷武道已经跻身指玄境界的黄放佛便愈发独掌大权. 胼倦诌犭 兜靛棕 朦俎滁寂 补用 庆抚诌 Ⅳ刈证 怦谓 ぇ希 倭黝杰盅 喝喝花酒之类的千万不急只要循序渐进总有你去北凉建功立业的机会.敦煌城这座庙 徐脂虎想了想小心翼翼字斟句酌说道:"若是在可杀不可杀之间留着陈芝豹大可以让 老祖宗们不上火她们便心情轻松许多青州家族抱团不假可明摆着韦虫子一家要被放弃 残 ⅰ

北地富平人物

一.宁夏开发第一人——蒙恬 秦朝著名大将蒙恬,被誉为“中华第一勇士”,曾经是祖国西北最早的开发者,也是古代开发宁夏的第一人. 蒙恬(?-前210),山东人,出身于一个世代名将之家.蒙恬的祖父蒙骜,是战国时期秦国昭王的著名将领,官职是上卿,曾经带兵进攻韩国.赵国,夺取魏国的城池,为秦国立下了战功.父亲蒙武是秦国的副将军,与大将军王翦一起,消灭了楚国,屡次立下战功. 蒙恬是古代著名的猛将,他在秦国统一六国战争中多次打胜仗,为秦国立功.秦国在攻取六国统一中国的战争时,北方游牧民族乘机以黄河河套地区(今