2019独角兽企业重金招聘Python工程师标准>>>

1- 介绍

本教程文章是基于以下编写的:

  • Spring Framework 4.0.4 RELEASE
  • Eclipse 4.5 MARS (ok for Eclipse 4.4 LUNA)

在本文中使用Maven来声明Spring库,而不是下载Spring库,并以正常的方式来声明。

Maven是一个工具,可以帮你自动,高效地管理您的库,它已成为惯例,所有 Java 程序员必须知道。如果你不知道如何使用Maven,可以花10分钟就学会如何使用它:

  • http://www.yiibai.com/maven/

如果你想下载Spring和声明库,您可以用传统的方式见附录在文件的结尾。

2- Spring框架

下图显示了Spring框架的结构。

  1. IoC Container: 这是最重要的,也是最基础的, Spring的基础。它的作用是配置和Java对象的生命周期管理。这篇教程中我们将学习这一部分。
  2. DAO, ORM, AOP, WEB: 该模块可用于将工具或框架集成到了Spring。

2.1- 反转控制和依赖注入

要了解这个问题,我们使用以下几类:

// Interface HelloWorld
public interface HelloWorld {public void sayHello();
}// Class implements HelloWorld
public class SpringHelloWorld implements HelloWorld {public void sayHello()  {System.out.println("Spring say Hello!");}
}// Other class implements HelloWorld
public class StrutsHelloWorld implements HelloWorld {public void sayHello()  {System.out.println("Struts say Hello!");}
}// And Service class
public class HelloWorldService {// Field type HelloWorldprivate HelloWorld helloWorld;// Constructor HelloWorldService// It initializes the values for the field 'helloWorld'public HelloWorldService()  {this.helloWorld = new StrutsHelloWorld();}}

显而易见的是 HelloWorldService 类管理创建 HelloWorld 对象。

- 另外,在上述情况下,当 HelloWorldService 对象从它的构造创建时,HelloWorld对象也被创建了。 它是从StrutsHelloWorld 创建。

现在的问题是,您要创建一个HelloWorldService对象,HelloWorld对象也同时被创建,但它必须是SpringHelloWorld。

所以 HelloWorldService 是控制“对象创建” Hello World 的。我们为什么不创建 Hello World 转让由第三方,

而是使用 HelloWorldService ?因为我们有“反转控制”(IOC)的定义。

并且IoC容器将充当管理者角色,创建了HelloWorldService 和 HelloWorld 。

IoC = Inversion of Control


IoC容器创建 HelloWorldService 对象,是通过 setter 方法传递 HelloWorld 对象到HelloWorldService。IoC容器做的是“依赖注入”到HelloWorldService。这里的相关性是指对象之间的依赖关系: HelloWorldService 和 helloWorld.

在这一点上,我们已经明确了什么是 IoC和DI。让我们举个例子来更好的理解。

3- 创建项目

  • File/New/Other...



输入:

  • Group Id: com.yiibai
  • Artifact Id: HelloSpring


您的项目已创建:

确保您的项目是建立在Java7或更高版本。右键单击该项目并选择属性。

4- 声明Spring的基础库

这是 Spring的 HelloWorld 例子,所以我们只使用基本的Spring库(核心)。打开pom.xml文件来将使用的库声明:

  • pom.xml 使用以下内容重新覆盖原上面的内容。
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.yiibai</groupId><artifactId>HelloSpring</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><!-- Spring Core --><!-- http://mvnrepository.com/artifact/org.springframework/spring-core --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.1.4.RELEASE</version></dependency><!-- Spring Context --><!-- http://mvnrepository.com/artifact/org.springframework/spring-context --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.1.4.RELEASE</version></dependency></dependencies></project>

5- 工程代码

