第五章 注释的注入
一:注释的方法注入
???1.XML配置文件的改动:????
? 2.依赖包的导入:
? aopalliance.jar
?? asm-2.2.3.jar
?? asm-commons-2.2.3.jar
?? asm-util-2.2.3.jar
?? aspectjlib.jar
?? aspectjrt.jar
?? aspectjweaver.jar
?? cglib-nodep-2.1_3.jar
?? commons-attributes-api.jar
?? commons-attributes-compiler.jar
?? commons-logging.jar
?? log4j-1.2.15.jar
?? persistence.jar
?? spring-agent.jar
?? spring-aop.jar
?? spring-aspects.jar
?? spring-beans.jar
?? spring-context.jar
?? spring-core.jar
?? spring-jdbc.jar
?? spring-jms.jar
?? spring-orm.jar
?? spring-tomcat-weaver.jar
?? spring-tx.jar
?
二:@Autowired或 @Resource注释方式进行装配
??? @Autowired是默认按类型装配。
??? @Resource是默认按名称装配,找不到与名称匹配的bean时,再按类型装配。
?
???? (1).@Resource: JDK提供,移植性强,推荐使用, 可以看到支撑类是: import javax.annotation.Resource; 只要是JDK1.5以上版本,JDK内置了此注释支撑类.
???? (2).用法:
???? 用在属性上
???? 示例:
?? //dao层接口:?
??? ?注意:我们只在xml中配置了两个bean对象,它们之间并没有关系,但是在Java中我们采用注释语法,这个时候@Resource注释语法会根据属性名称在spring容器中去寻找和属性名称同名id的bean对象,然后将其注入到属性中。
?? //测试类??
????? 这个时候可以看到myFruitDao和属性名称并没有对应,但执行Test文件后,可以看到执行成功。这因为如果名称上没有对应,就会按类型自动对性,所以会执行成功。
?
??(4).我们还可以给@Resource加上name,请看下面的语法
?? //service层实现类
?
????
<context:component-scan base-package="com.spring.chapter5" />这一项配置了需要扫描的包,包含子包.
??? @Service: 用于标注业务层的类
??? @Controller: 用于标注控制层,如Action
??? @Repository: 用于标注Dao层
??? @Component: 用于标注组件层, 当组件不好归类的时候,可以用此标注??? 通过扫描机制, 基本上可以达到配置文件基本为空的效果, 这是Spring2.5新推出的功能, 老系统不能运用, 但是新系统中, 此功能运用的非常多。
??? 示例:
?? //dao层实现类??
?? //测试类??
@Service("fruitService")public class FruitServiceImpl implements FruitService {@Resource(name="fruitDao")private FruitDao fruitDao;public void create() {fruitDao.create();}public void setFruitDao(FruitDao fruitDao) {this.fruitDao = fruitDao;}}?