1 背景:在通過配置文件掃描bean到IOC容器的時候,需要的步驟。
1.1 給相應的了加上@Controller @Repository @Service @Component註解
1.2 在bean.xml文件中編寫<context:component-scan>標籤。這樣有註釋的類纔會被掃描到IOC容器中。
<context:component-scan base-package="com.componentscan"></context:component-scan>
2 通過註解的方式。 @ComponentScan註解
@ComponentScan(value="com.componentscan",
excludeFilters= {
@Filter(type=FilterType.ANNOTATION,classes= {Controller.class,Service.class})
})
public class ConfigTest {
@Bean(value="person01")
public Person person111() {
return new Person("haha", 100);
}
}
2.1 value : 指定需要掃描的包。
2.2 excludeFilters :按照某些規則,排除某些資源。
寫法:excludeFilters和includeFilters裏面是通過@Filter註解來指定包含或者排除的規則。
type:FilterType 來指定排除或者包含資源的方式
classes:來指定要排除的類。
解釋:例子中的意思是,按照註解的來排除資源,排除的資源是標註了@Controller和@Service的類不會被掃描到IOC中。
2.3 includeFilters: 按照某些規則,包含某些資源。
@Configuration
@ComponentScan(value = "com.componentscan", useDefaultFilters = false,
includeFilters = {
@Filter(type = FilterType.ANNOTATION, classes = {Controller.class, Service.class }) })
public class ConfigTest {
@Bean(value = "person01")
public Person person111() {
return new Person("haha", 100);
}
}
寫法:同excludeFilters寫法。
注意: 如果要使用includeFilters 的話,需要配合useDefaultFilters 參數,禁用後,自己設置的包含規則才能生效。
2.4 useDefaultFilters :是否使用默認規則。通常和 includeFilters 參數配合使用。