代码改变世界

Spring Annotation 笔记

2013-02-27 10:45  hduhans  阅读(162)  评论(0)    收藏  举报

1.配置spring annotation环境

   xml配置文件例:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"              <!--新增annotation配置项-->
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context                           <!--新增annotation配置项-->
           http://www.springframework.org/schema/context/spring-context-2.5.xsd">   <!--新增annotation配置项-->
       <context:annotation-config />                                        <!-这行代码会启动相应的annotation标签解析器->
       
  <bean id="userDao" class="com.bjsxt.dao.impl.UserDAOImpl_oracle"></bean>
  <bean name="userService" class="com.bjsxt.service.UserService">
      <property name="name" value="hanganglin"></property>
  </bean>
 
</beans>

 2.使用@Autowired 自动装配标签

然后在com.bjsxt.service.UserService类的setUserDao()方法中添加@Autowired

例:(导入包org.springframework.beans.factory.annotation.Autowired)

@Autowired
public void setUserDao(UserDAO userDao) {
    this.userDao = userDao;
}

当系统运行,Spring建立userService这个bean时,首先根据标签<context:annotation-config />启动AutowiredAnnotationBeanPostProcessor,然后AutowiredAnnotationBeanPostProcessor根据@Autowried标签自动去相应xml配置文件中查找与UserDAO类型匹配的bean(AutowiredAnnotationBeanPostProcessor默认自动装配类型是byType),此实例中找到的是<bean id="userDao" class="com.bjsxt.dao.impl.UserDAOImpl_oracle"></bean>这个bean

注:当xml中相同类型的bean有多个时,使用@Autowired标签会报错,这时候可以使用@Qualifier标签指定使用其中的某个bean,使用方法如下

@Autowired
public void setUserDao(@Qualifier("userDao2") UserDAO userDao) {
    this.userDao = userDao;
}

 

3.@Resource标签

  @Resource标签与@Autowired标签功能类似,可用于自动装配对应的bean(默认根据byName方式), 使用@Resource标签时,在set方法上增加标签,如:

@Resourcepublic void setUserDao(UserDAO userDao) {
    this.userDao = userDao;
}

  此时系统会根据UserDAO这个类型去查找对应的bean,也可以指定查找bean的名字,指定方式如:@Resource(name="userDao")

 

4.@Component标签

  在xml配置文件中设置bean查找的路径,如<context:component-scan base-package="com.bjsxt"/>,意思是查找com.bjsxt下的所有包,如果有@Component标签,就将其注册为bean组件,使用方法如:

package com.bjsxt.dao.impl;
import org.springframework.stereotype.Component;
import com.bjsxt.dao.UserDAO;
import com.bjsxt.model.User;

@Component("userDao")    //指定组件名为 userDao
public class UserDAOImpl implements UserDAO{
    public void save(User u){
        System.out.println("a user saved to mysql");
    }
}

 

 5.@Scope标签 同xml配置的scope,值有singleton和prototype,使用方法如下:

@Scope("prototype")
public class UserDAOImpl implements UserDAO{
    public void save(User u){
        System.out.println("a user saved to mysql");
    }
}

 

6.@PostConstruct标签和@PreDestroy标签,等同于xml配置的init-method和destroy-method

   初始化方法和销毁方法,使用时在对应的方法上加标签即可