@Autowired(required=false)
private PersonDao personDao;//用于字段上
@Autowired(request=false)
public void setPersonDao(PersonDao personDao) {
//用于属性的set方法上
this.personDao = personDao;
}
如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:
@Autowired @Qualifier("personDao")
private PersonDao personDao;//用于字段上
@Autowired
public void setPersonDao(@Qualifier("personDao") PersonDao personDao) {
//用于属性的set方法上 this.personDao = personDao;
}
@Resource注解和@Autowired一样,也可以标注在字段或属性的setter方法上.
@Resource注解默认按名称装配。 名称可以通过@Resource的name属性指定,如果没有指定name属性, 当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象 当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象。
@Resource(name="personDao") private PersonDao personDao;;//用于字段上
@Resource(name="personDao") public void setPersonDao(PersonDao personDao) {//用于属性的set方法上 this.personDao = personDao; } 后一种相当于xml配置文件中的 <property name=“personDao" ref="personDao" />
注意:如果没有指定name属性,并且按照默认的名称找不到依赖对象时, @Resource注解会回退到按类型装配。但一旦指定了name属性,就只能按名称装配了。
方法的事务设置将被优先执行。例如: InAccountServiceImpl类在类的级别上被注解为只读事务,但是,这个类中的 saveInAccount(Account inaccount) 方法的 @Transactional 注解的事务设置将优先于类级别注解的事务设置。
Hibernate二级缓存的配置
二级缓存是进程级的缓存或sessionFactory的缓存,由sessionFactory管理 二级缓存的生命周期与sessionFactory的生命周期相同,二级缓存是所有session所共享的