chenise 2017-03-21 23:32 采纳率: 33.3%
浏览 904

spring AOP遇到的问题

在ssh框架中,我想通过aop在用户进行某些操作时验证登陆。但是发现 在aop的动态代理中被代理对象(此例中为ReadJournalAction)的所以属性都为null.
即 还没有经过ognl为ReadJournalAction中的属性赋值就进入了aop代理。
请问这是什么原因?大家又是怎么做的呢?
package second.actions.journal;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.springframework.context.annotation.Scope;

import second.dao.madol.Journal;
@Action(value="readjournal",results={@Result(name="success",type="freemarker",location="/Pages/journal.ftl")})
@Scope("prototype")
public class ReadJournalAction extends JournalAction{
private int journalID;

private  Journal journal;




@Override
public String execute() throws Exception {

    journal=journalDAO.findJournal(journalID);



    return SUCCESS;
}



public Journal getJournal() {
    return journal;
}



public int getJournalID() {
    return journalID;
}

public void setJournalID(int journalID) {
    System.out.println("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC");
    this.journalID = journalID;
}

public void setJournal(Journal journal) {
    this.journal = journal;
}

}
package second.actions.aop;

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class AopTest {

//@Pointcut("execution(* second.actions.journal.ReadJournalAction.execute(..))") 


@Before("execution(* second.actions.journal.ReadJournalAction.*(..))")
public void dobefore(){

    System.out.println("before  login~~~~");
    return;

}
@After("execution(* second.actions.journal.ReadJournalAction.*(..))")
public void doafter(){

    System.out.println("after  login~~~~~~~~~");
    return;

}

}



  • 写回答

1条回答 默认 最新

  • 雕虫大计 2017-03-22 02:34
    关注

    aop切入的方法,不应该是所有方法,只需要execute方法

    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