简单说一下spring,spring为什么叫spring

  简单说一下spring,spring为什么叫spring

  如何解决写爬虫IP受阻的问题?立即使用。

  首先,我们简单介绍一下Spring。

  Spring是一个开源的轻量级Java开发框架,它有两个核心:控制反转(IoC)和面向方面(AOP)。Java框架以声明的方式灵活管理事务,提高了开发效率和质量。

  (推荐教程:java入门)

  Spring框架并不局限于服务器端开发。从简单性、可测试性和松耦合的角度来看,任何Java应用程序都可以受益于Spring。Spring框架也是一个超级绑定平台,不仅提供了自身的功能,还提供了绑定其他技术和框架的能力。

  接下来,我们来详细介绍一下具体内容。

  控制反转(IOC)

  大概,在以前,业务逻辑层的代码大概是这样写的:

  公共类PersonServiceBean {

  private person Dao person Dao=new person Dao bean();

  公共无效保存(个人){

  personDao.save(人);

  }

  }从上面可以看出,PersonDaoBean是在应用程序内部创建和维护的。所谓控制反转,是指应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责依赖对象的创建和维护。这样控制权就从应用程序转移到了外部容器,控制权的转移称为反转。

  依赖注入(依赖注入)

  当我们将依赖对象留给外部容器进行创建时,PersonServiceBean类可以更改如下:

  公共类PersonServiceBean {

  私人道私人道;

  //通过构造函数参数,让容器将创建的依赖对象注入到PersonServiceBean中。当然也可以用setter的方法来注入。

  公共人员服务Bean(人员道人员道){

  this . person Dao=person Dao;

  }

  公共无效保存(个人){

  personDao.save(人);

  }

  }所谓依赖注入,就是在运行时,外部容器将依赖对象动态注入到组件中。

  为什么要用Spring?

  至少在我看来,将Spring引入项目可以立即带来以下好处:

  降低组件之间的耦合度,实现软件层之间的解耦。

  您可以使用容器提供的许多服务,如事务管理服务、消息服务等等。当我们使用容器管理事务时,开发人员不再需要手动控制事务和处理复杂的事务传播。

  有了容器单例模式的支持,开发者不再需要编写自己的实现代码。

  容器提供AOP技术,可以轻松实现权限拦截、运行时监控等功能。

  容器提供的很多辅助类,可以加快应用程序的开发,比如JdbcTemplate和HibernateTemplate。

  它为Spring的主流应用框架提供集成支持,如Hibernate、JPA、Struts等。更便于应用开发。

  使用Spring的好处

  我们已经在上面详细列出了使用Spring框架的好处,我们将只阐述第二点。在使用Spring框架时,我们可以使用容器提供的许多服务。

  想象一下,如果不使用Spring框架,那么使用Hibernate框架进行事务操作应该是:

  Hibernate的事务操作:

  公共void save(){

  session session=session factory . getcurrentsession();

  session . begin transaction();

  info=new info( Spring Framework );

  Info.setContent(阿云手把手教你学习Spring框架);

  session . save(info);

  session.getTransaction()。commit();

  }既不使用Spring框架,也不使用Hibernate框架,直接使用最原始的JDBC技术进行事务操作,代码应该是:

  JDBC的交易操作:

  连接连接=空;

  尝试{

  .

  conn . set auto commit(false);

  statement stmt=conn . create statement();

  Stmt。execute update( update person where name= Ye Tian );

  conn . commit();

  .

  } catch(异常e) {

  conn . roll back();

  }最后{

  conn . close();

  }而如果使用Spring框架,那么我们就不再需要手动控制事务了。此外,如果我们使用Spring框架,我们不需要处理复杂的事务传播行为。我们举个例子说明一下。

  (视频教程推荐:java课程)

  例如,有一个代码:

  公共作废支付(){

  bean 1 . update();//更新金额

  bean 2 . save();//记录操作日志

  }公共类Bean1 {

  Public void update(){ //注意:下面省略了一些代码

  连接连接=空;

  conn . set auto commit(false);

  Statement.executeUpdate(更新帐套金额=?其中id=?);

  }

  }公共类Bean2 {

  Public void save(){ //注意:下面省略了一些代码

  连接连接=空;

  conn . set auto commit(false);

  Statement.executeUpdate(插入日志(内容)值(?));

  }

  }如果不使用Spring框架,下面两个业务需求怎么办?

  第一个可能的业务需求:要求Bean1.update()和Bean2.save()在同一个事务中执行。

  第二个可能的业务需求:无论Bean1.update()的交易是否成功,都要记录操作日志。

  如果不使用Spring框架,对于第一个可能的业务需求,我们的解决方案用代码表示如下:

  公共作废支付(){

  连接连接=空;

  conn . set auto commit(false);

  bean 1 . update(conn);//更新金额

  Bean2.save(连接);//记录操作日志

  //.提交或回滚事务。

  }公共类Bean1 {

  public void update(connection conn){//注意:下面省略了一些代码

  Statement.executeUpdate(更新帐套金额=?其中id=?);

  }

  }公共类Bean2 {

  public void save(connection conn){//注意:下面省略了一些代码

  Statement.executeUpdate(插入日志(内容)值(?));

  }

  }对于第二种可能的业务需求,我们可以不修改代码就完成,因为Bean1.update()打开一个事务,Bean2.save()也打开一个事务。Bean1.update()打开的事务的回滚不会影响Bean2.save()打开的事务。

  如果使用Spring框架,只需要声明式的事务属性配置,就可以轻松实现这两个业务需求。

  要求Bean1.update()和Bean2.save()在同一个事务中执行。我们只需要将代码改为:

  @Transactional(传播=传播。必需的)

  公共作废支付(){

  bean 1 . update();//更新金额

  bean 2 . save();//记录日志

  }公共类Bean1 {

  @Transactional(传播=传播。必需的)

  公共void更新(){

  executeUpdate(更新账套金额=?其中id=?);

  }

  }公共类Bean2 {

  @Transactional(传播=传播。必需的)

  公共void save(){

  executeUpdate(插入到日志(内容)值(?));

  }

  }要求无论Bean1.update()的事务是否成功,都要记录日志。我们只需要将代码改为:

  @Transactional(传播=传播。必需的)

  公共作废支付(){

  bean 1 . update();//更新金额

  bean 2 . save();//记录日志

  }公共类Bean1 {

  @Transactional(传播=传播。必需的)

  公共void更新(){

  executeUpdate(更新账套金额=?其中id=?);

  }

  }公共类Bean2 {

  @Transactional(传播=传播。要求新)

  公共void save(){

  executeUpdate(插入到日志(内容)值(?));

  }

  }轻量级和重量级概念的划分

  经常有人问Spring是轻量级框架还是重量级框架。实际上,一个应用程序是轻量级还是重量级取决于它使用多少服务。使用的服务越多,容器要为普通java对象做的工作就越多,这必然会影响应用的发布时间或运行性能。

  对于Spring容器,它提供了许多服务,但是这些服务在默认情况下不会为应用程序打开。应用需要某种服务,也需要注明该服务的用途。如果应用程序使用很少的服务,比如只使用Spring核心服务,那么我们可以认为此时应用程序是轻量级的。如果应用程序使用了Spring提供的大部分服务,这个时候应用程序就是重量级的。目前,EJB容器是一个重量级的,因为它默认为应用程序提供了EJB规范的所有功能。这就是你所知道的关于春天的细节。请多关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: