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中。
类的继承方式来理解事务的传播。
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中。
类的继承方式来理解事务的传播。