首先让我们复习一下常用的标注
用于描述hibernate映射关系的标注,告别*.hbm.xml
@Entity(name = “***")
@Id
@Column
下面四个标注用来定义 bean, 自动根据 bean 的类名生成一个首字母小写的 bean
@Component 标注普通的Spring Bean类
@Controller 标注控制器组件类
@Service 标注业务逻辑组件类
@Repository 标注一个DAO组件类
@Autowired 则是自动注入依赖的类, 它会在类路径中找成员对应的类/接口的实现类,
我们在BaseTest.java中使用过的
@ContextConfiguration
用来管理事务的
@Transactional
为保证标记可以运行,进一步修改ApplicationContext.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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd" default-lazy-init="true"> <context:annotation-config /> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value> jdbc:mysql://localhost/sw?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf-8 </value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value>mysql</value> </property> </bean> <!-- JPA EntityManagerFactoryBean for EntityManager--> <bean id="myEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="showSql" value="true" /> <property name="generateDdl" value="true" /> </bean> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="myEntityManagerFactory" /> <property name="dataSource" ref="dataSource" /> </bean> <bean id="albumDao" class="net.sw.album.dao.jpa.AlbumDaoJpa"> <property name="entityManagerFactory" ref="myEntityManagerFactory" /> </bean> <bean id="photoDao" class="net.sw.album.dao.jpa.PhotoDaoJpa"> <property name="entityManagerFactory" ref="myEntityManagerFactory" /> </bean> <tx:annotation-driven transaction-manager="transactionManager" /> <context:component-scan base-package="net.sw.album.service.impl" /> </beans>
albumDao、photoDao这两个bean的声明我没有找到使用标注把它们从xml中消除的方法,他们需要注入entityManagerFactory,这个属性是继承自他们的父类JpaDaoSupport。没办法控制,失败。