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.注意点

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

猜你喜欢

转载自www.cnblogs.com/juncaoit/p/9941405.html