最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot項(xiàng)目刪除Bean或者不加載Bean的問(wèn)題解決

 更新時(shí)間:2025年01月13日 16:47:56   作者:抹灰丶  
文章介紹了在Spring Boot項(xiàng)目中如何使用@ComponentScan注解和自定義過(guò)濾器實(shí)現(xiàn)不加載某些Bean的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧

使用@ComponentScan注解中的@ComponentScan.Filter標(biāo)記不加載。

@ComponentScan(excludeFilters = {@ComponentScan.Filter(type = FilterType.ASPECTJ, pattern ={"包名"})})
@ComponentScan(excludeFilters  = {@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE,classes = 類名.class)})

實(shí)現(xiàn)BeanFactoryPostProcessor接口,編譯完畢后刪除 (當(dāng)然這里你也可以寫一個(gè)配置類)

@SpringBootApplication
public class EmpServiceApplication implements BeanFactoryPostProcessor {
    public static void main(String[] args) {
        SpringApplication.run(EmpServiceApplication.class, args);
    }
    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
                // 檢查是否是 BeanDefinitionRegistry
                if (beanFactory instanceof BeanDefinitionRegistry) {
                    BeanDefinitionRegistry registry = (BeanDefinitionRegistry) beanFactory;
                    // 獲取所有Bean的名稱
                    String[] beanNames = beanFactory.getBeanDefinitionNames();
                    for (String beanName : beanNames) {
                        // 獲取Bean的定義
                        BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanName);
                        // 獲取Bean的類名
                       String beanClassName = beanDefinition.getBeanClassName();
                        // 自定義排除邏輯
                        if (beanClassName != null && beanClassName.startsWith("包名")) {
                            // 移除不需要的Bean
                            registry.removeBeanDefinition(beanName);
                            System.out.println("Excluded bean: " + beanName);
                        }}} 
                else {
            throw new IllegalStateException("BeanFactory is not a BeanDefinitionRegistry");
        }
    }
}

使用@ComponentScan,配合自定義過(guò)濾器,實(shí)現(xiàn)TypeFilter接口,指定不編譯不加載某些Bean

@SpringBootApplication
@ComponentScan(excludeFilters = @ComponentScan.Filter(
    // 使用自定義過(guò)濾器               
    type = FilterType.CUSTOM, 
    // 指定自定義過(guò)濾器類
    classes = CustomExcludeFilter.class))
public class ServiceApplication{
    public static void main(String[] args) {
        SpringApplication.run(ServiceApplication.class, args);
    }
  }
}
import org.springframework.core.type.classreading.MetadataReader;
import org.springframework.core.type.classreading.MetadataReaderFactory;
import org.springframework.core.type.filter.TypeFilter;
/**
 * @Description: 自定義排除過(guò)濾器:實(shí)現(xiàn)自定義的排除邏輯,返回true表示排除該類,返回false表示包含該類。
 * @Version: 1.0
 **/
public class CustomExcludeFilter implements TypeFilter {
    @Override
    public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) {
        // 在這里實(shí)現(xiàn)自定義的排除邏輯。例如,根據(jù)類的名稱、包名或其他屬性來(lái)決定是否排除該類。這里獲得是類的全限定名。版本升級(jí)請(qǐng)注意
        String className = metadataReader.getClassMetadata().getClassName();
        if (className != null && className.startsWith("包名")) {
            // 返回true表示排除該類。
            return true;
        }
        // 返回false表示包含該類。
        return false;
    }
}

到此這篇關(guān)于SpringBoot項(xiàng)目刪除Bean或者不加載Bean的文章就介紹到這了,更多相關(guān)SpringBoot項(xiàng)目不加載Bean內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

昌吉市| 航空| 朝阳县| 弋阳县| 安远县| 板桥市| 舟山市| 庆阳市| 定日县| 南和县| 漠河县| 柳江县| 丹棱县| 昭觉县| 开远市| 彰化县| 韶山市| 益阳市| 南召县| 衡阳县| 大同县| 明星| 红桥区| 土默特左旗| 丽江市| 阳新县| 长子县| 大余县| 德兴市| 千阳县| 新津县| 武清区| 库尔勒市| 神农架林区| 文安县| 汾西县| 岑巩县| 定边县| 荥经县| 肥东县| 庆云县|