当前位置: 代码迷 >> Web前端 >> 实习总结(十)-Spring的上载/安装/优点/依赖注入方式/自动配置
  详细解决方案

实习总结(十)-Spring的上载/安装/优点/依赖注入方式/自动配置

热度:481   发布时间:2012-08-03 00:12:14.0
实习总结(十)---Spring的下载/安装/优点/依赖注入方式/自动配置

       继Struts 2之后,我学习了 Spring ,然初次接触,就被其强大的功能及多处优点所吸引,故对其进行深入学习,分享总结如下:


一、Spring的下载:

       Spring框架官方网站http://www.spring.gov.sg/Pages/homepage.aspx,该网站即可完成Spring框架的下载。

 

二、Spring的安装:

      Java程序则只需将Spring解压文件夹下的disk目录下的spring.jar添加到ClassPath下。如果开发Web应用则只需将spring.jar拷贝到Web应用的WEB-INF目录下的lib目录下。如果应用需要使用到其他第三方的JAR,则还需将其添加到ClassPath下或拷贝到Web应用的WEB-INF目录下的lib目录下。

 

三、Spring的优点:

     (1) Spring能有效地组织你的中间层对象。
     (2)Spring能消除在许多工程中常见的对Singleton的过多使用。
     (3)Spring能消除各种各样自定义格式的属性文件的需要,使配置信息一元化。
     (4)Spring能够帮助我们真正意义上实现针对接口编程。
     (5)在Spring应用中的大多数业务对象没有依赖于Spring。
     (6)使用Spring构建的应用程序易于单元测试。
     (7)Spring支持JDBC和O/R Mapping产品(Hibernate)
     (8)MVC Web框架,提供一种清晰,无侵略性的MVC实现方式。
     (9)JNDI抽象层,便于改变实现细节,可以方便地在远程服务和本地服务间切换。
     (10)简化访问数据库时的例外处理。
     (11)Spring能使用AOP提供声明性事务管理,可以不直接操作JTA也能够对事务进行管理。
     (12)提供了JavaMail或其他邮件系统的支持。

     (13)      轻量级,非侵入式:基于Spring开发应用时新建的类一般都无须继承Spring中的类。

     (14)  —  反向控制:又称为依赖注入和IoC。使用方向控制,对象被动接收依赖类而不是自己去创建或者查找其所以来的对象。

     (15)  —  面向切面:又称为AOP。使用面向切面编程,可以将业务逻辑从系统服务中抽取出来,实现内聚开发。应用对象只实现业务逻辑,而不会去负责其他的系统级关注点。

     (16)  —  容器:Spring中包含并且可以管理应用对象的配置和生命周期,配置Bean如何被创建或者是如何被关联。

     (17)  —  框架:可以将简单的组件配置组合成复杂的应用。

     (18)  —  Spring是免费的、是开放源代码的。

     (19)  —  Spring拥有众多社区支持。

 

四、Spring依赖注入方式:

      使用Spring的依赖注入可以为对象注入属性值。Spring的依赖注入分为两种,一种是通过Set方法注入依赖,一种是通过构造函数注入依赖。

      1)用其他的Bean注入(interfaceinjection) 
         接口注入指的就是在接口中定义要注入的信息,并通过接口完成注入。结合前面的示例,其具体步骤如下:
       (1)编写一个接口IBusiness,各种数据库的注入将通过这个接口进行。
       (2)任何想要使用数据库实例的类都必须实现这个接口,业务逻辑类Business实现这个接口IBusiness。Business.java的示例代码如下: 

//******* Business.java************** 
this.db = db; 
} 
…… 
//根据注入的数据库类,从×××数据库中获取数据 
public void getData() { 
…… 
db.getData(); 
…… 
} 
} 
      (3)编写测试类TestBusiness。TestBusiness.java的示例代码如下: 
//******* TestBusiness.java************** 
public class TestBusiness { 
private Business business = new Business(); 
…… 
//根据注入的数据库类,从Oracle数据库中获取数据 
public void getData() { 
…… 
business. createDI (new OracleDataBase()); 
business.getData(); 
…… 
} 
} 
            如果要完成依赖关系注入的对象,必须实现IBusiness接口。 

       2)通过Set方法注入依赖(setter injection) 
           Set注入指的就是在接受注入的类中定义一个Set方法,并在参数中定义需要注入的元素。为了让类Business接受DataBase的注入,需要为它定义一个Set方法来接受DataBase的注入。Business.java的示例代码如下: 

//******* Business.java************** 
public class Business { 
private DataBase db; 
public void setDataBase(DataBase db) { 
this.db = db; 
} 
…… 
//根据注入的数据库类,从×××数据库中获取数据 
public void getData() { 
…… 
db.getData(); 
…… 
} 
} 
      3) 使用构造函数注入依赖(constructor injection) 

         构造注入指的就是在接受注入的类中定义一个构造方法,并在参数中定义需要注入的元素。为了让类Business接受DataBase的注入,需要为它定义一个构造方法,来接受

DataBase的注入。Business.java的示例代码如下: 
//******* Business.java************** 
public class Business { 
private DataBase db; 
public Business (DataBase db) { 
this.db = db; 
} 
…… 
//根据注入的数据库类,从×××数据库中获取数据 
public void getData() { 
…… 
db.getData(); 
…… 
} 
}


五、Spring的自动装配:

      自动装配包含如下四种类型:

      1)     byName:在IoC容器中寻找与Bean中属性名相同的id对应的Bean,如果找不到相符合的Bean,则该属性没有被装配上。

      2)      byType:在IoC容器中寻找与Bean中属性相同类型的Bean,如果找不到相符合的Bean,则该属性没有被装配上。如果找到多个相符合的Bean,则会抛出异常。

      3)      constructor:在IoC容器中寻找与Bean中构造函数参数一致的一个或多个Bean。如果存在不确定的Bean,则会抛出异常。

      4)      autodetect:自动模式,首先尝试使用constructor来自动装配,然后使用byType方式。

 

  相关解决方案