Spring零配置通过注解实现Bean依赖注入总结(十一)

2014-11-24 07:34:28 · 作者: · 浏览: 7
@Named("oracleDataSource") DataSource oracleDataSource) {
this.mysqlDataSource = mysqlDataSource;
this.oracleDataSource = oracleDataSource;

}
//省略getter
}

3、在Spring配置文件(chapter12/dependecyInjectWithAnnotation.xml)添加如下Bean配置:


Java代码
1.


4、在Spring修改定义的mysqlDataSourceBean数据源:


Java代码
1.
2.
3.
4.
5.
6.
7.

8.
9.












5、测试方法如下:


Java代码
1. @Test
2. public void testInject() {
3. TestBean51 testBean51 = ctx.getBean("testBean51", TestBean51.class);
4. Assert.assertEquals(ctx.getBean("mysqlDataSourceBean"), testBean51.getMysqlDataSource());
5. Assert.assertEquals(ctx.getBean("oracleDataSource"), testBean51.getOracleDataSource());
6. }
@Test
public void testInject() {
TestBean51 testBean51 = ctx.getBean("testBean51", TestBean51.class);
Assert.assertEquals(ctx.getBean("mysqlDataSourceBean"), testBean51.getMysqlDataSource());
Assert.assertEquals(ctx.getBean("oracleDataSource"), testBean51.getOracleDataSource());
}


测试也通过了,说明JSR-330注解也能很好工作。

从测试中可以看出JSR-330注解和Spring自带注解依赖注入时主要有以下特点:
Spring自带的@Autowired的缺省情况等价于JSR-330的@Inject注解;
Spring自带的@Qualifier的缺省的根据Bean名字注入情况等价于JSR-330的@Named注解;
Spring自带的@Qualifier的扩展@Qualifier限定描述符注解情况等价于JSR-330的@Qualifier注解。



12.2.5 JPA注解
用于注入EntityManagerFactory和EntityManager。

1、准备测试Bean:



Java代码
1. package cn.javass.spring.chapter12;
2. //省略import
3. public class TestBean61 {
4. @PersistenceContext(unitName = "entityManagerFactory")
5. private EntityManager entityManager;
6.
7. @PersistenceUnit(unitName = "entityManagerFactory")
8. private EntityManagerFactory entityManagerFactory;
9.
10. public EntityManager getEntityManager() {
11. return entityManager;
12. }
13. public EntityManagerFactory getEntityManagerFactory() {
14. return entityManagerFactory;
15. }
16. }
package cn.javass.spring.chapter12;
//省略import
public class TestBean61 {
@PersistenceContext(unitName = "entityManagerFactory")
private EntityManager entityManager;

@PersistenceUnit(unitName = "entityManagerFactory")
private EntityManagerFactory entityManagerFactory;

public EntityManager getEntityManager() {
return entityManager;
}
public EntityManagerFactory getEntityManagerFactory() {
return entityManagerFactory;
}
}

2、在Spring配置文件(chapter12/dependecyInjectWithAnnotation.xml)添加如下Bean配置:


Java代码
1.
2.
3.



此处需要引用第七章和八章的配置文件,细节内容请参考七八两章。


3、测试方法如下:


Java代码
1. @Test
2. public void testJpaInject() {
3. TestBean61 testBean61 = ctx.getBean("testBean61", TestBean61.class);
4. Assert.assertNotNull(testBean61.getEntityManager());
5. Assert.assertNotNull(testBean61.getEntityManagerFactory());
6. }
@Test
public void testJpaInject() {
TestBean61 testBean61 = ctx.getBean("testBean61", TestBean61.class);
Assert.assertNotNull(testBean61.getEntityManager());
Assert.assertNotNull(testBean61.getEntityManagerFactory());
}
测试也通过了,说明JPA注解也能很好工作。

JPA注解类似于@Resourc