Spring中的注解式开发

Spring中的注解式开发

1.为什么要用注解式开发?

在原始的开发方式中,对象的实例化都是spring工厂加载配置文件所创建的。随着业务的增多,显得配置文件过于臃肿。使用注解的方式,大大提高了开发的效率。

2.创建对象的注解

@Component 修饰范围:只能用在类上。作用:用来对当前修饰的类进行实例化。默认创建对象在工厂中实例化为:类名的首字母小写。

Value属性:用来指定当前创建的实例所在工厂中的唯一标识。

@Repository  专用于DAO组件对象的实例化(一般spring工厂在启动的时候就把dao对象都创建了。通过扫描的方式)

@Service  专用于Service组件对象的实例化

@Controller 专用于Action组件的实例化

@Scope   修饰范围:只能用在类上   作用:用来控制当前组件对象在工厂中的创建次数。默认是单例。

Value属性:singleton单例  prototype多例

3.注入相关的注解

@Autowired(spring框架提供的)  修饰范围:用在属性上或属性的set方法上。作用:用来给属性注入值的(用来依赖注入的)。默认根据类型进行注入。(大多数情况下根据@Autowired注入属性就行)

修改注入方式:指定bean的名称注入,要配合@Qualified使用。

@Qualified修饰范围:同Autowired。

作用: 用来指定@Autowired注解根据名称指定。(什么情况下用@Qualified:一般同一个Dao有多个实现类的时候,使用名称注入)

@Resource(JAEE提供的)

              默认先根据成员变量的名称注入,当名称不一致在根据类型注入。

注意:spring为了进一步简化开发,在使用注解式开发时,成员变量不需要再提供set方法。

@Transactional(事务注解)修饰范围:可以用在类上,也可以用在类的方法上。

     作用:用来对当前类中的方法加入事务控制的。

       用在类上时:代表类中的所有方法都加入事务控制。

       用在方法上:只有加事务注解的方法才有事务控制。

       总结:当类和方法上同时存在事务注解时,以局部优先。

       Propagation属性:用来控制事务的传播属性

       Isolation属性:用来控制事务的隔离级别。

       Readonly属性:事务的读写性。

       Timeout属性:事务的超时性

       注意:默认加入事务注解不会生效,因为没有指定事务管理器。使用事务生效,必须在配置文件中加入如下配置:

<!-- 配置事务管理器 -->
<bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
   <!-- 依赖数据源对象 -->
  <property name="dataSource" ref="dataSource"/>
</bean>
<!-- 事务生效,要开启事务注解驱动(学习了注解式开发后,就代替了之前手动配置的事务属性和组装切面的代码) -->
<tx:annotation-driven transaction-manager="transactionManager"/>

猜你喜欢

转载自www.cnblogs.com/lkldeblog/p/10685816.html