  • HelloWorld.java
package com.yiibai.tutorial.spring.helloworld;public interface HelloWorld {public void sayHello();}
  • HelloWorldService.java
package com.yiibai.tutorial.spring.helloworld;public class HelloWorldService {private HelloWorld helloWorld;public HelloWorldService() {}public void setHelloWorld(HelloWorld helloWorld) {this.helloWorld = helloWorld;}public HelloWorld getHelloWorld() {return this.helloWorld;}}
  • SpringHelloWorld.java
package com.yiibai.tutorial.spring.helloworld.impl;import com.yiibai.tutorial.spring.helloworld.HelloWorld;public class SpringHelloWorld implements HelloWorld {@Overridepublic void sayHello() {System.out.println("Spring Say Hello!!");}}
  • StrutsHelloWorld.java
package com.yiibai.tutorial.spring.helloworld.impl;import com.yiibai.tutorial.spring.helloworld.HelloWorld;public class StrutsHelloWorld implements HelloWorld {@Overridepublic void sayHello() {System.out.println("Struts Say Hello!!");}}
  • HelloProgram.java
package com.yiibai.tutorial.spring;import com.yiibai.tutorial.spring.helloworld.HelloWorld;
import com.yiibai.tutorial.spring.helloworld.HelloWorldService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class HelloProgram {public static void main(String[] args) {ApplicationContext context =new ClassPathXmlApplicationContext("beans.xml");HelloWorldService service =(HelloWorldService) context.getBean("helloWorldService");HelloWorld hw= service.getHelloWorld();hw.sayHello();}
}
  • beans.xml
<beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><beanid="springHelloWorld"class="com.yiibai.tutorial.spring.helloworld.impl.SpringHelloWorld"></bean><beanid="strutsHelloWorld"class="com.yiibai.tutorial.spring.helloworld.impl.StrutsHelloWorld"></bean><beanid="helloWorldService"class="com.yiibai.tutorial.spring.helloworld.HelloWorldService"><propertyname="helloWorld"ref="springHelloWorld"/></bean></beans>

6- 运行示例

运行 HelloProgram.java

运行 HelloProgram 类的结果如下:

打开 beans.xml 文件并更改配置:

<!-- Original -->
<beanid="helloWorldService"class="com.yiibai.tutorial.spring.helloworld.HelloWorldService"><propertyname="helloWorld"ref="springHelloWorld"/>
</bean><!-- Change to: -->
<beanid="helloWorldService"class="com.yiibai.tutorial.spring.helloworld.HelloWorldService"><propertyname="helloWorld"ref="strutsHelloWorld"/>
</bean>

重新运行 HelloProgram 类并得到以下结果。

7- Spring的工作原理

Spring在这个例子中,工作原理说明如下图所示:

beans.xml

  • 这是一个配置文件,您可以在这里声明Java bean。

可以通过读取beans.xml 文件来创建一个应用程序上下文对象

ApplicationContext context =newClassPathXmlApplicationContext("beans.xml");

IoC容器中,其作用是作为第三种角色,它的任务是创建 beans.xml 文件中声明的 Java Bean 对象。并通过setter方法注入依赖

在这个例子中,HelloWorldService 是一个 java bean 注入依赖。

<!-- beans.xml --><beanid="helloWorldService"class="com.yiibai.tutorial.spring.helloworld.HelloWorldService"><!-- Call: helloWorldService.setHelloWorld(springHelloWorld) --><propertyname="helloWorld"ref="springHelloWorld"/></bean>

8- 使用Spring MVC - 编写Web应用程序

接下来,你可以学习使用Spring MVC编写Web应用程序:

  • http://www.yiibai.com/spring_mvc/spring-mvc-tutorial-for-beginners.html

9- 附:下载Spring 库

您可以下载 Spring 从以下网址:

  • http://maven.springframework.org/release/org/springframework/spring/


解压下载的zip文件到硬盘驱动器文件夹,如下:

代码下载:http://pan.baidu.com/s/1bwgce6

转载于:https://my.oschina.net/chenshuang/blog/1305359

Spring初学快速入门相关推荐

  1. spring boot 快速入门

    文章来源:https://www.cnblogs.com/junyang/p/8151802.html spring boot入门 -- 介绍和第一个例子 "越来越多的企业选择使用sprin ...

