美文网首页
【济南中心】JavaEE框架:spring(一)

【济南中心】JavaEE框架:spring(一)

作者: keaiai | 来源:发表于2018-04-20 14:11 被阅读0次

【济南中心】JavaEE框架:spring(一)

一、技术说明(技术介绍,技术优势以及发展史等)

1.1、什么是spring

l Spring是分层的JavaSE/EE full-stack 轻量级开源框架

        分层:三层体系结构,为每一个层都提供解决方案

                web层:struts2、spring-mvc

                service层:spring

                dao层:hibernate、mybatis、jdbcTemplate(spring)

        轻量级:使用时占用资源少,依赖程序少。比较:EJB

1.2、spring由来

Expert One-to-One

J2EE Design and Development  ,介绍EJB,使用,特点

Expert One-to-One

J2EE Development without EJB ,不使用EJB,spring思想

l 方便解耦,简化开发 (易扩展,易维护)

• Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理

l AOP编程的支持

• Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能

l 声明式事务的支持

• 只需要通过配置就可以完成对事务的管理,而无需手动编程

l 方便程序的测试

• Spring对Junit4支持,可以通过注解方便的测试Spring程序

l 方便集成各种优秀框架

• Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持

l 降低JavaEE API的使用难度

• Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低

[if !supportMisalignedRows][endif]

   [if !supportMisalignedRows][endif]

   [if !supportMisalignedRows][endif]

     [if !supportMisalignedRows][endif]

     [if !supportMisalignedRows][endif]

       [if !supportMisalignedRows][endif]

1.3、spring核心

l 以IoC(Inverse of Control 反转控制)和AOP(Aspect Oriented Programming 面向切面编程为内核)

1.4、spring优点

1.5、spring体系结构

       spring 核心功能:beanscorecontextexpression

二、环境搭建(技术开发环境)2.1、获取Spring

      framework jar 包  1、spring官网下载

从官网下载spring

      最新的相关jar包,官网download地址 http://www.springsource.org/springcommunity-download

下载完成后会发现三个目录,命名很明确。  

Docs

      目录相关文档。包括一份

      API 和一份各种

      spring 的使用说明(reference),reference 提供了 HTML.PDF 版本,非常详细。  

2.spring包的核心包

搭建第一个用到      spring 依赖注册的程序  

直接用      eclipse 建立一个 JAVA

      项目  

然后添加      spring 的 jar

      包引入

spring-core-3.2.0.M1.jar     核心依赖

      jar 包

spring-context-3.2.0.M1.jar   Spring

      容器包

spring-beans-3.2.0.M1.jar   Spring

      beans 的管理包

spring-asm-3.2.0.M1.jar  Spring  

注:和      hibernate 一起用时这个 JAR

      会冲突,解决方法删掉它就是了

org.springframework.beans.factory.BeanCreationException:        Error creating bean with name 'sessionFactory' defined in        ServletContext resource [/WEB-INF/classes/applicationContext.xml]:        Invocation of init method failed; nested exception is java.lang.NoSuchMethodError:        org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)

Caused by:  

java.lang.NoSuchMethodError:        org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)

spring-expression-3.2.0.M1.jar  

除此之外,还有需要一个      Apache common 的 JAR

      包

注:如果忘记添加会      commons-logging-1.1.1.jar 报错

Exception in thread "main"

        java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory  

commons-logging-1.1.1.jar

      日志记录

3. 配置 XML  

Spring

      的最大的作用就是提供

      bean 的管理功能,在

      spring 中 bean 的管理是通过 XML 实现的,要 用此功能,需要把 bean 配置到 spring 的 xml

1. 新建立一个

      xml.名字任意,如

      applicationContext.xml,或者 text.xml 都可以  2. 添加 xml 头定义

        xmlns=http://www.springframework.org/schema/beans  ①  

xsi:schemaLocation="http://www.springframework.org/schema/beans

        ② http://www.springframework.org/schema/beans/spring-beans-3.2.xsd ③

">

       

① Xmlns(XML NameSpace) 声明命名空间,建议是用网址做命名空间,但并不会去访问改网址, 仅仅是 namespace 和 xsd(xsd 是 spring 这个 xml 的 schema 文件,里面定义配置内容)里

      声明的 targetNamespace 保持一致

      . 注:这里命名空间是改不了的,其实是在代码中也写死了,可以打开

      spring-beans3.2.0.M1-sources.jar

      包的 org\springframework\beans\factory\xml\BeanDefinitionParserDelegate.java

      查看对 http://www.springframework.org/schema/beans这个namespace的定义。  

② schemaLoacation

      .用于绑定命名空间的 schema 文件,通常是用

      URL 值对,中间用空格隔

      开,前面 URL 是命名空间,后面 URL 为 schema 的文件地址

③ xsd

      的存放地址,如果没有声明,eclipse 会去网上下载.  

在创建      xml 时,在 eclipse

      编辑 xml 配置没有提示。

