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

特点:

创建好的各个层:

所需架包:

具体步骤:

No.1  搭建分层架构 entity

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

entity 具体代码

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

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

访问层接口

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

实体类

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

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

业务逻辑层

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

实体类

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

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

前置增强

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

后置增强

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

 <bean id="dao" class="cn.happy.dao.impl.UserDao"/>
<bean id="biz" class="cn.happy.biz.impl.UserBiz">
<property name="dao" ref="dao"></property>
</bean>
<!-- 定义前置增强组件 -->
<bean id="loggerBefore" class="cn.happy.aop.LoggerBefore"/>
<!-- 定义后置增强组件 -->
<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..*.*(..)  等

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
"> <bean id="dao" class="cn.happy.dao.impl.UserDao"/>
<bean id="biz" class="cn.happy.biz.impl.UserBiz">
<property name="dao" ref="dao"></property>
</bean>
<!-- 定义前置增强组件 -->
<bean id="loggerBefore" class="cn.happy.aop.LoggerBefore"/>
<!-- 定义后置增强组件 -->
<bean id="loggerAfter" class="cn.happy.aop.LoggerAfter"/>
<!-- 针对AOP的配置 -->
<aop:config>
<aop:pointcut id="pointcut" expression="execution(public void save2(cn.happy.entity.User))"/>
<!-- 将增强处理和切入点结合在一起,在切入点处插入增强处理,完成"织入"-->
<aop:advisor pointcut-ref="pointcut" advice-ref="loggerBefore"/>
<aop:advisor pointcut-ref="pointcut" advice-ref="loggerAfter"/>
</aop:config> </beans>

完整配置

No.7  测试

用于到测试了,阿西巴

 public static void main(String[] args) {

         ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
IUserBiz biz=(IUserBiz)ctx.getBean("biz");
User user=new User();
biz.save(user);
System.out.println("success!");
}

测试

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

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

附*

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

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

【皇甫】☀初识AOP的更多相关文章

  1. 【皇甫】☀IOC和AOP的拓展实例

    <!--构造器注入 --> <bean id="user1" class="cn.happy.entity.User"> <con ...

  2. 初识Aop和扩展Aop

    一.什么叫做AOp 解析:Aop(Aspect Oriented Programming)是面向切面编程,软件编程的一种思想. OOp(Object Oriented Programming)是面向对 ...

  3. 初识AOP与动态代理

    AOP AOP是指在jvm运行时, 动态将代码切入到指定位置. OOP是一个维度上写代码, AOP是把他切开来, 变成立体的. 这样的好处是: 业务逻辑跟辅助逻辑分离, 例如日志打印, 性能监控, 安 ...

  4. 【皇甫】☀Spring开题中...

    spring (由Rod Johnson创建的一个开源框架)Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建.简单来说,Spr ...

  5. 【皇甫】☀Struts_第一节课

    本章讲解内容: DTD是Docunent Type Defintion的缩写,即文档类型定义.DTD用来描述XML文档结构. DOM4J是一个非常优秀的javaXML API,具有性能优异,功能强大和 ...

  6. 【皇甫】☀Hibernate入门

    说说我们最近的一些事 二期已经过去了,下面迎接的就是二年,据原老师讲解,我们10月份就开始陆续找工作了,虽然他说我们找工作不是问题,可每个人都有自知之明,我也知道我所处的位置,所以我清楚我要怎么做,我 ...

  7. 【皇甫】☀ TreeSet

    -Set: 元素是无序(存入和取出的顺序不一致),元素不可以重复 |-- HashSet: 底层数据结构是哈希表 HashSet是如何保证元素的唯一性的呢? 是通过元素的两个方法,hashCode和e ...

  8. 【皇甫】☀ 图_substring

    substring是啥?

  9. 【皇甫】☀那些事儿......STEP

    写项目之前呢,先来缕缕思路,既然要写学生管理系统,那肯定上不了从数据库中读取信息,然而想要从数据库中拿到你想要的东西,就要先登录,得到他的权限才行,所以我们第一步就要先搞出一个登录页面并且能连接到数据 ...

随机推荐

  1. C#读写配置文件

    .net有两种程序,一个是web程序,另外一种是app客户端程序,这两种程序的配置文件读写模式不同,web程序是直接读写马上生效.app客户端程序比如刷新加载一次. System.Configurat ...

  2. 《Storm入门》中文版

    本文翻译自<Getting Started With Storm>译者:吴京润    编辑:郭蕾 方腾飞 本书的译文仅限于学习和研究之用,没有原作者和译者的授权不能用于商业用途. 译者序 ...

  3. UI测试测试分析

    解析:jQuery easyUI是基于jQuery框架在使用之前应该先引入jquery框架否则jQuery easyUI 将失效故D错误 解析: JQuery UI下的menu插件的使用,menu提供 ...

  4. Javascript实现页面加载完成后自动刷新一遍清除缓存文件

    我们有些时候在加载页面时,会出现缓存文件对当前文件的表现效果有干扰,如有些缓存的样式文件会是页面效果发生改变,这时我们希望页面在加载时能自动刷新一遍清楚缓存文件. 但是由于跳转页面肯定会用到BOM部分 ...

  5. Android Studio插件美化Android Studio,文艺清新范

    一:重新定义你工作区的颜色 1:原生的工作区文字的颜色反人类,来这个网站下载自己喜欢的主题:http://www.riaway.com/  轻松定义:下载后是个jar包. 2:导入jar包 file ...

  6. 实战java虚拟机的学习计划图(看懂java虚拟机)

    啥也不说了,实战java虚拟机,好好学习,天天向上!针对自己的软肋制定学习计划. 一部分内容看完,自己做的学习笔记和感想. 学java很简单,但懂java会有难度,如果你的工资还没超过1W,那是时候深 ...

  7. 标签案例-开发foreach标签

    if(item.getClass().isArray()){ this.collection = new ArrayList(); int length = Array.getLength(items ...

  8. apache 自带的ab测试

    ab -c 20 -n 2000 http://192.168.1.110:8080/index.php

  9. linq 小记

    1.简单的linq语法 //1 var ss = from r in db.Am_recProScheme select r; //2 var ss1 = db.Am_recProScheme; // ...

  10. HJ-第二周,真机调试

      报错: Showing Recent Issues   Huiju_app requires a provisioning profile. Select a provisioning profi ...