文档章节

【第2章 Spring快速入门】2.1 Java应用之HelloWorld

陶邦仁
 陶邦仁
发布于 2015/05/24 22:28
字数 1810
阅读 1261
收藏 19

上一节:【第1章 Spring概述与结构】1.2 Spring模块与结构

注意:本系列教程不会通过工程单独依赖某个Jar包,而是通过开源中国的Maven库,来进行Jar包的依赖管理,所以后续的讲解都是以Maven工程的方式,来搭建Spring Demo。

说在前面,前面第1章内容已简单介绍了Spring的起源,特点,模块划分以及结构说明,相信大家已对Spring有了整体性了解,经从本节开始,采用Spring的最新RELEASE版 spring-framework-4.1.6.RELEASE 来讲解Spring模块的使用以及源码分析。废话不多说,先简单介绍下Spring4.0 GA发行版的内容变更,使大家对Spring4.0的内容较于之前的历史版本有更清晰的认识。 ##Spring4.0 GA介绍## Spring4.0 GA版本支持了众多Java 8的新特性, 新增了对WebSocket、STOMP等技术的支持,并增强了测试、Web开发的便利性,另外,在这个版本中还删除了废弃的方法和类。

近十年来,Spring框架成为企业级Java开发中占据主导地位的编程模型,该框架最早发布于2004年,其后发布了几个重大的版本更新:

  1. 在Spring 2.0中提供对XML命名空间和AspectJ的支持;
  2. 在Spring 2.5中新增了注解驱动的配置;
  3. 在Spring 3.0版本中引入了很强大的使用Java 5+的基础功能以及基于Java的@Configuration模型;

Spring4.0 GA是最新的主版本,这个版本中包含了大量的新特性以应对Java语言和Java EE规范的发展。 Spring 4.0是首个完全支持 Java 8 特性的框架,这个版本对环境的最低要求是Java SE 6。Spring 4.0连同其他的Spring项目,将会应对并带动下一个十年JVM的新趋势,包括开发人员生产率(Developer Productivity)、大数据、云、REST以及微服务架构(Micro Service Architecture)。

Spring框架4.0的整体架构如下图所示: 输入图片说明

Spring 4.0的新特性包括: **对Java 8诸多特性的支持。**现在开发者可以在Spring的回调接口中使用lambda表达式以及方法引用(method reference),对java.time(JSR-310)提供了很好的支持,一些注解也被更新为@Repeatable。尽管Spring 4.0还支持Java SE6,但是官方还是建议在使用Spring 4的新项目中,使用Java 7或8。

**对Java EE 6和7的支持。**Spring在JCP中协助定义相关的规范,框架中对这些规范提供了很好的支持。Spring框架的4.0版本考虑到了JavaEE6以及更高的版本规范,尤其是JPA 2.0和Servlet 3.0规范。为了更具技术前瞻性,Spring 框架4.0还支持Java EE 7 中已可用的规范,包括JMS 2.0、JTA 1.2、JPA 2.1、Bean Validation 1.1以及JSR-236 Concurrency Utilities。另外, 对其他开源库的支持也提升到了最新版本,如Hibernate、Quartz、EhCache等。

**对WebSocket、SockJS以及STOMP的支持。**Spring 4.0提供了一个名为 spring-websocket的新模块,以支持基于WebSocket的、客户端-服务器的双向通信,它与JSR-356Java WebSocket API兼容。另外,还提供了基于SockJS(对WebSocket的模拟)的回调方案,以适应不支持WebSocket协议的浏览器。新增的 spring-messaging模块提供了对STOMP的支持,以及用于路由和处理来自WebSocket客户端的STOMP消息的注解编程模型。spring-messaging模块中还包含了Spring Integration项目中的核心抽象类,如Message、MessageChannel、MessageHandler。

**对动态语言Groovy的支持。**应用可以部分或完全使用Groovy编写。借助于Spring 4.0,能够使用Groovy DSL定义外部的Bean配置,这类似于XML Bean声明,但是语法更为简洁。使用Groovy还能够在启动代码中直接嵌入Bean的声明。

简化Spring的学习过程。Spring.io网站上提供了全新的“Getting Started”指导和样例帮助你学习Spring技术。基于Spring框架4.0构建的Spring Boot项目也可以极大地简化应用开发中相关配置的复杂性。

**对未来新架构的考量。**像Amazon、Google、Facebook这样的行业的领导者,目前正在抛弃庞大的Java架构,而是更加倾向于微服务架构以及REST。针对这种趋势,Spring 4.0中做了充分考虑,在Spring框架中REST是一等公民,在其他组件如Spring Boot、Spring HATEOAS、Spring Security、Spring Social、Spring Data均是如此。借助于Spring 框架4.0,开发人员可以使用非阻塞的AsyncRestTemplate以及Java语言中的Futures等特性,构建出更加具有交互性、事件驱动的REST服务。Spring对HTML5/WebSocket RFC 6455/JSR-356的支持均有助于创建事件驱动的应用程序。

**Spring框架4.0删除了所有废弃的方法和类。**如果你想从一个之前的版本中升级到4.0的话,需要将所有对废弃方法和类的引用进行更新。

当前咱们使用的是最新版Spring Framework 4.1.6,此版本主要是个 bug 修复版本,强烈建议当前所有 4.x 用户升级!Spring Framework 4.1.6 是第一个正式兼容当前 JDK 8 update 40 的版本 。Spring 4.1.x 支持更广泛,由 Oracle 和 IBM 提供的 Java runtimes 从 2010-era JDK 6 到最新的 2015-era JDK 8。之后,Spring Framework 4.2 将会测试早期 JDK 9 构建,努力支持不同的 JDK 版本。 ##Spring下载与说明## 访问http://repo.spring.io/libs-release-local/org/springframework站点,下载Spring的最新稳定版本。目前最新版本为spring-framework-4.1.6.RELEASE-dist.zip。解压缩下载到的压缩包,解压缩后的文件夹应用如下几个文件夹。

