zoukankan      html  css  js  c++  java
  • 吴裕雄--天生自然轻量级JAVA EE企业应用开发Struts2Sping4Hibernate整合开发学习笔记:Spring_ReusePointcut

    <?xml version="1.0" encoding="GBK"?>
    <project name="spring" basedir="." default="">
        <property name="src" value="src"/>
        <property name="dest" value="classes"/>
    
        <path id="classpath">
            <fileset dir="../../lib">
                <include name="**/*.jar"/>
            </fileset>
            <pathelement path="${dest}"/>
        </path>
    
        <target name="compile" description="Compile all source code">
            <delete dir="${dest}"/>
            <mkdir dir="${dest}"/>
            <copy todir="${dest}">
                <fileset dir="${src}">
                    <exclude name="**/*.java"/>
                </fileset>        
            </copy>
            <javac destdir="${dest}" debug="true" includeantruntime="yes"
                deprecation="false" optimize="false" failonerror="true">
                <src path="${src}"/>
                <classpath refid="classpath"/>
                <compilerarg value="-Xlint:deprecation"/>
            </javac>
        </target>
    
        <target name="run" description="Run the main class" depends="compile">
            <java classname="lee.BeanTest" fork="yes" failonerror="true">
                <classpath refid="classpath"/>
            </java>
        </target>
    
    </project>
    <?xml version="1.0" encoding="GBK"?>
    <project name="spring" basedir="." default="">
        <property name="src" value="src"/>
        <property name="dest" value="classes"/>
    
        <path id="classpath">
            <fileset dir="../../lib">
                <include name="**/*.jar"/>
            </fileset>
            <pathelement path="${dest}"/>
        </path>
    
        <target name="compile" description="Compile all source code">
            <delete dir="${dest}"/>
            <mkdir dir="${dest}"/>
            <copy todir="${dest}">
                <fileset dir="${src}">
                    <exclude name="**/*.java"/>
                </fileset>        
            </copy>
            <javac destdir="${dest}" debug="true" includeantruntime="yes"
                deprecation="false" optimize="false" failonerror="true">
                <src path="${src}"/>
                <classpath refid="classpath"/>
                <compilerarg value="-Xlint:deprecation"/>
            </javac>
        </target>
    
        <target name="run" description="Run the main class" depends="compile">
            <java classname="lee.BeanTest" fork="yes" failonerror="true">
                <classpath refid="classpath"/>
            </java>
        </target>
    
    </project>
    <?xml version="1.0" encoding="GBK"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">
        <!-- 指定自动搜索Bean组件、自动搜索切面类 -->
        <context:component-scan base-package="org.crazyit.app.service
            ,org.crazyit.app.aspect">
            <context:include-filter type="annotation"
                expression="org.aspectj.lang.annotation.Aspect"/>
        </context:component-scan>
        <!-- 启动@AspectJ支持 -->
        <aop:aspectj-autoproxy/>
    </beans>
    package lee;
    
    import org.springframework.context.*;
    import org.springframework.context.support.*;
    
    import org.crazyit.app.service.*;
    /**
     * Description:
     * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
     * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee
     * <br/>This program is protected by copyright laws.
     * <br/>Program Name:
     * <br/>Date:
     * @author  Yeeku.H.Lee kongyeeku@163.com
     * @version  1.0
     */
    public class BeanTest
    {
        public static void main(String[] args)
        {
            // 创建Spring容器
            ApplicationContext ctx = new
                ClassPathXmlApplicationContext("beans.xml");
            Hello hello = ctx.getBean("hello" , Hello.class);
            hello.foo();
            hello.addUser("孙悟空" , "7788");
            World world = ctx.getBean("world" , World.class);
            world.bar();
    
        }
    }
    package org.crazyit.app.aspect;
    
    import org.aspectj.lang.annotation.*;
    import org.aspectj.lang.*;
    
    /**
     * Description:
     * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
     * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee
     * <br/>This program is protected by copyright laws.
     * <br/>Program Name:
     * <br/>Date:
     * @author  Yeeku.H.Lee kongyeeku@163.com
     * @version  1.0
     */
    @Aspect
    public class LogAspect
    {
        // 直接使用SystemArchitecture切面类的myPointcut()切入点
        @AfterReturning(returning="rvt"
            , pointcut="SystemArchitecture.myPointcut()")
        // 声明rvt时指定的类型会限制目标方法必须返回指定类型的值或没有返回值
        // 此处将rvt的类型声明为Object,意味着对目标方法的返回值不加限制
        public void log(Object rvt)
        {
            System.out.println("获取目标方法返回值:" + rvt);
            System.out.println("模拟记录日志功能...");
        }
    }
    package org.crazyit.app.aspect;
    
    import org.aspectj.lang.annotation.*;
    /**
     * Description:
     * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
     * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee
     * <br/>This program is protected by copyright laws.
     * <br/>Program Name:
     * <br/>Date:
     * @author Yeeku.H.Lee kongyeeku@163.com
     * @version 1.0
     */
    @Aspect
    public class SystemArchitecture
    {
        @Pointcut("execution(* org.crazyit.app.service.impl.*.*(..))")
        public void myPointcut(){}
    }
    package org.crazyit.app.service;
    
    /**
     * Description:
     * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
     * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee
     * <br/>This program is protected by copyright laws.
     * <br/>Program Name:
     * <br/>Date:
     * @author Yeeku.H.Lee kongyeeku@163.com
     * @version 1.0
     */
    public interface Hello
    {
        // 定义一个简单方法,模拟应用中的业务逻辑方法
        void foo();
        // 定义一个addUser()方法,模拟应用中的添加用户的方法
        int addUser(String name , String pass);
    }
    package org.crazyit.app.service;
    
    /**
     * Description:
     * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
     * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee
     * <br/>This program is protected by copyright laws.
     * <br/>Program Name:
     * <br/>Date:
     * @author Yeeku.H.Lee kongyeeku@163.com
     * @version 1.0
     */
    public interface World
    {
        // 定义一个简单方法,模拟应用中的业务逻辑方法
        public void bar();
    }
    package org.crazyit.app.service.impl;
    
    import org.springframework.stereotype.Component;
    
    import org.crazyit.app.service.*;
    /**
     * Description:
     * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
     * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee
     * <br/>This program is protected by copyright laws.
     * <br/>Program Name:
     * <br/>Date:
     * @author Yeeku.H.Lee kongyeeku@163.com
     * @version 1.0
     */
    @Component("hello")
    public class HelloImpl implements Hello
    {
        // 定义一个简单方法,模拟应用中的业务逻辑方法
        public void foo()
        {
            System.out.println("执行Hello组件的foo()方法");
        }
        // 定义一个addUser()方法,模拟应用中的添加用户的方法
        public int addUser(String name , String pass)
        {
            System.out.println("执行Hello组件的addUser添加用户:" + name);
            if(name.length() < 3 || name.length() > 10)
            {
                throw new IllegalArgumentException("name参数的长度必须大于3,小于10!");
            }
            return 20;
        }
    }
    package org.crazyit.app.service.impl;
    
    import org.springframework.stereotype.Component;
    import org.crazyit.app.service.*;
    /**
     * Description:
     * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
     * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee
     * <br/>This program is protected by copyright laws.
     * <br/>Program Name:
     * <br/>Date:
     * @author Yeeku.H.Lee kongyeeku@163.com
     * @version 1.0
     */
    @Component("world")
    public class WorldImpl implements World
    {
        // 定义一个简单方法,模拟应用中的业务逻辑方法
        public void bar()
        {
            System.out.println("执行World组件的bar()方法");
        }
    }
  • 相关阅读:
    1.8 在select语句使用条件逻辑
    用做网页开发经历了三个阶段(附长篇讨论) good
    unigui数据库连接池
    idhttp.post方式 调用datasnap rest 远程方法
    IdHttpServer实现webservice
    DATASNAP REST WEBSERVICES中间件如何跨平台使用
    Cracking the Coding Interview
    分享基于Entity Framework的Repository模式设计(附源码)
    建造者模式
    7z文件格式及其源码
  • 原文地址:https://www.cnblogs.com/tszr/p/12372490.html
Copyright © 2011-2022 走看看