spring security bean nicht gefunden Ausnahme
Ich versuche bis Frühjahr Sicherheit für ein mvc-Projekt, und ich bin eine harte Zeit. Ich bin mit dem spring-security 3.1.4.Release. Ich habe einen spring-security.xml Datei zusammen mit und mvc-dispatcher-servlet-Datei für die Konfiguration. Im Moment bin ich immer ein bean nicht gefunden Ausnahme für meinen User-Details-Bean.
In intellij bekomme ich eine "cannot resolve bean" - Meldung für die myUserDetailService. Ich auch nicht auflösen kann, wird das Paket "controller". Die Wurzel Fehler beim ausführen des Projekts:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.authentication.dao.DaoAuthenticationProvider#0': Cannot resolve reference to bean 'myUserDetailService' while setting bean property 'userDetailsService'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'myUserDetailService' is defined
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:329) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:107) [spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
Hier ist meine spring-security.xml Datei:
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- Enabling Spring beans auto-discovery -->
<context:component-scan base-package="controller, com.company.admin" />
<http auto-config="true">
<intercept-url pattern="/admin/*" access="ROLE_USER" />
<form-login login-page="/login" default-target-url="/admin/welcome" authentication-failure-url="/loginfailed" />
<logout logout-success-url="/logout" />
</http>
<authentication-manager>
<authentication-provider user-service-ref="myUserDetailService"/>
</authentication-manager>
</beans:beans>
Hier ist meine mvc-dispatcher-servlet.xml:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- Enabling Spring beans auto-discovery -->
<context:component-scan base-package="com.company.admin" />
<!-- Enabling Spring MVC configuration through annotations -->
<mvc:annotation-driven />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
Hier ist meine web.xml:
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Spring MVC Application</display-name>
<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>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/mvc-dispatcher-servlet.xml,
/WEB-INF/spring-security.xml
</param-value>
</context-param>
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
</web-app>
Ich bin im Grunde versucht, um diesem tutorial zu Folgen: http://kh-yiu.blogspot.com/2012/12/spring-mvc-security-custom.html und die UserDetailServiceImpl ist ziemlich identisch, aber ich habe es in einem anderen Ordner meiner Haupt - /java-Verzeichnis. Es ist wichtig zu beachten, dass ich mit Anmerkungen, um die Klasse deklarieren:
@Service("myUserDetailService")
public class UserDetailsServiceImpl implements UserDetailsService{
Irgendwelche Ideen? Ich bin eine sehr harte Zeit der Suche nach tutorials mit der gleichen Feder-version, die ich verwende, so ist es durchaus möglich, dass ich vergeigt habe xsd refs. Danke.
component-scan
Pakete restriktiver. Sie sind derzeit, sich gegenseitig zu überschreiben.Ich weiß nicht, was Sie bedeuten, indem Sie restriktiver. Wenn Sie sich gegenseitig zu überschreiben würde ich nur setzen Sie es in eine der Kontext-Dateien?
Jeder Ihrer Kontexte Scannen das gleiche Paket in der
component-scan
. Also jeder erstellen Bohnen. Jeder Rahmen sollte nur von scan-Paketen, die im Zusammenhang mit Ihren Zweck.Ahh... Ihr Anregungen veranlasste mich zu Graben, in den Namen des Pakets und fand, ich hatte ein Problem, wo die UserDetails Datei wurde entfernt. Nachlässige Aufsicht meinerseits. Ich löste das problem durch die Festlegung der Namen. Danke Jungs.
InformationsquelleAutor gleasonomicon | 2013-10-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie sind das hinzufügen einer Referenz zu:
Benötigen Sie eine bean mit id.. so etwas wie:
Nur ein bisschen brechen Ihre Ausnahme:
Aktualisiert:
Nun, dass Sie das @ - Service myUserDetailService... kann es sein, dupliziert der warum kommentieren-Klasse als @Service nicht erstellen bean?
component-scan
.Die service-Datei deklariert ist, mit einer Anmerkung. Ich könnte gehören, dass in der Frage. @Service("myUserDetailService") public class UserDetailsServiceImpl implementiert UserDetailsService{
Dein Vorschlag führte mich auf dem richtigen Weg, denn ich hatte zu beleben, die der Pfad für das Paket, die war falsch. Dummer Fehler meinerseits, aber vielen Dank für deine Hilfe. 🙂
InformationsquelleAutor porfiriopartida