diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/ComponentScanAspectJFilterApp.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/ComponentScanAspectJFilterApp.java index aea7c0a2cd..5380e99ef3 100644 --- a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/ComponentScanAspectJFilterApp.java +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/aspectj/ComponentScanAspectJFilterApp.java @@ -5,10 +5,10 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; @Configuration -@ComponentScan(includeFilters = @ComponentScan.Filter(type = FilterType.ASPECTJ, -pattern = "com.baeldung.componentscan.filter.aspectj.* " - + "&& !(com.baeldung.componentscan.filter.aspectj.L* " - + "|| com.baeldung.componentscan.filter.aspectj.C*)")) +@ComponentScan(includeFilters = @ComponentScan.Filter(type = FilterType.ASPECTJ, + pattern = "com.baeldung.componentscan.filter.aspectj.* " + + "&& !(com.baeldung.componentscan.filter.aspectj.L* " + + "|| com.baeldung.componentscan.filter.aspectj.C*)")) public class ComponentScanAspectJFilterApp { public static void main(String[] args) { } diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Cat.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Cat.java index 17a8e87b7a..5a4983b699 100644 --- a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Cat.java +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Cat.java @@ -1,4 +1,4 @@ package com.baeldung.componentscan.filter.custom; -public class Cat extends Pet { +public class Cat { } diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilter.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilter.java index 30ccb19276..fc21c28135 100644 --- a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilter.java +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilter.java @@ -12,11 +12,8 @@ public class ComponentScanCustomFilter implements TypeFilter { @Override public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { ClassMetadata classMetadata = metadataReader.getClassMetadata(); - String superClass = classMetadata.getSuperClassName(); - if (Pet.class.getName() - .equalsIgnoreCase(superClass)) { - return true; - } - return false; + String fullyQualifiedName = classMetadata.getClassName(); + String className = fullyQualifiedName.substring(fullyQualifiedName.lastIndexOf(".") + 1); + return className.length() > 5 ? true : false; } } diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Pet.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Elephant.java similarity index 68% rename from spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Pet.java rename to spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Elephant.java index c9be5a39c2..8ae065a391 100644 --- a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Pet.java +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/custom/Elephant.java @@ -1,4 +1,4 @@ package com.baeldung.componentscan.filter.custom; -public class Pet { +public class Elephant { } diff --git a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterApp.java b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterApp.java index d2b7bd03fb..b7a3f5cd8a 100644 --- a/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterApp.java +++ b/spring-boot-di/src/main/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterApp.java @@ -5,7 +5,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; @Configuration -@ComponentScan(includeFilters = @ComponentScan.Filter(type = FilterType.REGEX, pattern = ".*[t]")) +@ComponentScan(includeFilters = @ComponentScan.Filter(type = FilterType.REGEX, pattern = ".*(nt)")) public class ComponentScanRegexFilterApp { public static void main(String[] args) { diff --git a/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilterAppIntegrationTest.java b/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilterAppIntegrationTest.java index 097214a2cf..9902a620ad 100644 --- a/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilterAppIntegrationTest.java +++ b/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/custom/ComponentScanCustomFilterAppIntegrationTest.java @@ -1,18 +1,18 @@ package com.baeldung.componentscan.filter.custom; -import static org.junit.Assert.assertThat; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.test.context.junit4.SpringRunner; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + import static org.hamcrest.CoreMatchers.*; +import static org.junit.Assert.assertThat; @RunWith(SpringRunner.class) @SpringBootTest(classes = ComponentScanCustomFilterApp.class) @@ -22,9 +22,10 @@ public class ComponentScanCustomFilterAppIntegrationTest { public void whenCustomFilterIsUsed_thenComponentScanShouldRegisterBeanMatchingCustomFilter() { ApplicationContext applicationContext = new AnnotationConfigApplicationContext(ComponentScanCustomFilterApp.class); List beans = Arrays.stream(applicationContext.getBeanDefinitionNames()) - .filter(bean -> !bean.contains("org.springframework") && !bean.contains("componentScanCustomFilterApp")) - .collect(Collectors.toList()); + .filter(bean -> !bean.contains("org.springframework") && !bean.contains("componentScanCustomFilterApp") + && !bean.contains("componentScanCustomFilter")) + .collect(Collectors.toList()); assertThat(beans.size(), equalTo(1)); - assertThat(beans.get(0), equalTo("cat")); + assertThat(beans.get(0), equalTo("elephant")); } } diff --git a/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterAppIntegrationTest.java b/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterAppIntegrationTest.java index 3163581c37..38d6acd7f8 100644 --- a/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterAppIntegrationTest.java +++ b/spring-boot-di/src/test/java/com/baeldung/componentscan/filter/regex/ComponentScanRegexFilterAppIntegrationTest.java @@ -24,8 +24,7 @@ public class ComponentScanRegexFilterAppIntegrationTest { List beans = Arrays.stream(applicationContext.getBeanDefinitionNames()) .filter(bean -> !bean.contains("org.springframework") && !bean.contains("componentScanRegexFilterApp")) .collect(Collectors.toList()); - assertThat(beans.size(), equalTo(2)); - assertThat(beans.contains("cat"), equalTo(true)); + assertThat(beans.size(), equalTo(1)); assertThat(beans.contains("elephant"), equalTo(true)); } }