  2. 【720开发】 spring boot 快速入门

    spring boot 快速入门 通过构建简单的REST应用,了解spring boot的开发基本流程,验证其简单.易用特性. 环境要求 Spring Boot 2.0.0.BUILD-SNAPSHO ...

  3. Spring框架快速入门

    目录 什么是Spring? 为什么学习Spring? Spring的快速入门 Spring的版本 IOC概述 什么是IOC? Spring的IoC入门 下载Spring的开发包 创建web项目,引入S ...

  4. 视频教程-Spring框架快速入门到精通-Java

    Spring框架快速入门到精通 十年项目开发经验,主要从事java相关的开发,熟悉各种mvc开发框架. 王振伟 ¥18.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 ...

  5. 视频教程-Spring boot快速入门-Java

    Spring boot快速入门 十年项目开发经验,主要从事java相关的开发,熟悉各种mvc开发框架. 王振伟 ¥12.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 ...

  6. 【转】Spring Boot快速入门

    为什么80%的码农都做不了架构师?>>>    简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复 ...

  7. Spring JdbcTemplate快速入门

    Spring提供了一个jdbc模板,它类似于dbutils工具. 问题:如何使用spring jdbc template? 第一:要导入相关的jar包 在这个基础上我们还需要导入 还需要导入相关的数据 ...

  8. Thymeleaf 3 – Thymeleaf 3和Spring MVC快速入门

    Thymeleaf 3发布到达. 新版本带来了许多新功能,例如HTML5支持以及不带标记的文本模板支持– [# th:utext="${thymeleaf.version}" /] ...

  9. boot入门思想 spring_什么是Spring boot?Spring Boot快速入门以及Spring Boot实例教程

    转自:http://www.jianshu.com/p/d24bceea7665 简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候, ...

  10. 芋道 Spring Boot 快速入门

    点击上方"芋道源码",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 原创 | Java 2019 超神之路,很肝~ 中文详细注释的开源项目 RP ...

最新文章

  1. python学习之循环语句的九九乘法表
  2. 澳大利亚科学家研发智能袜子SoPhy,帮助患者进行理疗
  3. idea terminal中文乱码_Terminal优雅的办公带来超高的效率
  4. 看不清的融资迷局 二线玩家字节跳动在打什么主意?
  5. Bootstrap简介
  6. 捷信达温泉管理软件员工卡SQL查询
  7. cadence设计运算放大器_21.比较器的原理与特性,它与运算放大器的本质区别总结归纳...
  8. css动漫效果库,Animate.css功能强大的纯CSS3动画库 - 资源分享
  9. 带负荷测试要求二次最小电流_电流回路基础知识(15):带负荷测试
  10. 润乾集算报表实现多数据集关联的示例
  11. Codeforces Round #478 Div2 975A 975B 975C 975D
  12. 11. 给 apache ,nginx 设置变量
  13. MyBatis中association,collection多表查询(resultMap高级映射)笔录
  14. js 网页烟花效果
  15. 更多:Racket系统编程
  16. PC改变文档显示颜色,保护眼睛,缓解眼疲劳
  17. Cisco 路由器 基于时间控制策略案例
  18. 吃透Redis系列(五):RDB和AOF持久化详细介绍
  19. 正负图表,让数据展示更炫酷
  20. MAC OS下设置bits/stdc++.h万能头文件

热门文章

  1. CocoaPods升级安装三方库报错
  2. Windows Azure 云服务角色架构
  3. ERP必须基于企业流程管理
  4. 如何使用CleanMyMac快速释放系统内存?
  5. Mac 上设置文件共享教程
  6. Navicat for Oracle中如何使用外键
  7. DNSBIND——DNS的ACL和视图
  8. javascript使用栈结构将中缀表达式转换为后缀表达式并计算值
  9. C# 使用Log4Net记录程序日志
  10. Atitit.分区对索引的影响 分区索引和全局索引 attilax总结