2016-02-13 90 views
0

以下是错误:自动装配异常

Severe: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'appSecurityConfig': Injection of autowired dependencies failed; 
nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter.setAuthenticationConfiguration(org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration); 
nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} 

这里是我的pom.xml ::

<modelVersion>4.0.0</modelVersion> 

<groupId>com.atithinfosoft.traveltrip</groupId> 
<artifactId>TravelTrip</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>war</packaging> 

<name>World Travel Trip</name> 

<properties> 
    <java-version>1.8</java-version> 
    <org.springframework-version>4.1.3.RELEASE</org.springframework-version> 
    <spring-security-version>3.2.5.RELEASE</spring-security-version> 
    <hibernate.version>4.3.7.Final</hibernate.version> 
    <org.slf4j-version>1.6.1</org.slf4j-version> 
    <jackson-version>2.4.4</jackson-version> 
    <postgres.driver.version>9.3-1100-jdbc41</postgres.driver.version> 

    <!--<endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>--> 
</properties> 

<dependencies> 
    <!-- <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-web-api</artifactId> 
     <version>7.0</version> 
     <scope>provided</scope> 
    </dependency>--> 

    <!-- Spring --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${org.springframework-version}</version> 
     <exclusions> 
      <!-- Exclude Commons Logging in favor of SLF4j --> 
      <exclusion> 
       <groupId>commons-logging</groupId> 
       <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${org.springframework-version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     <version>${org.springframework-version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>${org.springframework-version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
     <version>${org.springframework-version}</version> 
    </dependency> 

    <!-- Hibernate --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>${hibernate.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>${hibernate.version}</version> 
    </dependency> 

    <!-- Spring security --> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-core</artifactId> 
     <version>${spring-security-version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-web</artifactId> 
     <version>${spring-security-version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-config</artifactId> 
     <version>${spring-security-version}</version> 
    </dependency> 

    <dependency> 
     <groupId>com.allanditzel</groupId> 
     <artifactId>spring-security-csrf-token-filter</artifactId> 
     <version>1.1</version> 
    </dependency> 

    <!-- Logging --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>${org.slf4j-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>jcl-over-slf4j</artifactId> 
     <version>${org.slf4j-version}</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>${org.slf4j-version}</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.16</version> 
    </dependency> 

    <!-- Jackson JSON Processor --> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>${jackson-version}</version> 
    </dependency> 

    <!-- servlet container provided dependencies --> 
    <dependency> 
     <groupId>org.apache.tomcat</groupId> 
     <artifactId>tomcat-servlet-api</artifactId> 
     <version>7.0.30</version> 
     <scope>provided</scope> 
    </dependency> 

    <!-- test dependencies--> 
    <dependency> 
     <groupId>com.jayway.jsonpath</groupId> 
     <artifactId>json-path</artifactId> 
     <version>0.8.1</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-lang3</artifactId> 
     <version>3.3.2</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hsqldb</groupId> 
     <artifactId>hsqldb</artifactId> 
     <version>2.3.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.testng</groupId> 
     <artifactId>testng</artifactId> 
     <version>6.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-lang3</artifactId> 
     <version>3.3.2</version> 
     <type>jar</type> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.3</version> 
      <configuration> 
       <failOnMissingWebXml>false</failOnMissingWebXml> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.6</version> 
      <executions> 
       <execution> 
        <id>install</id> 
        <phase>install</phase> 
        <goals> 
         <goal>sources</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${endorsed.dir}</outputDirectory> 
         <silent>true</silent> 
         <artifactItems> 
          <artifactItem> 
           <groupId>javax</groupId> 
           <artifactId>javaee-endorsed-api</artifactId> 
           <version>7.0</version> 
           <type>jar</type> 
          </artifactItem> 
         </artifactItems> 
         <path>/</path> 
         <httpsPort>8443</httpsPort> 
         <keystoreFile>${basedir}/other/keystore.jks</keystoreFile> 
         <keystorePass>secret</keystorePass> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

下面是Apsecurityconfig.java代码::

public class AppSecurityConfig extends WebSecurityConfigurerAdapter{ 

private static final Logger LOGGER = Logger.getLogger(AppSecurityConfig.class); 

//User details service created and passed in security file 
@Autowired 
private SecurityUserDetailsService userDetailsService; 

@Autowired 
DataSource dataSource; 

@Override 
protected void configure(AuthenticationManagerBuilder auth) throws Exception { 
    auth.userDetailsService(userDetailsService).passwordEncoder(new BCryptPasswordEncoder()); 
} 

@Override 
protected void configure(HttpSecurity http) throws Exception { 

    CsrfTokenResponseHeaderBindingFilter csrfTokenFilter = new CsrfTokenResponseHeaderBindingFilter(); 
    http.addFilterAfter(csrfTokenFilter, CsrfFilter.class); 

    http 
      .authorizeRequests() 
      .antMatchers("/resources/public/**").permitAll() 
      .antMatchers("/resources/img/**").permitAll() 
      .antMatchers("/resources/bower_components/**").permitAll() 
      .antMatchers(HttpMethod.POST, "/user").permitAll() 
      .anyRequest().authenticated() 
      .and() 
      .formLogin() 
      .defaultSuccessUrl("/index.html") 
      .loginProcessingUrl("/authenticate") 
      .usernameParameter("username") 
      .passwordParameter("password") 
      .successHandler(new AjaxAuthenticationSuccessHandler(new SavedRequestAwareAuthenticationSuccessHandler())) 
      .loginPage("/resources/public/login.html") 
      .and() 
      .httpBasic() 
      .and() 
      .logout() 
      .logoutUrl("/logout") 
      .logoutSuccessUrl("/resources/public/login.html") 
      .permitAll(); 

    if ("true".equals(System.getProperty("httpsOnly"))) { 
     LOGGER.info("launching the application in HTTPS-only mode"); 
     http.requiresChannel().anyRequest().requiresSecure(); 
    } 
} 

}

这里是ServletContextConfig.java代码::

@Configuration 
@EnableWebMvc 
@ComponentScan("com.atithinfosoft.traveltrip.controllers") 
public class ServletContextConfig extends WebMvcConfigurerAdapter { 

// @Bean 
// public UrlBasedViewResolver setupViewResolver() { 
//  UrlBasedViewResolver resolver = new UrlBasedViewResolver(); 
//  resolver.setPrefix("/resources/"); 
//  resolver.setSuffix(".jsp"); 
//  resolver.setViewClass(JstlView.class); 
//  return resolver; 
// } 

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); 
} 
} 

我无法运行它。构建是可疑的创建,但会产生错误。 作为GlassFish应用服务器,部署,空,假

+0

的安全配置添加您spring.xml文件。另请参阅这些问题是否可以帮助您:https://stackoverflow.com/questions/21526132/could-not-autowire-field-private-org-springframework-security-core-userdetails https://stackoverflow.com/questions/ 23262168 /错误创造豆与 - 名-securityconfig喷射的,自动装配,依赖形成的 –

回答

0

你可能需要启用这样

@EnableWebSecurity 
public class AppSecurityConfig extends WebSecurityConfigurerAdapter{ 
//... 
}