@Named等同于@Component注解
JSR-330中,@javax.inject.Named和Spring中的@Component的职责类似。
import javax.inject.Inject; import javax.inject.Named; @Named("movieListener") public class SimpleMovieLister { private MovieFinder movieFinder; @Inject public void setMovieFinder(MovieFinder movieFinder) { this.movieFinder = movieFinder; } // ... }
@Component的使用中经常是不需要指定名字的,@Named注解也是如此。
import javax.inject.Inject; import javax.inject.Named; @Named public class SimpleMovieLister { private MovieFinder movieFinder; @Inject public void setMovieFinder(MovieFinder movieFinder) { this.movieFinder = movieFinder; } // ... }
在使用@Named注解的时候,也同样可以使用组件扫描。
@Configuration @ComponentScan(basePackages = "org.example") public class AppConfig { ... }
和Spring的@Component组件不同的是,JSR-330的Named注解不可以组合来使用,如果希望自定义组件注解的话,还请使用Spring的组件注解。
JSR-330标准注解的限制
当使用JSR-330标准的注解时,了解其和Spring注解的不同点也是十分必要的,参考如下表。
