@javax.inject.Named
或 javax.annotation.ManagedBean
可以使用下面的方式来替代@Component
:
import javax.inject.Inject;
import javax.inject.Named;
@Named("movieListener") // @ManagedBean("movieListener") could be used as well
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
或@ManagedBean
时,可以使用与使用Spring注解完全相同的方式使用component-scanning组件扫描:
@Configuration
@ComponentScan(basePackages = "org.example")
public class AppConfig {
...
}
与@Component 相反,JSR-330@Named 和JSR-250ManagedBean 注解是不可组合使用的。 请使用Spring的stereotype model来构建自定义组件注解。 |