七、@Resource属性注解的使用
1、实例:EmployeeService的bean对象中配置sessionFactory属性:
方法1:
(1)EmployeeService.java中写法(属性和set方法):
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
(2)spring容器中的配置信息如下:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 设置数据源 -->
<property name="dataSource" ref="dateSource"/>
<!-- 接管Hibernate对象映射文件 -->
<property name="mappingResources">
<list>
<value>com/zjb/domain/Employee.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.OracleDialect
hibernate.hbm2ddl.auto=update
hibernate.show_sql=true
hibernate.format_sql=true
</value>
</property>
</bean>
<bean id="employeeService" class="com.zjb.service.imp.EmployeeService">
<property name="sessionFactory" ref="sessionFactory"/>//EmployeeService的sessionFactory属性的注入依赖sessionFactory bean的注入
</bean>
(3)在spring容器及applicationContext.xml中启用注解扫描机制:
<context:annotation-config/>
方法2:
(1)EmployeeService.java中写法:
//当给属性增加了@Resource注解之后,spring就会启动注解的方式注入我们的属性值 sessionFactory
@Resource
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
(2)spring容器中的配置信息如下:
<bean id="employeeService" class="com.zjb.service.imp.EmployeeService"/>
(3)在spring容器及applicationContext.xml中启用注解扫描机制:
<context:annotation-config/>
2、@Resource有一个‘name’属性
注解提供的名字将被BeanFactory解析为 bean 名。缺省时,Spring 将这个值解释为要注射的 bean 的名字。前提是遵循by-name的语法。如果没有显式地给出名字,缺省的名字将继承于字段名或者 setter 方法名:如果是字段名,它将简化或者等价于字段名;如果是 setter 方法名,它将等价于 bean 属性名。下面这个例子使用名字 "movieFinder" 注射到它的 setter 方法:
public class SimpleMovieLister {
private MovieFinder movieFinder;
@Resource
public void setMovieFinder(MovieFinder movieFinder) {
this.movieFinder = movieFinder;
}
}