工作杂记(三)
来源:互联网 发布:jdk1.8 64位 linux 编辑:程序博客网 时间:2024/06/10 20:59
几个使用过注解标记:
1、@Qualifier:我们在 Spring 容器中配置了两个类型为 Office 类型的 Bean,当对 Boss 的 office 成员变量进行自动注入时,Spring 容器将无法确定到底要用哪一个 Bean,就会发生异常。Spring 允许我们通过 @Qualifier 注释指定注入 Bean 的名称,这样歧义就消除了,可以通过下面的方法解决异常:
public class Boss {private Office office;@Autowiredpublic void setOffice(@Qualifier("office")Office office) { this.office = office;}}
@Qualifier("office") 中的 office 是 Bean 的名称,所以 @Autowired 和 @Qualifier 结合使用时,自动注入的策略就从 byType 转变成 byName 了。
@Autowired 可以对成员变量、方法以及构造函数进行注释,而 @Qualifier 的标注对象是成员变量、方法入参、构造函数入参。正是由于注释对象的不同,所以 Spring 不将 @Autowired 和 @Qualifier 统一成一个注释类。
如:
public class Boss { @Autowired private Car car; @Autowired @Qualifier("office") private Office office; …}
2、@RunWith:使用RunWith注解改变JUnit的默认执行类,并实现自已的Listener在平时的单元测试,如果不使用RunWith注解,那么JUnit将会采用默认的执行类Suite执行。如:
public class TestClass {@Test public void t1(){}}JUnit允许用户指定其它的单元测试执行类,只需要我们的测试执行类继承类org.junit.runners.BlockJUnit4ClassRunner就可以了,Spring的执行类SpringJUnit4ClassRunner就是继承了该类。我们平时用Spring也比较多,为了能够更加方便的引用配置文件,我们单元测试就使用了Spring实现的执行类。此时的单元测试执行类将会看起来是这样:
@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = { "classpath*:/spring1.xml", "classpath*:/spring2.xml" })@TestExecutionListeners( { DependencyInjectionTestExecutionListener.class, TransactionalTestExecutionListener.class })@Transactionalpublic class TestClass {@Inject//这个类会在执行时被注入,这里是按类型注入,如果想按名称注入,需要加上@Named注解,如@Named("class1")//实现类可以加上@Named("class1")注解,也可以是配置在配置文件中的Class1 class1;@Test public void t1(){}}
0 0
- 工作杂记(三)
- 工作杂记三
- 工作杂记(一)
- 工作杂记(二)
- Pomelo杂记(三)
- 代码杂记(三)
- Web工作杂记(一)
- 工作杂记
- 工作杂记
- 工作杂记
- 工作杂记
- 工作杂记
- 工作杂记
- 工作杂记
- Qt开发杂记(三)
- linux学习杂记(三)
- Hadoop学习杂记(三)
- 杂记<三>
- android 全局Dialog
- uC/OS中的TCB
- 内存映射文件机制处理大文件
- Redis学习
- 关于为何stm32的TIM2定时器时钟是72mhz而不是36mhz
- 工作杂记(三)
- Shared Source CLI 2.0 Directory Layout Overview
- Oracle删除(1)删除数据库
- QT各种数据格式转换
- 注册表整理
- JavaScript学习笔记(三)---JavaScript对象
- HDU 1114 1248(DP,完全背包)
- 如何在eclipse中打开一个存在的projeect
- 操作系统内存,磁盘调度,进程调度算法