我陷入了一個非常奇怪的問題。我上課Java/cglib忽略方法何時只能調用超級?
public class A extends ...{
}
public class B extends A{
@Override
@PreAuthorize(...)
public String doMagic(){
String v = super.doMagic();
doSomeOtherThings();
...
return v;
}
}
有延伸的多個類,所以我重構成:
public class A extends ...{
@Override
public String doMagic(){
String v = super.doMagic();
doSomeOtherThings();
...
return v;
}
}
public class B extends A{
@Override
@PreAuthorize(...)
public String doMagic(){
return super.doMagic();
}
}
但現在有趣的事情發生了......
我有測試驗證的訪問權限(基於PreAuthorize),它在IntelliJ中正確執行,但在使用maven執行時失敗。它看起來像來自B的方法被忽略和/或註釋沒有被處理。 在第一個版本中,測試通過了這兩種情況。
任何想法可能發生了什麼?這似乎是這個問題可能要CGLIB有關..
,並在這樣的情況下,再次工作:
public class A extends ...{
protecte String doMagic2(){
String v = super.doMagic();
doSomeOtherThings();
...
return v;
}
}
public class B extends A{
@Override
@PreAuthorize(...)
public String doMagic(){
return doMagic2();
}
}
你是否在maven和你的ide起訴相同的jdk? –
您應該發佈有關A延伸的類的更多詳細信息。它可能有幫助。 – djangofan
擴展業務服務,與訪問控制無關 – zibi