当前位置:文档之家› 【黑马程序员】JavaEE框架:spring(一)

【黑马程序员】JavaEE框架:spring(一)

【黑马程序员】JavaEE框架:spring(一)一、技术说明(技术介绍,技术优势以及发展史等)1.1、什么是springl Spring是分层的JavaSE/EE full-stack 轻量级开源框架分层:三层体系结构,为每一个层都提供解决方案web层:struts2、spring-mvcservice层:springdao层:hibernate、mybatis、jdbcTemplate(spring)轻量级:使用时占用资源少,依赖程序少。

比较:EJB1.2、spring由来Expert One-to-One J2EE Design and Development ,介绍EJB,使用,特点Expert One-to-One J2EE Development without EJB ,不使用EJB,spring思想1.3、spring核心l 以IoC(Inverse of Control 反转控制)和AOP(Aspect Oriented Programming 面向切面编程为内核)1.4、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应用难度大大降低1.5、spring体系结构l spring 核心功能:beans 、core 、context 、expression二、环境搭建(技术开发环境)2.1、获取 Spring framework jar 包 1、spring 官网下载从官网下载spring 最新的相关jar 包,官网download 地址/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 会冲突,解决方法删掉它就是了[AppleScript] 纯文本查看 复制代码?1 2 3 org.springframework.beans.factory.BeanCreationException: Errorcreating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is ng.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;) Caused by:ng.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" ng.NoClassDefFoundError: org/apache/commons/logging/LogFactory commons-logging-1.1.1.jar 日志记录3. 配置 XMLSpring 的最大的作用就是提供 bean 的管理功能,在 spring 中 bean 的管理是通过 XML 实现的,要 用此功能,需要把 bean 配置到 spring 的 xml1. 新建立一个 xml.名字任意,如 applicationContext.xml,或者 text.xml 都可以2. 添加 xml 头定义[AppleScript] 纯文本查看 复制代码?1 234 5 <?xml version="1.0" encoding="utf-8"?><beans xmlns=/schema/beans ① xsi:schemaLocation="/schema/beans ② [url]/schema/beans/spring-beans-3.2.xs d[/url] ③"> <bean> </bean> </beans>① Xmlns(XML NameSpace) 声明命名空间,建议是用网址做命名空间,但并不会去访问改网址, 仅仅是 namespace 和 xsd (xsd 是 spring 这个 xml 的 schema 文件,里面定义配置内容)里 声明的 targetNamespace 保持一致 . 注:这里命名空间是改不了的,其实是在代码中也写死了,可以打开 spring-beans3.2.0.M1-sources.jar 包的org\springframework\beans\factory\xml\BeanDefinitionParserDelegate.java 查看对/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.1 、spring 注入的简单案例(入门级) 新建一个 class 用于注入,[AppleScript] 纯文本查看 复制代码?1 2 3 package org.beans;public class Test { public void say(){System.out.println("黑马"); } }把类通过 xml 配置注入[AppleScript] 纯文本查看 复制代码?1<?xml version="1.0" encoding="utf-8"?> <beansxmlns="/schema/beans" xsi:schemaLo cation="/schema/beans[url]/schema/beans/spring-beans-3.2.xs d[/url]"> <bean id="test" class="org.beans.Test" /> </beans>测试:[AppleScript] 纯文本查看复制代码?1 2 3 4 5 6 7 8 9package org.beans;import org.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;public class testBeans {public static void main(String[] args) {ApplicationContext ctx = newClassPathXmlApplicationContext("test.xml");Test test=(Test) ctx.getBean("黑马");test.say(); }}4.2、spring框架为我们提供了三种注入方式,分别是set注入,构造方法注入,接口注入。

接口注入不作要求,下面介绍前两种方式。

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

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

file:///C:\Users\aa\AppData\Local\Temp\ksohtml\wps8E7F.tmp.png1. public class User{2. privateString username;3.4. publicString getUsername() {5. returnusername;6. }7. publicvoid setUsername(String username) {8. ername= username;9. }10. }我们只需要提供属性的set方法,然后去属性文件中去配置好让框架能够找到applicationContext.xml文件的beans标签。

相关主题