火车类 Train:

public class Train {
    private String trainNo;
    private String startPlace;

    public Train() {}

    public Train(String trainNo, String startPlace) {
        this.trainNo = trainNo;
        this.startPlace = startPlace;
    }

    public void setTrainNo(String trainNo) {
        this.trainNo = trainNo;
    }

    public void setStartPlace(String startPlace) {
        this.startPlace = startPlace;
    }

    public void start() {
        System.out.println('Train ' + trainNo + ' starts from ' + startPlace + ' at ' + new Date());
    }
}

切面类 TimeAspect:

public class TimeAspect {
    public void showTime() {
        System.out.println('Current time is ' + new Date());
    }
}

Spring 配置文件 applicationContext.xml:

<bean id="train1" class="com.example.Train">
    <property name="trainNo" value="K1234"/>
    <property name="startPlace" value="Shanghai"/>
</bean>

<bean id="train2" class="com.example.Train">
    <constructor-arg value="G3456"/>
    <constructor-arg value="Beijing"/>
</bean>

<bean id="timeAspect" class="com.example.TimeAspect"/>

<aop:config>
    <aop:aspect ref="timeAspect">
        <aop:pointcut id="startPointcut" expression="execution(* com.example.Train.start())"/>
        <aop:before pointcut-ref="startPointcut" method="showTime"/>
    </aop:aspect>
</aop:config>

测试程序代码:

public class Test {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        Train train1 = (Train) context.getBean("train1");
        train1.start();

        Train train2 = (Train) context.getBean("train2");
        train2.start();
    }
}
Spring AOP 示例:使用切面显示火车出发时间和日期

原文地址: http://www.cveoy.top/t/topic/nOgp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录