I always get it worked when reference to a bean in an other Spring context XML file but this time is doesn't work:
springapp-servlet.xml:
<!-- Spring Controllers -->
<b:bean id="loginSpringController" class="com.foo.bar.controllers.spring.LoginController"/>
<b:alias name="loginSpringController" alias="loginSprController"/>
application-context.xml
<!-- Custom AuthenticationProcessingFilter with Callbacks -->
<authentication-manager alias="authenticationManagerAlias"/>
<b:bean id="authentica开发者_StackOverflow中文版tionProcessingFilter" name="authenticationProcessingFilter" class="com.foo.bar.support.event.CustomAuthenticationProcessingFilter">
<b:property name="authenticationManager" ref="authenticationManagerAlias"/>
<b:property name="authenticationFailureUrl" value="/login.do?1=1"/>
<b:property name="filterProcessesUrl" value="/j_spring_security_check"/>
<b:property name="callback" ref="successfulAuthenticationCallbackImpl"/>
<b:property name="defaultTargetUrl" value="/index.html"/>
<!-- Reference to the sprint controller -->
<b:property name="loginSpringController"><b:ref bean="loginSprController"/></b:property>
<custom-filter position="AUTHENTICATION_PROCESSING_FILTER" />
But I still getting this error (even without the alias):
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'loginSprController' is defined
The beans in application-context.xml
(which is "owned" by the webapp) cannot see the beans in springapp-servlet.xml
(which is "owned" by the servlet). The servlets beans can see the webapp beans, however.
You need to rearrange your beans so that there are no references from application-context.xml
to springapp-servlet.xml
It seems like what you are calling 'application-context.xml' should be renamed to 'springapp-security.xml'. Then it's more obvious why the spring controller bean should be moved to 'springapp-servlet.xml'.
精彩评论