新知识,新起点,下面介绍一下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. iOS 设置1像素的UIView线

    如果是代码实现,直接 在CGRectMake里把对应的参数设置为: 1.0/[UIScreenmainScreen].scale 即可.         如果是用xib实现,就需要将对应的限制拖一个I ...

  2. 云虚拟主机开源 DedeCMS 安装指南

    1. 获取主机 FTP 和 数据库 信息 1.1 FTP 信息 登录主机管理后台,在 站点信息 中获取到 FTP 和 数据库 的账号密码,连接地址. 如下图所示: 如果忘记密码,可以在这里进行 重置密 ...

  3. Block 使用注意点

    Block 使用的注意点 block 一般用来传值的时候才调用 代理:一般用来封装控件的时候调用,这样有利于扩展 1.用Block 可以做通知的,什么时候需要的时候就什么时候调用.分为无返回值和有返回 ...

  4. 你应该在开始API开发之前知道的事(下)(翻译)

    放了十多天,一直在玩没写,今天终于要把坑填完了.有部分没翻,主要是一般都用不上的,有兴趣的朋友可以自己翻下. 上篇地址 :http://www.cnblogs.com/Scohura/p/357360 ...

  5. python 之sqlalchemy many to many

    # -*- coding: utf-8 -*- """ @author: zengchunyun """ from sqlalchemy i ...

  6. HashSet

  7. Bash On Win10 (WSL) 安装 Odoo 开发环境

    前段时间微软发布了Bash On Win10,虽然目前还是Beta阶段,但是一想到再也不用折腾虚拟机上跑odoo了,就忍不住手痒,尝试在WSL上安装了一下odoo,结果比较惊喜,感觉可以抛弃Vitru ...

  8. scala shuffle

    val arr = (0 to 100).map(_ * 1d) /// 下面这一步只能用to不能用until,scala里面实现返回的两个Range继承路径不同,不能混用 val a_shuffle ...

  9. Git中三种文件状态及其转换

    查看地址http://phplaber.iteye.com/blog/1699926

  10. 数据分析之pandas入门

    一.数据结构 1. Series 1.1 序列构造和调用 Series是一种类似于一维数组的对象,它由一组数据和索引共同组成,可以通过索引的方式来选取Series中的单个或一组值,常用的构造函数为ob ...