要使用Annotation,需确认Spring的版本是2.0以上,JDK版本是5.0以上
使用注解的XML的配置
@Autowired
按类型去查找并注入
使用范围:
1.setter方法
2.以成员变量(bean)为参数的方法
3.构造方法或成员变量
@Autowired(required=false) 当查找失败时不会报错,默认不写时为required=true
@Qualifier
按名字去查找并注入
1.使用在成员变量上
2.使用在方法参数bean上
@Resource
按name值进行查找 @Resource有一个‘name’属性,缺省时,Spring 将这个值解释为要注射的 bean 的名字
@Component
是所有受Spring管理组件的通用形式。
@Repository(存储层)、@Service(服务层)和 @Controller(控制层)则是@Component的细化, 用来表示更具体的用例(例如,分别对应了持久化层、服务层和表现层)。也就是说, 你能用@Component来注解你的组件类, 但如果用@Repository、@Service 或@Controller来注解它们,你的类也许能更好地被工具处理,或与切面进行关联。
加上该注解的bean,就不用在xml中进行bean的定义了。
xml配置
使用@Component注解需要在xml配置自动扫描范围。同时Spring也提供了在扫描范围内进行过滤的配置。
过滤器类型 | 表达式范例 |
---|---|
annotation | org.example.SomeAnnotation |
assignable | org.example.SomeClass |
regex | org/.example/.Default.* |
aspectj | org.example..*Service+ |
// 注册名字为myMovieLister,类型为SimpleMovieLister,生命周期为prototype的bean
// 注册名字为movieFinderImpl ,类型为SimpleMovieLister的bean (默认bean名字为类名且首字母小写,生命周期为singleton)
@PostConstruct
表明该方法在bean初始化时首先执行
@PreDestroy
表明该方法在bean生命周期结束时执行