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
初始化方法和销毁方法,使用时在对应的方法上加标签即可
浙公网安备 33010602011771号