输入图片说明

**docs:**该文件夹下包含spring的相关文档、开发指南及API参考文档。 **libs:**该文件夹下包含spring各模块的jar包,需要到哪个模块,直接依赖相关模块jar包。Spring各模块jar包说明如下图: 输入图片说明 输入图片说明 输入图片说明

如果我们在使用Spring某个模块时,必须要依赖模块所需的其他Spring模块或者外部JAR包,Spring模块JAR包依赖关系如下图: 输入图片说明 **schema:**该文件下包含spring XML配置文件所依赖的schema文件。 输入图片说明

##HelloWorld之搭建## ###POM文件配置### 根据上面的JAR包依赖关系,Spring Java Project 工程至少需要依赖以下几个JAR文件:

<dependencies>
    <!-- 1. Spring 至少依赖包 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
    </dependency>
    <!-- END -->
</dependencies>

###定义Bean###

package com.king.helloworld.bean;

/**
 * @author taomk
 * @version 1.0
 * @since 15-7-7 下午4:06
 */
public class HelloWorld {

    private String name;

    public void setName(String name) {
        this.name = name;
    }

    public void hello() {
        System.out.println("Hello, " + name);
    }
}

###配置ApplicationContext.xml###

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="helloWorld" class="com.king.helloworld.bean.HelloWorld">
        <property name="name" value="Tao Bangren"/>
    </bean>
</beans>

###运行Main###

public class Main {

    public static void main (String [] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-bean.xml");
	HelloWorld helloWorld = (HelloWorld) context.getBean("helloWorld");

	helloWorld.hello();
    }
}

结果输出: 输入图片说明

本文涉及到的源代码:king-spring

下一节:【第2章 Spring快速入门】2.2 WEB应用之HelloWorld

© 著作权归作者所有

陶邦仁
粉丝 1690
博文 420
码字总数 1483887
作品 0
海淀
技术主管
私信 提问
加载中

评论(3)

陶邦仁
陶邦仁 博主

引用来自“疯狂的逍遥”的评论

@火蚁 手机看不到内容
待续。。。
疯狂的逍遥
疯狂的逍遥
@火蚁 手机看不到内容
泥巴刀儿
泥巴刀儿
good
☆聊聊Spring系列_Index

Spring经典详解 Spring事务机制详解 Spring配置事务五种方式 关于Spring加载classpath与classpath*的过程剖析 深入分析Spring 与 Spring MVC容器 Spring系列文章 【第1章 Spring概述与结构】...

陶邦仁
2015/12/09
1K
0
【第2章 Spring快速入门】2.2 WEB应用之HelloWorld

上一节:【第2章 Spring快速入门】2.1 Java应用之HelloWorld 本章节主要介绍在WEB开发过程中,Spring是怎么使用的?上一节中我们已经讲到在普通的Java Project中如何使用Spring容器了,那么在...

陶邦仁
2015/07/07
685
0
《Kotin 编程思想·实战》目录

《Kotin 编程思想·实战》目录 《Kotlin极简教程》正式上架: 点击这里 > 去京东商城购买阅读 点击这里 > 去天猫商城购买阅读 第1章 JVM语言家族概览 1.1 编程语言简史 1.2 程序执行的三种方...

程序员诗人
2017/06/03
0
0
Java程序员必读书单,家族又添新成员

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 有些革命出其不意地吸引了全世界的眼球。Twitter、Linux操作系统和...

异步社区
2018/05/09
0
0
【第1章 Spring概述与结构】1.2 Spring模块与结构

上一节:【第1章 Spring概述与结构】1.1 Spring起源与概述 基于Java Beans的配置管理,采用IOC的原理,特别是对依赖注入技术的使用。这些都用来减少各组件间对实施细则的相互依赖性。 一个核...

陶邦仁
2015/05/21
863
0

没有更多内容

加载失败,请刷新页面

加载更多

前端面试题汇总

一. HTML常见的兼容性 1.HTML5 标签在低版本浏览器不兼容 解决办法:使用html5shiv库,引入下列语句 <!--[if lte IE 8]> <script src="https://cdn.bootcss.com/html5shiv/r29/html5.js"></sc......

蓝小驴
21分钟前
3
0
OSChina 周四乱弹 —— 我气的脸都黑了!

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 小小编辑推荐《Red Battle》- 高橋李依 / 豊崎愛生 《Red Battle》- 高橋李依 / 豊崎愛生 手机党少年们想听歌,请使劲儿戳(这里) @丶Lion ...

小小编辑
34分钟前
402
19
找OSG教程, B站就有

https://www.bilibili.com/video/av64849038?from=search&seid=11632913960900279653

洛克人杰洛
56分钟前
5
0
学习记录(day07-Vue组件、自定义属性、自定义事件)

[TOC] 1.1.1什么是组件 一个vue文件就是一个组件 组件将html标签/css样式/对应JS打包成一个整体,也可以理解钻进一个具有样式和特效的自定义标签。 一、编写组件(提供方)<template> <di...

庭前云落
今天
5
0
使用Prometheus监控SpringBoot应用

通过之前的文章我们使用Prometheus监控了应用服务器node_exporter,数据库mysqld_exporter,今天我们来监控一下你的应用。(本文以SpringBoot 2.1.9.RELEASE 作为监控目标) 编码 添加依赖 使...

JAVA日知录
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部