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.

Machen Sie Ihre 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

Schreibe einen Kommentar