新知识,新起点,下面介绍一下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. Object-C 1.0 第二章

    1.  输出obc #import <Foundation/Foundation.h> int main(int argc,const char *argv[]) { NSLog(@&qu ...

  2. linux 添加 service 服务并自动添加 chkconfig 启动级别

    下面以添加一个叫做watchcat的服务为例进行说明: 1.写一个提供给service命令使用的脚本 service 命令的使用方法一般如下 启动: $ service watchcat start ...

  3. UI设计中的48dp定律【转】

    有朋友建议我偶尔写写技术类的文章,所以我打算开始穿插性的写一些偏技术方面的科普文章,尽量往小白能看懂的方向写,今天我来讲讲UI设计中的48dp定律. 那么先说说什么是dp ?其实对于一个非技术人员要把 ...

  4. doT.js详细介绍

    doT.js详细介绍   doT.js特点是快,小,无依赖其他插件. 官网:http://olado.github.iodoT.js详细使用介绍 使用方法:{{= }} for interpolati ...

  5. SQLServer注入技巧

    一.对于SA权限的用户执行命令,如何获取更快捷的获取结果? 有显示位 无显示位 其实这里的关键并不是有无显示位.exec master..xp_cmdshell 'systeminfo'生成的数据写进 ...

  6. C#中(int)、int.Parse()、int.TryParse()和Convert.ToInt32()的区别

    转自:http://www.cnblogs.com/leolis/p/3968943.html 在编程过程中,数据转换是经常要用到的,C#中数据转换的方法很多,拿将目标对象转换为 整型(int)来讲, ...

  7. Java Service Wrapper简介与使用

    在实际开发过程中很多模块需要独立运行,他们并不会以web形式发布,传统的做法是将其压缩为jar包独立运行,这种形式简单易行也比较利于维护,但是一旦服务器重启或出现异常时,程序往往无法自行修复或重启.解 ...

  8. antlr.collections.AST.getLine()I异常

        antlr.collections.AST.getLine()I异常 Struts+hibernate+spring项目经常遇到问题 因为Struts自带的antlr-2.7.2.jar,比H ...

  9. 【完整靠谱版】结合公司项目,仔细总结自己使用百度编辑器实现FTP上传的完整过程

    说在前面 工作中会遇到很多需要使用富文本编辑器的地方,比如我现在发布这篇文章离不开这个神器,而且现在网上编辑器太多了.记得之前,由于工作需要自己封装过一个编辑器的公共插件,是用ckeditor改版的, ...

  10. Symbols

    https://hacks.mozilla.org/2015/06/es6-in-depth-symbols/ <script> function w(wcon) { console.lo ...