• Spring IOC + AOP 的实现


    Spring思想很不错,尽量减少侵入式编程。现在了解到的Spring提供的功能有,DI,IOC,数据库操作,AOP,MVC。针对DI,AOP写了一些小DEMO

    PS:AOP真的很棒

    代码参考:《Spring实战》第三版

    环境:

    win7 64

    ide eclipse

    jdk 1.8

    spring 4.1.7

    ------------------------------------------------我是代码分割线---------------------------------------------------------

    思路:

    一个表演者和观众,表演者和观众通过DI注入(XML和注解注入),观众在表演者表演前,时,后的动作通过AOP实现(数据库写了一些配置文件)

    表演者Performer.java

     1 package com.gxf.beans;
     2 
     3 /**
     4  * 表演者
     5  * @author GXF
     6  *
     7  */
     8 public class Performer {
     9     
    10     /**
    11      * 表演者表演行为
    12      */
    13     public void perform(){
    14         System.out.println("表演者开始表演");
    15     }
    16 }

    观众Audience.java

     1 /**
     2  * 观众
     3  * @author GXF
     4  *
     5  */
     6 public class Audience {
     7     
     8     /**
     9      * 表演前观众开始找座位
    10      */
    11     public void takeSeats(){
    12         System.out.println("观众开始找座位");
    13     }
    14     
    15     /**
    16      * 表演前观众关机
    17      */
    18     public void turnOffCellPhone(){
    19         System.out.println("观众将手机关机");
    20     }
    21     
    22     /**
    23      * 表演结束观众开始鼓掌
    24      */
    25     public void applaud(){
    26         System.out.println("观众开始鼓掌");
    27     }
    28     
    29     /**
    30      * 表演失败,观众要求退钱
    31      */
    32     public void demandRefund(){
    33         System.out.println("嘘!退票!");
    34     }
    35 }

    配置文件config.xml

    <?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:context="http://www.springframework.org/schema/context"
            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/context   http://www.springframework.org/schema/context/spring-context-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" >
            
        <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
    
        <bean id="user" class="com.gxf.beans.User">
            <property name="name">
                <value>zhangsan</value>
            </property>
        </bean>
        <bean id="phone" class="com.gxf.beans.Phone">
            <property name="number">
                <value>13608196502</value>
            </property>
        </bean>
        <!-- 配置表演者和观众的bean -->
        <bean id="performer" class="com.gxf.beans.Performer">
        </bean>
        <bean id="audience" class="com.gxf.beans.Audience"></bean>
        <!-- 配置面向切面 -->
        <aop:config>
            <aop:aspect ref="audience">
                <aop:before pointcut="execution(* com.gxf.beans.Performer.perform(..))" method="takeSeats"/>
                <aop:after pointcut="execution(* com.gxf.beans.Performer.perform(..))" method="applaud"/>
            </aop:aspect>
            
        </aop:config>
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
            <property name="driverClassName">
                <value>com.mysql.jdbc.Driver</value>
            </property>
            <property name="url">
                <value>jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8</value>
            </property>
            <property name="username">
                <value>root</value>
            </property>
            <property name="password">
                <value>12345</value>  
            </property>   
        </bean>
    </beans>

    测试程序Test.java

     1 import org.springframework.context.ApplicationContext;
     2 import org.springframework.context.support.ClassPathXmlApplicationContext;
     3 
     4 import com.gxf.beans.Performer;
     5 
     6 public class Test {
     7 
     8     public static void main(String[] args) {
     9         ApplicationContext context = new ClassPathXmlApplicationContext("config.xml");
    10         Performer performer = (Performer) context.getBean("performer");
    11         performer.perform();
    12         
    13     }
    14 
    15 }

    中间有些测试DI和没有完成的数据库代码,数据库我觉得还是使用ORM框架好一点,虽然Spring提供了一些模板方法,对数据库进行管理,不过使用起来没有ORM框架方便

    源码:http://pan.baidu.com/s/1jGKnKv8

  • 相关阅读:
    Spring xml中进行面向切面的配置
    Spring 基于Java的Bean声明
    Spring context:component-scan中使用context:include-filter和context:exclude-filter
    Spring context:component-scan代替context:annotation-config
    Spring 使用context:annotation-config的设置
    Spring xml中进行autowired的方式
    margin三个值
    Spring util-namespace下标签相关操作
    use strict 的优点
    Spring MVC整合DWR
  • 原文地址:https://www.cnblogs.com/luckygxf/p/4710127.html
Copyright © 2020-2023  润新知