0
私のアプリケーションのロギングシステムにSpring AOPを使用しています。しかし、私はそれにいくつかの問題があります。Spring AOPが動作しない
私は単純なクラスMessageReceiverImpl
@Aspect
public class LoggerMessage {
private static final Logger log = Logger.getLogger("listenerLogger");
@Before("execution(* server.logic.listener.message.MessageReceiverImpl.receive(..))")
public void logMessageReceiver() {
log.info("INFO : LoggerMessage -> new Client");
}
}
ためpiontcutと
@Component
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public class MessageReceiverImpl implements MessageReceiver {
final private BufferedReader reader;
public MessageReceiverImpl(BufferedReader reader) {
this.reader = reader;
}
public String receive(){
String msg = null;
try {
msg = reader.readLine();
} catch (IOException e) {
e.printStackTrace();
}
return msg;
}
}
そしてLoggerクラスそして、私のbean.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"
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 ">
<aop:aspectj-autoproxy>
<aop:include name="loggerMessage"/>
</aop:aspectj-autoproxy>
<aop:aspectj-autoproxy proxy-target-class="true"/>
<!-- Aspect -->
<bean id="loggerMessage" class="service.logger.listener.LoggerMessage" />
</beans>
を持っている。しかし、実行が受け取る前に、それは動作しません。 () 方法。その他のLogクラスはうまく動作します。どこに問題がありますか?
詳細情報あなたは豆の作成の設定をいじっているよう
public class UploadSessionImpl implements UploadSession, ApplicationContextAware {
private MessageReceiver receiver;
public UploadSessionImpl(Socket socket) throws IOException {
this.socket = socket;
}
public void process() throws IOException {
String msg;
while (true) {
msg = receiver.receive();
if (msg.equals("close")) break;
...
}
}
削除する必要がある「aop:aspectj-autoproxy」のエントリが重複しています。 'proxy-target-class =" true "' –
としてください。そして、 'MessageRecieverImpl'クラスのインスタンスをどうやって作りますか?この設定はどのようにロードされますか?あまり情報がありません...スニペットだけでなく、これを再現するサンプルを提供してください。 –
@M。 Deinum私はさらにいくつかの情報を追加しました –