spring注解切面不起作用

xiadong01asd 2012-03-19 09:49:32
在学spring,按照书上的例子,这个注解切面怎么不起作用呀,哪儿有问题,谢谢了!
代码如下:

注解切面:

package com.xcd.idol;

import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;

@Aspect
public class Listenner {

@Pointcut("execution(* *.singing(..))")
public void singer(){};

@Before("singer()")
public void takeSeats(){
System.out.println("观众入座!。。");
}

@Before("singer()")
public void closeCellphone(){
System.out.println("关闭移动电话。。");
}

@AfterReturning("singer()")
public void yeah(){
System.out.println("演出精彩,观众欢呼!。。");
}

@AfterThrowing("singer()")
public void worse(){
System.out.println("演出糟糕,观众要求退款。。");
}
}




自动代理:


<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">


<bean id="singer" class="com.xcd.idol.Singer"></bean>
<aop:aspectj-autoproxy />

</beans>





package com.xcd.idol;

public interface Sing {
void singing();
}

package com.xcd.idol;

public class Singer implements Sing {

public void singing() {
System.out.println("歌手唱歌!。。");
}

}

package com.xcd.test;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.xcd.idol.Singer;

public class T2 {

/**
* @param args
*/
public static void main(String[] args) {
ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext("applicationContext.xml");
Singer s = (Singer)cac.getBean("singer");
//Sing s = (Sing)cac.getBean("singer");
s.singing();

}

}

...全文
562 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiadong01asd 2012-03-19
  • 打赏
  • 举报
回复
开了哦 是没有把注解的切面装配进spring就不起作用了
[Quote=引用 3 楼 lyp907093825 的回复:]

你没有显示开启annotation的服务,applicationContext.xml里面要加一个配置才能用annotation切面!
<aop:aspectj-autoproxy/>
[/Quote]
lyp907093825 2012-03-19
  • 打赏
  • 举报
回复
你没有显示开启annotation的服务,applicationContext.xml里面要加一个配置才能用annotation切面!
<aop:aspectj-autoproxy/>
xiadong01asd 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 a199231 的回复:]

spring配置文件加上:

<bean id="listenner" class="com.xcd.idol.Listenner"></bean>
[/Quote]
谢谢了,我以为这个不要装配了呢
宏Lee 2012-03-19
  • 打赏
  • 举报
回复
spring配置文件加上:

<bean id="listenner" class="com.xcd.idol.Listenner"></bean>

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