spring2.5.6学习笔记一:spring简介

/*
	 * 1.spring是一个开源的控制反转(ioc)和面向切面(aop)的容器框架,他的主要目的是简化企业开发。
	 * 
	 * 控制反转
	 * 
	 * 应用层bean public class PersonServiceBean{ private PersonDao personDao = new
	 * PersonDaoBean();//dao层bean prublic void save(Person person){
	 * personDao.save(person) } }
	 * 
	 * PersonDaoBean 是在应用内部创建及维护的。
	 * 
	 * 所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。
	 * 这样控制权就由应用转到了外部容器,控制权的转移就是所谓的反转。
	 * 
	 * 依赖注入
	 * 
	 * 
	 * 通过构造函数,外部容器将依赖对象注入到组件当中,当然也可以使用set方法 public class PersonServiceBean{
	 * this.PersonDao = personDao;
	 *  }
	 * 
	 * public void save(){ personDao.save(); }
	 * 
	 * 所谓依赖注入就是程序运行中,容器动态的将依赖对象注入到组件当中。
	 * 
	 * 为何要使用Spring 
	 * 1.降低组件之间的耦合,实现软件之间的解耦。--前面第一个例子耦合度就很高,要是不给依赖对象的话,编译都过不去。
	 * control-->service-->dao
	 * 2.可以使用容器提供的众多服务,如事务管理服务,消息服务等,当我们使用容器管理事务时,开发人员就不再需要手工控制事务,也不需要处理复杂的事务传播。
	 * Hibernate的事务操作
	 * public void save(){
	 * 	Session session = SessionFactory.getCurrentSession();
	 * 	session.beginTransaction();//spring 可以帮做
	 * 	..............
	 * 	session.getTransaction().commit();//spring 可以帮做
	 * }
	 * Jdbc 的事务操作
	 * Connection conn = null;
	 * conn.setAutoCommit(false);//spring 可以帮做
	 * conn.commit();//spring 可以帮做
	 * 
	 * 另外使用spring,我们也不需要处理复杂的事务传播行为
	 * public void payment(){
	 * 	Bean1.update();//更新金额
	 * 	Bean2.save();//记录操作日志
	 * }
	 * public class Bean1{
	 * 	public void update(){
	 * 		Connection conn = null;
	 * 		conn.setAutoCommit(false);
	 * 		Statement.executeUpdate('update ....');
	 * 	}
	 * }
	 * public class Bean2{
	 * 	public void save(){
	 * 		Connection conn = null;
	 * 		conn.setAutoCommit(false);
	 * 		Statement.executeUpdate('insert into ....');	
	 * 	}
	 * }
	 * 如果不是用spring下面操作该如何实现?
	 * 1.要求Bean1.update()和Bean2.save()在同一个事务中执行。
	 * 2.要求不管Bean1.update()是否成功,都要记录操作日志。
	 * 
	 *1.的实现方法使用同一个Connection
	 * public void payment(){
	 * 	Connection conn = null;
	 * 	conn.setAutoCommit(false);
	 * 	Bean1.update(conn);//更新金额
	 * 	Bean2.save(conn);//记录操作日志
	 * }
	 * public class Bean1{
	 * 	public void update(Connection conn){
	 * 		Statement.executeUpdate('update ....');
	 * 	}
	 * }
	 * public class Bean2{
	 * 	public void save(Connection conn){
	 * 		Statement.executeUpdate('insert into ....');	
	 * 	}
	 * }
	 * 
	 * 2的实现就用前面的,开两个连接,放在连个事务当中。
	 * 
	 * 使用spring的话
	 * @Transactionl(propagation=Propagation.Required)
	  * public void payment(){
	 * 	Bean1.update();//更新金额
	 * 	Bean2.save();//记录操作日志
	 * }
	 * public class Bean1{
	 * @Transactionl(propagation=Propagation.Required)
	 * 	public void update(){
	 * 		Connection conn = null;
	 * 		conn.setAutoCommit(false);
	 * 		Statement.executeUpdate('update ....');
	 * 	}
	 * }
	 * public class Bean2{
	 * @Transactionl(propagation=Propagation.Required)使用同一个事务   如果实现2可以改为@Transactionl(propagation=Propagation.RequiresNew),这样就会在两个事务当中
	 * 	public void save(){
	 * 		Connection conn = null;
	 * 		conn.setAutoCommit(false);
	 * 		Statement.executeUpdate('insert into ....');	
	 * 	}
	 * }
	 * 
	 * 3.容器提供单例模式支持,开发人员不需自己编写实现代码。
	 * 4.容器提供了AOP技术,利用它实现权限拦截,运行期监控等功能。
	 * 5.容器提供众多辅助类,使用这些类能够加快应用的开发,如:JdbcTemplate,HibernateTemplate
	 * 6.Spring对于主流的应哟你框架提供了集成支持,如:Hibernate,JPA,Struts这样便于应用的开发。
	 */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值