• 041 Spring Boot中排除功能的处理


      这个问题,原本是没有注意,主要是理解的不够深刻。

    1.先看我的配置文件

     1 package com.springBoot.ioc.config;
     2 
     3 
     4 import com.springBoot.ioc.controller.StudentController;
     5 import org.springframework.context.annotation.ComponentScan;
     6 import org.springframework.context.annotation.Configuration;
     7 import org.springframework.context.annotation.FilterType;
     8 
     9 /**
    10  * @Desciption 配置文件
    11  */
    12 /*@Configuration
    13 public class MySpringBootConfig {
    14     @Bean(name="student")
    15     public Student getStu(){
    16         Student student=new Student();
    17         student.setId(1L);
    18         student.setUsername("Tom");
    19         student.setPassword("123456");
    20         return student;
    21     }
    22 }*/
    23 @Configuration
    24 @ComponentScan(basePackages="com.springBoot.ioc.*",excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = StudentController.class)})
    25 public class MySpringBootConfig{
    26 
    27 }

    2.然后运行程序,看报错信息

     1 9:51:13.797 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@67b92f0a: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.event.internalEventListenerProcessor,org.springframework.context.event.internalEventListenerFactory,mySpringBootConfig]; root of factory hierarchy
     2 Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.springBoot.ioc.config.MySpringBootConfig]; nested exception is java.lang.IllegalArgumentException: @ComponentScan ANNOTATION type filter requires an annotation type: class com.springBoot.ioc.controller.StudentController
     3     at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:184)
     4     at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:316)
     5     at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:233)
     6     at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:271)
     7     at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:91)
     8     at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:692)
     9     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:530)
    10     at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:88)
    11     at com.springBoot.ioc.test.IocTestDemo.main(IocTestDemo.java:17)
    12 Caused by: java.lang.IllegalArgumentException: @ComponentScan ANNOTATION type filter requires an annotation type: class com.springBoot.ioc.controller.StudentController
    13     at org.springframework.util.Assert.assignableCheckFailed(Assert.java:655)
    14     at org.springframework.util.Assert.isAssignable(Assert.java:586)
    15     at org.springframework.context.annotation.ComponentScanAnnotationParser.typeFiltersFor(ComponentScanAnnotationParser.java:142)
    16     at org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:102)
    17     at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:288)
    18     at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:245)
    19     at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:202)
    20     at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:170)
    21     ... 8 more
    22 
    23 Process finished with exit code 1

    3.原因

      在excludedFilters中的class属性指定的是Controller,Service之类的,不是具体的类。

      应该是如下的程序:

     1 package com.springBoot.ioc.config;
     2 
     3 
     4 import com.springBoot.ioc.controller.StudentController;
     5 import org.springframework.context.annotation.ComponentScan;
     6 import org.springframework.context.annotation.Configuration;
     7 import org.springframework.context.annotation.FilterType;
     8 import org.springframework.stereotype.Controller;
     9 
    10 /**
    11  * @Desciption 配置文件
    12  */
    13 /*@Configuration
    14 public class MySpringBootConfig {
    15     @Bean(name="student")
    16     public Student getStu(){
    17         Student student=new Student();
    18         student.setId(1L);
    19         student.setUsername("Tom");
    20         student.setPassword("123456");
    21         return student;
    22     }
    23 }*/
    24 @Configuration
    25 @ComponentScan(basePackages="com.springBoot.ioc.*",excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Controller.class)})
    26 public class MySpringBootConfig{
    27 
    28 }

    4.注意点

      导包的时候,也不要出错。

  • 相关阅读:
    Java和Flex积分误差(一个)
    分组统计查询(本章小结)
    crm使用soap删除实体
    宁可信其有,谎言重复千遍就会成为真理,性格可以被改变
    意想不到的一天,无法逃出的肖申克
    测试使用wiz来发布blog
    2013年7月4日星期四
    2013年7月3日星期三
    2013年7月2日星期二
    2013年7月1日星期一
  • 原文地址:https://www.cnblogs.com/juncaoit/p/9941405.html
Copyright © 2020-2023  润新知