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
- 自定義元件服務註冊配置元件
- Logback中如何自定義靈活的日誌過濾規則
- 【Spring註解驅動開發】元件註冊-@ComponentScan-自動掃描元件&指定掃描規則Spring元件
- Wireshark過濾規則
- wireshark 過濾規則
- Laravel 自定義規則Laravel
- 一段VUE程式碼:透過元件封裝全域性方法、自定義指令和註冊元件Vue元件封裝
- zuul 自定義路由規則Zuul路由
- 4、過濾器的使用及自定義過濾器過濾器
- keycloak~使用自定義的註冊頁
- ETL中如何自定義規則
- Laravel 自定義表單驗證-自定義驗證規則Laravel
- Spring Cloud Gateway---自定義過濾器SpringCloudGateway過濾器
- django2中自定義過濾器Django過濾器
- 淺嘗Spring註解開發_自定義註冊元件、屬性賦值、自動裝配Spring元件賦值
- jQuery Validate新增自定義驗證規則jQuery
- OpenHarmony裝飾指定自定義元件:@BuilderParam裝飾器元件UI
- Django自定義模板標籤與過濾器Django過濾器
- 13.gateway中的過濾器的介紹以及自定義過濾器Gateway過濾器
- HTML5 pattern自定義驗證規則HTML
- 團隊自定義 tslint & eslint 詳細規則EsLint
- 自定義Mybatis自動生成程式碼規則MyBatis
- Laravel 自定義驗證規則的問題Laravel
- 線上debug&gateway自定義路由規則Gateway路由
- 使用jakarta.validation自定義校驗規則
- 關於laravel使用自定義驗證規則後某些規則不生效Laravel
- Spring Cloud Gateway自定義Token校驗過濾器SpringCloudGateway過濾器
- Spring元件註冊Spring元件
- 自定義元件元件
- Spring Cloud Gateway 實現簡單自定義過濾器SpringCloudGateway過濾器
- 直播商城原始碼,vue 自定義指令過濾特殊字元原始碼Vue字元
- app直播原始碼,vue 自定義指令過濾特殊字元APP原始碼Vue字元
- 自定義註解
- Asp.Net Core入門之自定義服務註冊ASP.NET
- 日本為加密貨幣交易所修改註冊規則加密
- [Laravel] 自定義配置你的密碼驗證規則Laravel密碼
- 【Laravel】 自定義配置你的密碼驗證規則Laravel密碼