文档章节

Aop实例

微尘鉴
 微尘鉴
发布于 2014/05/14 11:28
字数 401
阅读 7
收藏 0
package com.jushi.aop;
public interface IUser {
    public String findUser(String username);
    public void addUser(String username);
    public void findAll();
}
package com.jushi.aop;
import java.util.HashMap;
import java.util.Map;
public class IUserImpl implements IUser {
    public static Map map = null;
    public static void init(){
        String[] list = {"Lucy", "Tom", "小明", "Smith", "Hello"};
        Map tmp = new HashMap();
        for(int i=0; i<list.length; i++){
            tmp.put(list[i], list[i]+"00");
        }
        map = tmp;
    }
    public void addUser(String username) {
        init();
        map.put(username, username+"11");
        System.out.println("--------------【addUser】: "+username+" --------------");
        System.out.println("【The new List:"+map+"】");
    }
    public void findAll() {
        init();
        System.out.println("---------------【findAll】: "+map+" ------------------");
    }
    public String findUser(String username) {
        init();
        String password = "没查到该用户";
        if(map.containsKey(username)){
            password = map.get(username).toString();
        }
        System.out.println("-----------------【findUser】-----------------");
        System.out.println("-----------------Username:"+username+"-----------------");
        System.out.println("-----------------【Result】:"+password+"------------------");
        return password;
        
    }
}
package com.jushi.aop;
import java.util.Date;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class CheckUser {
    @Pointcut("execution(* com.jushi.aop.*.find*(..))")
    public void checkUser(){
        System.out.println("**************The System is Searching Information For You****************");
    }
    
    @Pointcut("execution(* com.jushi.aop.*.add*(..))")
    public void checkAdd(){
        System.out.println("**************<< Add User >> Checking.....***************");
    }
    
    @Before("checkUser()")
    public void beforeCheck(){
        System.out.println(">>>>>>>> 准备搜查用户..........");
    }
    
    @After("checkUser()")
    public void afterCheck(){
        System.out.println(">>>>>>>> 搜查用户完毕..........");
    }
    @Before("checkAdd()")
    public void beforeAdd(){
        System.out.println(">>>>>>>> 增加用户--检查ing..........");
    }
    
    @After("checkAdd()")
    public void afterAdd(){
        System.out.println(">>>>>>>> 增加用户--检查完毕!未发现异常!..........");
    }
}
package com.jushi.aop;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.jushi.entity.User;
public class Test {
    
    public static void main(String as[]){
        BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
        IUser user = (IUser) factory.getBean("user");
        user.findAll();
        
//        User u = new User();
//        u.setUsername("Tom");
//        user.findUser(u.getUsername());
        
//        u.setUsername("haha");
//        user.addUser(u.getUsername());
    }
}
<?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"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
                              http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                              http://www.springframework.org/schema/aop 
                           http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
                           http://www.springframework.org/schema/tx 
                           http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
    
    <aop:aspectj-autoproxy/>
    <bean id="user" class="com.jushi.aop.IUserImpl"/>
    <bean id="check" class="com.jushi.aop.CheckUser"/>
    
    <!--  <aop:config>
        <aop:pointcut id="find" expression="execution(* com.jushi.aop.*.find*(..))" />
        <aop:pointcut id="add"     expression="execution(* com.jushi.aop.*.add*(..))" />
        
        <aop:aspect id="checkUser" ref="check">
            <aop:before method="beforeCheck" pointcut-ref="find"/>
            <aop:after method="afterCheck" pointcut-ref="find"/>
        </aop:aspect>
        
        <aop:aspect id="checkAdd" ref="check">
            <aop:before method="beforeAdd" pointcut-ref="add"/>
            <aop:after method="afterAdd" pointcut-ref="add"/>
        </aop:aspect>
    
    </aop:config>-->
</beans>


© 著作权归作者所有

上一篇: Json
下一篇: 多线程实例
微尘鉴
粉丝 8
博文 80
码字总数 30075
作品 0
海淀
高级程序员
私信 提问
微热山丘,探索 IoC、AOP 实现原理(一)

微热山丘,探索 IoC、AOP 实现原理(一) 码蜂笔记2017-12-241 阅读 IoCAOP 一. 简介及项目设定 1.1 微热山丘 介绍 warmhill(微热山丘) 是一个参考 Spring 实现 IoC、AOP 特性的小项目。 ...

码蜂笔记
2017/12/24
0
0
spring浅析(一)

一、什么是spring? spring是一个基于Java的应用平台,是一个开源的框架,他同EJB一样都是为了为松耦合的POJO类提供中间服务件,框架将服务注入给POJO类,POJO类无需关注如何去连接服务,从而达...

J星星点灯
2017/09/14
0
0
Spring系列之AOP基本主要类概述

在这篇文章中我将对自己了解的AOP中的基本主要类做一个概述,可能不包括一些AOP高级用法的类以及是自己还不了解的类。会不定期的进行补充和修改。 SpringAOP基础解析类 类名 作用概述 AopNam...

Mr_zebra
2018/07/20
28
0
Spring的核心机制

管理Bean 程序主要是通过Spring容器来访问容器中的Bean,ApplicationContext是Spring容器最常用的接口,该接口有如下两个实现类 ClassPathXmlApplicationContext: 从类加载路径下搜索配置文件...

天蚕宝衣
2016/03/31
958
0
Spring基础知识汇总 Java开发必看

Spring简介 Spring框架由Rod Johnson开发,2004年发布了Spring框架的第一版。Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关...

皮蛋瘦肉粥里没有粥
2015/08/28
19
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
昨天
7
0
用最通俗的方法讲spring [一] ──── AOP

@[TOC](用最通俗的方法讲spring [一] ──── AOP) 写这个系列的目的(可以跳过不看) 自己写这个系列的目的,是因为自己是个比较笨的人,我曾一度怀疑自己的智商不适合干编程这个行业.因为在我...

小贼贼子
昨天
7
0
Flutter系列之在 macOS 上安装和配置 Flutter 开发环境

本文为Flutter开发环境在macOS下安装全过程: 一、系统配置要求 想要安装并运行 Flutter,你的开发环境需要最低满足以下要求: 操作系统:macOS(64位) 磁盘空间:700 MB(不包含 IDE 或其余...

過愙
昨天
6
0
OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
昨天
2.5K
16
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
昨天
42
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部