Java 找不到引用的Bean
我是Spring新手,正在使用Spring3.2.5版本。我有一个名为MongouseRDeailsService的自定义用户详细信息服务。这是我的application-security.xmlJava 找不到引用的Bean,java,xml,spring,spring-mvc,Java,Xml,Spring,Spring Mvc,我是Spring新手,正在使用Spring3.2.5版本。我有一个名为MongouseRDeailsService的自定义用户详细信息服务。这是我的application-security.xml <http auto-config="true"> <intercept-url pattern="/secured/*" access="ROLE_USER" /> <form-login login-processing-url="/login" logi
<http auto-config="true">
<intercept-url pattern="/secured/*" access="ROLE_USER" />
<form-login login-processing-url="/login" login-page="/loginPage"
username-parameter="username" password-parameter="password"
default-target-url="/secured/mypage" authentication-failure-url="/loginPage?auth=fail" />
<logout logout-url="/logout" logout-success-url="/logoutPage" />
</http>
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="mongoUserDetailsService">
<password-encoder hash="plaintext" />
</authentication-provider>
</authentication-manager>
这是我的dispatcher-servlet.xml
<context:component-scan base-package="com.srccodes.spring.controller" />
<mvc:annotation-driven />
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/" />
<property name="suffix" value=".jsp" />
</bean>
<bean id="mongoUserDetailsService" class="com.srccodes.spring.security.MongoUserDetailsService">
</bean>
我在提供身份验证提供程序的application-security.xml中收到一个bean not found错误。我已经检查了路径,它们是正确的
我也在添加web.xml
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- Spring context files to be loaded -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml,
/WEB-INF/application-security.xml,
/WEB-INF/mongo-config.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- filter declaration for Spring Security -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
调度员
org.springframework.web.servlet.DispatcherServlet
1.
调度员
/
上下文配置位置
/WEB-INF/applicationContext.xml,
/WEB-INF/application-security.xml,
/WEB-INF/mongo-config.xml
org.springframework.web.context.ContextLoaderListener
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
在application-security.xml文件中,必须导入dispatcher-servlet.xml以下代码显示了导入sysntax:
1-如果dispatcher-servlet.xml是buildPath:
<import resource="classpath:DIR/dispatcher-servlet.xml" />
2-如果是WEB-INF目录
<import resource="DIR/dispatcher-servlet.xml" />
如果您已将
应用程序安全性.xml
定义为根上下文(即,通过…ContextLoaderListener加载),并通过DispatcherServlet
将DispatcherServlet.xml
定义为根上下文,则您将遇到可见性/范围问题。DispatcherServlet上下文是根上下文的子上下文,因此在DispatcherServlet上下文中定义的bean对根上下文不可见,但根上下文bean对所有子servlet上下文可见
因此,将您的mongouserdeailsservice
移动到您的application-security.xml
更新:
您将加载dispatcher-servlet.xml配置两次,一次是在
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/dispatcher-servlet.xml
/WEB-INF/application-security.xml
/WEB-INF/mongo-config.xml
</param-value>
</context-param>
上下文配置位置
/WEB-INF/dispatcher-servlet.xml
/WEB-INF/application-security.xml
/WEB-INF/mongo-config.xml
并且再次隐式地(根据Spring约定)使用DispatcherServlet。为了更好地理解ApplicationContext和DispatcherServlet,您应该查看
显示一个错误,表示dispatcher-servlet.xml中不允许导入。很抱歉,回复太晚。。。迫切需要。如何将服务移动到application-security.xml?请看一下我添加的web.xml。我删除了dispatcher-servlet.xml。然后,我将安全性和存储库转移到applicationContext.xml。(新文件)。我无法将MongouseRDeailsService迁移到application-security.xml。我试过。。。但是弹出一个错误。这是唯一能支撑的部分。你能举个例子吗?
<context:component-scan base-package="com.srccodes.spring" />
<context:component-scan base-package="com.srccodes.spring.security" />
<context:component-scan base-package="com.srccodes.spring.domain" />
<context:component-scan base-package="com.srccodes.spring.repositories" />
<context:component-scan base-package="com.srccodes.spring.controller" />