Spring标签使用

原来学过了通过xml来实现spring的配置,现在使用更简单的标签方式来实现相同的过程。

首先注意,xml的方式进行配置文件时,使用的是在自定义代码中调用ClassPathXmlApplicationContext("applicationContext.xml的路径")来生成一个context实例,然后调用context.getBean("对应类的Bean标签的id")来进行提取容器中构建的实例。也就是说,通过在配置文件外进行spring容器与实际实用类的匹配。

当使用标签时,会发生一些改变。

1.首先,在spring配置文件(一般命名为applicationContext.xml)中XML配置文件的开头,需要引入contex命名空间的声明

xmlns:context="http://www.springframework.org/schema/context"

以及schemaLocation中是否有对应的XSD地址:

http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd

并且在spring配置文件(一般命名为applicationContext.xml)中添加扫描标签的标签<context:component-scan base-package="对应需要被扫描的类的上一级目录的路径"></context:component-scan>

需要注意的是,这里的base-package实际的扫描范围是本包的同级目录以及子目录,一般而言,将其设立为需要扫描的类的上级目录即可。

2.如果需要对某个类创建实例,那么就在该类的头顶填写标签:比如

@Component("a")

public class A{

.......................

}

理想情况下,当标签被@Component("a")被context:component-scan扫描到的一瞬间,这个类的实例就会出现在ioc容器中。

3.如果类中要注入其他类,比如:

@Component("b")

public class B{

@Autowired

@Qualifier("a")

A a;

......................

}

此时使用到了@Autowired@Qualifier这两个标签,@Autowired表示自动注入,如果不与@Qualifier进行搭配,那么此时的A a也会被创建,因为spring框架会自动匹配与该标签下的类相同名称的@Component标签,找到该标签后,会直接将容器中符合该标签的实例进行提取。

但是问题就出现在如果此时有多个类A对应的不同实例,比如为a1,a2,...,an,此时的提取就会出现问题。那么如何精确的提取出ak(假设需要的实例为ak)?此时就需要@Qualifier("ak")来进行辅助提取,@Qualifier中括号中的内容为对应需要被提取的标签id,通过这个标签id就能够正确匹配需要的实例。

这里的标签id指的是Component括号中的内容,比如@Component("b")中的"b"即为类B对应的实例的标签id。

如果不想使用这两个标签,可以使用@Resource(name="对应实例的bean标签对应id")。可以简单的理解@Resource(name="对应实例的bean标签对应id")就等于@Autowired@Qualifier("对应实例的bean标签对应id")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值