SpringAOP问题
最近想写一个简单的SpringAop程序,可是它怎么也不能运行,请各位高手给小弟指点一下。
下面是target的代码:
package test;
import java.util.ArrayList;
public class JChat implements meassageManage
{
public static Bayeux bayeux;
public static Client client;
public static final String chat = "/XXXX/";
public static Map List> roomMap = new HashMap List>();
public static void setBayeux(Bayeux bayeux)
{
JChat.bayeux = bayeux;
JChat.client =bayeux.newClient("XXXX", null);
}
public JChat()
{
}
public void join(String room, String userName) throws Exception
{
System.out.println("调用开始");
Listmembers = roomMap.get(room);
if(members ==null)
{
members = new ArrayList();
roomMap.put(room, members);
}
members.add(userName);
Map Object> msg = new HashMap Object>();
msg.put("join", "join");
msg.put("roomId", room);
msg.put("userId", userName);
bayeux.getChannel(chat + room, true);
bayeux.publish(client, chat + room, msg, "" + msg.hashCode());
System.out.println("调用结束");
}
.
.
.
}
interceptorNames的代码是这样写的:
package test.advice;
import java.lang.reflect.Method;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.aop.MethodBeforeAdvice;
public class MyMethodBeforeAdvice implements MethodBeforeAdvice
{
/**
*
*/
private static final long serialVersionUID = 2146067923623413193L;
Log log = LogFactory.getLog(this.getClass());
public MyMethodBeforeAdvice()
{
super();
}
public void before(Method arg0, Object[] arg1, Object arg2) throws Throwable
{
// TODO Auto-generated method stub
StringBuilder sb = new StringBuilder();
if(arg1 == null)
{
sb = new StringBuilder("无参数!");
}
else
{
for(int i =0;i < arg1.length;i++)
{
if(i != arg1.length-1)
{
sb.append(arg1 + ",");
}
else
{
sb.append(arg1);
}
}
}
log.info("Before类名:" + arg2.getClass().getName() + " 方法名:" + arg0.getName() + " 参数:" + sb.toString());
}
}
proxyInterfaces的代码:
package test.iFace;
public interface meassageManage
{
public void join(String room, String userName) throws Exception;
}
Spring的配置文件是这样写的:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="chat" class="test.JChat"/>
<bean id="advice" class="test.advice.sendMessageAdvice"/>
<bean id="befor" class="test.advice.MyMethodBeforeAdvice"/>
<!-- bean id="pushdata" class="test.DataPushServer"/-->
<bean id="joinProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<list>
<value>test.iFace.meassageManage</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>befor</value>
</list>
</property>
<property name="target">
<ref bean="chat"/>
</property>
</bean>
</beans>
附加说明:
我的Jion是通过DWR调的,当调完后没有输出Advice中的语句,也就是AOP没有起作用,这是怎么回事呀。
我的Spring是2.0.5版的。
[ 本帖最后由 javalean 于 2007-11-28 17:03 编辑 ]
|