3.17Spring中注解的使用

1:Spring的Annotation

A:开启Annotation的功能
需要在Spring.xml中配置下面两个标签
<context:annotation-config></context:annotation-config>
<context:component-scan base-package="com"></context:component-scan>
其中:<context:component-scan>的 使用说明
在xml配置了<context:component-scan>这个标签后,spring可以自动去扫描base-pack下面
或者子包下面的java文件,如果扫描到有@Component @Controller@Service等这些注解的类,
则把这些类注册为bean 注意:如果配置了<context:component-scan>那么
<context:annotation-config/>标签就可以不用再xml中配置了,因为前者包含了后者。

B:IOC与DI的常用注解
@Compoment:公用的写法。
@Controller:常用于Web的注解中(SpringMVC)
@Service:   常用于Service的注解中
@Repository:常用Dao的注解中
@Scope(value = "prototype")
表示对象的作用域:singleton|prototype
singleton:对象只有1个
prototype:对象多个。每获取一次就产生一个新的对象。

C:DI的注解

@Autowired:适用于一个接口只有一个实现的情况。
@Resource(name="cow"):适用于一个接口有多个实现的情况,根据name注入相应的对象。

D:Jdbc的注解
@Repository(value = "testDDL")
public class TestDDL extends JdbcDaoSupport {

//由于继承了JdbcDaoSupport这个对象。不能生成setDataSource()这个方法。父类中是有final修饰的。
//通过@Autowired,将Xml配置的DataSource注入到形参中。

//再调用super.setDataSource,把数据源注入到JdbcDaoSupport中。
@Autowired
public void setDataSourceX(DataSource dataSource) {
super.setDataSource(dataSource);
}

//不需要继承,直接注入DataSource

@Repository(value = "testQuery")
public class TestQuery {
@Autowired
private DataSource dataSource;

public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}

E:事务的注解
得先在配置文件中配置:开启事务得注解。
<bean name="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />

@Transactional(rollbackFor = java.lang.Exception.class)
当Service中需要用到多个Dao时,那么Transaction必须要放在Service中。这样Service中定义的事务
就会传播到各个Dao中。那么多个Dao中的方法执行就会在同一个事务运行当中。
如果dao中需要单独设定事务,则将@Transactional单独设置在dao中。
类的继承方式来理解事务的传播。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值