20 Temmuz 2018 Cuma

SpringContext @ComponentScan Anotasyonu

Giriş
Şu satırı dahil ederiz.
import org.springframework.context.annotation.ComponentScan;
Açıklaması şöyle. Eğer ana main dosyamız com.foo paketi içindeyse, com.foo.* paketlerini tarar.
If specific packages are not defined, scanning will occur from the package of the class that declares this annotation.
Açıklaması şöyle.
@ComponentScan will give you a list of all the classes with the @Component, @Service, @Repository annotation in a package
basePackages Alanı
Örnek
Şöyle yaparız.
@Configuration
@ComponentScan({"my.packages"})
public class AppManager {

  @Bean(name = "jmxExporter")
  public Exporter jmxExporter() {
    return new Exporter();
  }
}
Örnek
Birden fazla paket vermek için şöyle yaparız.
@ComponentScan({"edu.miis.Controllers","edu.miis.Service","edu.miis.Dao"})
Örnek
XML ile şöyle yaparız.
<context:component-scan base-package="com.test.chomage" />
Örnek
XML ile şöyle yaparız.
<context:component-scan
  base-package="com.example.project"
  scope-resolver="org.springframework.context.annotation.Jsr330ScopeMetadataResolver">
  <context:include-filter type="annotation" expression="javax.ejb.Stateless"/>
</context:component-scan>
excludeFilters Alanı
Sadece @Controller ve @ControllerAdvice anotasyonuna sahip sınıfları yüklemek için şöyle yaparız.
@Configuration
@ComponentScan(
    basePackages = { ... },
    excludeFilters = {
        @ComponentScan.Filter(type=FilterType.ANNOTATION, value=Controller.class),
        @ComponentScan.Filter(type=FilterType.ANNOTATION, value=ControllerAdvice.class)
    }
)

Hiç yorum yok:

Yorum Gönder