可以对      eclipse 中进行 schema

      文件的添加

具体是

WindowsàPreferences ,搜索 XML catalog,添加 schema 文件。

Spring

      的 schema 文件在下载包里有,找到

      spring-3.2.0.M1\schema\beans\spring-beans-3.2.xsd

然后添加,编写      spring 配置文件就能有提示了  

4. 依赖注入

      4.1spring注入的简单案例(入门级)

新建一个      class 用于注入,

package org.beans;  

public class Test { public void say(){

  System.out.println("济南黑马"); } }  

把类通过      xml 配置注入

        xmlns="http://www.springframework.org/schema/beans"          xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.2.xsd">  

        class="org.beans.Test" />   

测试:

package org.beans;  

import        org.springframework.context.ApplicationContext;

import

        org.springframework.context.support.ClassPathXmlApplicationContext;  

public class testBeans {

public static void main(String[] args) {  

ApplicationContext ctx = new ClassPathXmlApplicationContext("test.xml");          

Test test=(Test) ctx.getBean("济南黑马");  

test.say();  }

}

4.2spring框架为我们提供了三种注入方式,分别是set注入,构造方法注入,接口注入。接口注入不作要求,下面介绍前两种方式。1set注入

  采用属性的set方法进行初始化,就成为set注入。

  1)给普通字符类型赋值。

file:///C:\Users\aa\AppData\Local\Temp\ksohtml\wps8E7F.tmp.png

1.

      public class User{  

2.         privateString username;  

3.   

4.         publicString getUsername() {  

5.        returnusername;  

6.    }  

7.         publicvoid setUsername(String username) {  

8.       this.username= username;  

9.    }  

10.

      }  

   我们只需要提供属性的set方法,然后去属性文件中去配置好让框架能够找到applicationContext.xml文件的beans标签。标签beans中添加bean标签, 指定id,class值,id值不做要求,class值为对象所在的完整路径。bean标签再添加property

      标签,要求,name值与User类中对应的属性名称一致。value值就是我们要给User类中的username属性赋的值。

1.

      >  

2.

      name="username" value="admin">  

3.

  2)给对象赋值

同样提供对象的set方法

1.

      public class User{  

2.      private UserService

      userservice;  

3.      public UserServicegetUserservice()

      {  

4.           returnuser;  

5.      }  

6.      public void

      setUserservice(UserService userservice){  

7.          this.userservice= userservice;  

8.      }  

9.

      }  

   配置文件中要增加UserService的bean标签声明及User对象对UserService引用。

      class="com.lsz.spring.service.UserService">  

      id="userAction"class="com.lsz.spring.action.User"

      >           

      ref="userService">  

  这样配置,框架就会将UserService对象注入到User类中。

  3)给list集合赋值

同样提供set方法

1.

      public class User{  

2.     privateList

      username;  

3.     publicList

      getUsername() {  

4.         returnusername;  

5.     }  

6.     publicvoid

      setUsername(List username) {  

7.         this.username= username;  

8.     }  

9.

      }  

1.

      id="userAction"class="com.lsz.spring.action.User"

      >  

2.        

3.              

4.                     zhang,san  

5.                     lisi  

6.                     wangwu                                 

7.                  

8.       

9.

  4)给属性文件中的字段赋值

1.

      public class User{  

2.     privateProperties

      props ;  

3.     publicProperties

      getProps() {  

4.         returnprops;  

5.     }  

6.     publicvoid

      setProps(Properties props) {  

7.         this.props= props;  

8.     }  

9.

      }  

file:///C:\Users\aa\AppData\Local\Temp\ksohtml\wps8E8F.tmp.png

1.

        

2.       

3.           

4.            jdbc:oracle:thin:@localhost:orl  

5.            oracle.jdbc.driver.OracleDriver  

6.            scott  

7.            tiger  

8.           

9.       

10.

标签中的key值是.properties属性文件中的名称

注意:

  无论给什么赋值,配置文件中标签的name属性值一定是和对象中名称一致。

2、构造方法注入   1)构造方法一个参数file:///C:\Users\aa\AppData\Local\Temp\ksohtml\wps8E90.tmp.png

1.

      public class User{  

2.     privateString

      usercode;  

3.     publicUser(String

      usercode) {  

4.         this.usercode=usercode;  

5.     }  

6.

      }  

1.

      id="userAction"class="com.lsz.spring.action.User">                          

2.                               

3.

 

       2)构造函数有两个参数时

  当参数为非字符串类型时,在配置文件中需要制定类型,如果不指定类型一律按照字符串类型赋值。

  当参数类型不一致时,框架是按照字符串的类型进行查找的,因此需要在配置文件中制定是参数的位置       type="int"index="1">  

  这样制定,就是构造函数中,第一个参数为string类型,第二个参数为int类型

相关文章

网友评论

      本文标题:【济南中心】JavaEE框架:spring(一)

      本文链接:https://www.haomeiwen.com/subject/vigakftx.html