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

时间: 2024-10-12 07:56:47

Spring IOC + AOP 的实现的相关文章

spring ioc aop 原理

spring ioc aop 原理 spring ioc aop 的原理 spring的IoC容器是spring的核心,spring AOP是spring框架的重要组成部分. 在传统的程序设计中,当调用者需要被调用者的协助时,通常由调用者来创建被调用者的实例.但在spring里创建被调用者的工作不再由调用者来完成,因此控制反转(IoC):创建被调用者实例的工作通常由spring容器来完成,然后注入调用者,因此也被称为依赖注入(DI),依赖注入和控制反转是同一个概念. 面向方面编程(AOP)是以另

spring ioc aop 的原理

IOC(反转控制):对成员变量的赋值的控制权从代码中反转到配置文件中.AOP:Aspect(切面) Oriented(面向) Programming(编程),面向切面编程.差不多就够了,再看就是Spring的事务处理,基本就这些.

spring Ioc Aop整合

之前用DWP项目做spring的IOC,xml总是提示有问题,之后改用maven通过. 之后将这一块的内容补充. 仔细考虑一下spring 的IOC是无处不在的,演示Aop也需要依赖spring的IOC. spring Aop例子. 本文例子在http://www.blogjava.net/javadragon/archive/2006/12/03/85115.html基础上进行些许修改,首先项目结构图: 其次运行结果图: 最开始的pom文件(property与dependency可以复制) <

zbb20180824 spring ioc aop 例子

zbb_ioc_aop https://pan.baidu.com/disk/home#/all?vmode=list&path=%2Fcode%2Fspring pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://m

spring的优点 ioc aop

spring 的优点? 1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能 5.容器提供了众多的辅助类,能加快应用的开发 6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等 7.spring属于低侵入式设计,代码的污染极低 8.独立于各种应用服务器 9.spring的DI机制降低了业务对象替换的复

Spring IOC 和 AOP

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架. 1.控制反转(IOC)/依赖注入(DI): 在传统的程序设计中,当调用者须要被调用者的协助时,通常由调用者来创建被调用者的实例. 但在spring里创建被调用者的工作不再由调用者来完毕.因此控制反转(IoC),为什么称为反转呢?反转是相对于正向而言的,那么什么算是正向的呢?考虑一下常规情况下的应用程序,假设要在A里面使用C,你会怎么做呢?当然是直接去创建C的对象,也就是说,是在A类中主动去获取所须要的外部资源C.这样的

Spring中AOP和IOC深入理解

spring框架 Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅仅限于服务器端的开发.从简单性.可测试性和松耦合性的角度而言,绝大部分Java应用都可以从Spring中受益. ◆目的:解决企业应用开发的复杂性 ◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 ◆范围:任何Java应用 Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架. Spr

AOP、静态代理、JDK动态代理、CGLIB动态代理、Spring实现AOP、IOC+AOP

一.为什么需要代理模式 假设需实现一个计算的类Math.完成加.减.乘.除功能,如下所示: 1 package com.zhangguo.Spring041.aop01; 2 3 public class Math { 4 //加 5 public int add(int n1,int n2){ 6 int result=n1+n2; 7 System.out.println(n1+"+"+n2+"="+result); 8 return result; 9 } 1

Spring IOC及AOP学习总结

一.Spring IOC体系学习总结: Spring中有两个容器体系,一类是BeanFactory.另一类是ApplicationContext.BeanFactory提供了基础的容器功能.ApplicationContext则是基于BeanFactory建立的一套更加丰富的容器体系,基于ApplicationContext构建了Spring AOP体系(基于AOP体系又构建了声明式事务模型),I18n的支持,基于观察者模式的事件模型,多渠道的Bean资源的载入(比如从文件系统,从interne