Spring的<aop:declare-parents>元素如何使用

提示:

如下是一个如何使用Spring框架的<aop:declare-parents>元素的例

步骤一、

1、打开Eclipse

2、点击 New -> Others

3、选择wizards type "Java Project"--Java Project

4、点击下一步

5、键入名称DeclareParentTagInSpringExample点击下一步

6、在Libraries页面选择Add External JARs,添加 Spring's 21 Framework Jarsaopalliance-1.0.jar, aspectjtools-1.6.6.jar and commons-logging-1.1.jar。

7.点击完成

步骤二、工程预览

 StudentImpl.java

package com.springexample;  
       
public interface StudentImpl {  
  public void showDetails();  
}

 Student.java

package com.springexample;  
   
public class Student implements StudentImpl {  
    private int studentNo;  
    private String studentName;  
       
    public int getStudentNo() {  
        return studentNo;  
    }  
    public void setStudentNo(int studentNo) {  
        this.studentNo = studentNo;  
    }  
    public String getStudentName() {  
        return studentName;  
    }  
    public void setStudentName(String studentName) {  
        this.studentName = studentName;  
    }     
       
    public void showDetails(){  
        System.out.println(this.studentNo);  
        System.out.println(this.studentName);  
    }  
}

 对Student类进行扩展方法,扩展方法接口

 StudentAdditionalDetailsImpl.java

package com.springexample;  
   
public interface StudentAdditionalDetailsImpl {  
    public void showAdditionalDetails();  
}

StudentAdditionalDetails.java

package com.springexample;  
   
public class StudentAdditionalDetails implements StudentAdditionalDetailsImpl {  
    private String city;  
    private String country;  
       
    public String getCity() {  
        return city;  
    }  
    public void setCity(String city) {  
        this.city = city;  
    }  
    public String getCountry() {  
        return country;  
    }  
    public void setCountry(String country) {  
        this.country = country;  
    }  
       
    public void showAdditionalDetails(){  
        System.out.println(this.city);  
        System.out.println(this.country);  
    }  
}

beans.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:aop="http://www.springframework.org/schema/aop"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">  
   
    <bean id="student" class="com.springexample.Student">  
        <property name="studentNo" value="1001" />  
        <property name="studentName" value="John Peter" />  
    </bean>  
       
    <bean id="studentAdditionalDetails" class="com.springexample.StudentAdditionalDetails">  
        <property name="city" value="Newyork" />  
        <property name="country" value="America" />  
    </bean>  
       
    <aop:config>  
        <aop:aspect>  
            <aop:declare-parents types-matching="com.springexample.StudentAdditionalDetailsImpl+"  
                                 implement-interface="com.springexample.StudentImpl"  
                                 delegate-ref="student" />  
        </aop:aspect>  
    </aop:config>  
   
</beans>

 RunMyProgram.java

package com.springexample;  
   
import org.springframework.context.ApplicationContext;  
import org.springframework.context.support.ClassPathXmlApplicationContext;  
   
public class RunMyProgram {  
    public static void main(String[] args) {  
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");  
        StudentAdditionalDetailsImpl studentAdditionalDetails = (StudentAdditionalDetailsImpl) context.getBean("studentAdditionalDetails");  
        ((StudentImpl) studentAdditionalDetails).showDetails();  
        studentAdditionalDetails.showAdditionalDetails();  
    }  
}

 

Output 

1001
John Peter
Newyork
America

 

posted @ 2016-01-30 10:05  门罗的魔术师  阅读(1201)  评论(0编辑  收藏  举报