03--元件註冊-自定義TypeFilter指定過濾規則
//配置類==配置檔案(xml)
@Configuration //告訴Spring這個一個配製類
@ComponentScan(value="com.ceshi",includeFilters={
@Filter(type=FilterType.CUSTOM,classes={
MyFilterType.class
})
})
//value:指定要掃描的包。
//excludeFilters=Filter[] 掃描排除
//includeFilters=Filter[] 只掃描
//FilterType.ANNOTION:按照註解
//FilterType.ASSIGNABLE_TYPE:按照給定的型別
//FilterType.REGEX:正規表示式
//FilterType.CUSTOM:自定義
@ComponentScans(value={})//掃描多個包
public class BeanConfig {
//給容器註冊一個Bean,型別class:預設為返回值的型別,標識id:預設為方法名
@Bean("person")
public PersonBean personBean(){
return new PersonBean("lishi","20");
}
}
import java.io.IOException;
import org.springframework.core.io.Resource;
import org.springframework.core.type.AnnotationMetadata;
import org.springframework.core.type.ClassMetadata;
import org.springframework.core.type.classreading.MetadataReader;
import org.springframework.core.type.classreading.MetadataReaderFactory;
import org.springframework.core.type.filter.TypeFilter;
public class MyFilterType implements TypeFilter {
/**
* MetadataReader:讀取當前正在掃描的類資訊
* MetadataReaderFactory:MetadataReader的工廠,根據工廠可以得到其他的MetadataReader類資訊
*/
@Override
public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory)
throws IOException {
// TODO Auto-generated method stub
//獲取當前類的註解資訊
AnnotationMetadata AnnotationMetadata = metadataReader.getAnnotationMetadata();
//獲取當前正在掃描的類資訊
ClassMetadata classMetadata = metadataReader.getClassMetadata();
//獲取當前類資源(類的路徑)
Resource resource = metadataReader.getResource();
System.out.println(classMetadata.getClassName());
return true;
}
}
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.ceshi.config.BeanConfig;
public class IOCTest {
@Test
public void test01(){
ApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(BeanConfig.class);
String[] names = annotationConfigApplicationContext.getBeanDefinitionNames();
for(String name:names){
System.out.println(name);
}
}
}
com.ceshi.bean.PersonBean
com.ceshi.demo.MyFilterType
com.ceshi.IOCTest
com.ceshi.MainTest
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
beanConfig
personBean
personController
personDao
myFilterType
IOCTest
mainTest
personService
person
相關文章
- 【Spring註解驅動開發】自定義TypeFilter指定@ComponentScan註解的過濾規則SpringFilter
- Eureka:擴充套件ClientFilter實現服務註冊自定義過濾套件clientFilter
- Logback中如何自定義靈活的日誌過濾規則
- 【Spring註解驅動開發】元件註冊-@ComponentScan-自動掃描元件&指定掃描規則Spring元件
- wireshark 過濾規則
- Laravel 自定義規則Laravel
- zuul 自定義路由規則Zuul路由
- 一段VUE程式碼:透過元件封裝全域性方法、自定義指令和註冊元件Vue元件封裝
- django自定義 過濾器薦Django過濾器
- 4、過濾器的使用及自定義過濾器過濾器
- 自定義元件服務註冊配置元件
- MVC自定義檢視規則MVC
- ETL中如何自定義規則
- 08.Django自定義模板,自定義標籤和自定義過濾器Django過濾器
- angular中的自定義過濾器Angular過濾器
- 詳解Django自定義過濾器Django過濾器
- django自定義過濾器例項Django過濾器
- keycloak~使用自定義的註冊頁
- Laravel 自定義表單驗證-自定義驗證規則Laravel
- 關於OCLint自定義規則
- django2中自定義過濾器Django過濾器
- SQLContext、HiveContext自定義函式註冊SQLContextHive函式
- xib自定義cell不用註冊的方法
- jQuery validate 自定義樣式、規則jQuery
- Spring Cloud Gateway---自定義過濾器SpringCloudGateway過濾器
- Angular過濾器 自定義及使用方法Angular過濾器
- Django自定義模板標籤與過濾器Django過濾器
- 淺嘗Spring註解開發_自定義註冊元件、屬性賦值、自動裝配Spring元件賦值
- C# 註冊並使用sqlite 自定義函式C#SQLite函式
- 13.gateway中的過濾器的介紹以及自定義過濾器Gateway過濾器
- Laravel 自定義驗證規則的問題Laravel
- 自定義Mybatis自動生成程式碼規則MyBatis
- HTML5 pattern自定義驗證規則HTML
- jQuery Validate新增自定義驗證規則jQuery
- 利用Sonar定製自定義掃描規則
- 線上debug&gateway自定義路由規則Gateway路由
- 關於laravel使用自定義驗證規則後某些規則不生效Laravel
- 自定義 Azure Table storage 查詢過濾條件