http://jira.springframework.org/browse/SEC-773. Added extra constructor to MethodDefinitionSourceAdvisor to allow for lazy initialization of the advice (MethodSecurityInterceptor), and in turn the AuthenticationManager and ay referenced UserDetailsService implementations.
@ -37,11 +40,13 @@ public class GlobalMethodSecurityBeanDefinitionParserTests {
@@ -37,11 +40,13 @@ public class GlobalMethodSecurityBeanDefinitionParserTests {
@ -51,10 +56,30 @@ public class GlobalMethodSecurityBeanDefinitionParserTests {
@@ -51,10 +56,30 @@ public class GlobalMethodSecurityBeanDefinitionParserTests {
Assert.notNull(advice.getObjectDefinitionSource(),"Cannot construct a MethodDefinitionSourceAdvisor using a MethodSecurityInterceptor that has no ObjectDefinitionSource configured");
Assert.notNull(advice.getObjectDefinitionSource(),"Cannot construct a MethodDefinitionSourceAdvisor using a "+
"MethodSecurityInterceptor that has no ObjectDefinitionSource configured");
@ -67,7 +97,20 @@ public class MethodDefinitionSourceAdvisor extends AbstractPointcutAdvisor {
@@ -67,7 +97,20 @@ public class MethodDefinitionSourceAdvisor extends AbstractPointcutAdvisor {
}
publicAdvicegetAdvice(){
returninterceptor;
synchronized(this.adviceMonitor){
if(interceptor==null){
Assert.notNull(adviceBeanName,"'adviceBeanName' must be set for use with bean factory lookup.");
Assert.state(beanFactory!=null,"BeanFactory must be set to resolve 'adviceBeanName'");