소스 검색

Edit for content and style

Work in progress, pushing now in order to share with rest of content
team.
Chris Beams 13 년 전
부모
커밋
bff7580620
2개의 변경된 파일63개의 추가작업 그리고 68개의 파일을 삭제
  1. 59
    48
      README.md
  2. 4
    20
      start/pom.xml

+ 59
- 48
README.md 파일 보기

2
 
2
 
3
 Introduction
3
 Introduction
4
 ------------
4
 ------------
5
-This Getting Started guide will walk you through the process of creating a simple REST service using Spring.
6
 
5
 
7
-To help you get started, we've provided an initial project structure as well as the completed project for you in GitHub:
6
+### What You'll Build
8
 
7
 
9
-```sh
10
-$ git clone https://github.com/springframework-meta/gs-rest-service.git
8
+This guide will take you through creating a "hello world" [RESTful web service](/understanding/REST) with Spring—literally, we'll build a service that accepts an HTTP GET request:
11
 ```
9
 ```
10
+$ curl http://localhost:8080/hello-world
11
+```
12
+and responds with the following [JSON](/understanding/JSON):
13
+```
14
+{"id":1,"content":"Hello, World!"}
15
+```
16
+
17
+### What You'll Need
18
+
19
+ - About 15 minutes
20
+ - A favorite text editor or IDE
21
+ - [JDK 7](http://docs.oracle.com/javase/7/docs/webnotes/install/index.html) or better
22
+ - Your choice of Maven (3.0+) or Gradle (1.5+)
12
 
23
 
13
-In the `start` folder, you'll find a bare project, ready for you to copy-n-paste code snippets from this document. In the `complete` folder, you'll find the complete project code.
24
+### How to Complete this Guide
14
 
25
 
15
-Before we can write the REST service itself, there's some initial project setup that's required. Or, you can skip straight to the [fun part](#creating-a-representation-class).
26
+Like all Spring's [Getting Started guides](/getting-started), you can choose to start from scratch and complete each step, or you can jump past basic setup steps that may already be familiar to you. Either way, you'll end up with working code.
16
 
27
 
28
+To **start from scratch**, just move on to the next section and start [setting up the project](#scratch).
17
 
29
 
18
-Adding dependencies
19
--------------------
20
-First you'll need to set up a basic build script. You can use any build system you like, but we've included snippets for [Maven](https://maven.apache.org) and [Gradle](http://gradle.org) here. If you're not familiar with either of these, you can refer to our [Getting Started with Maven](../gs-maven/README.md) or [Getting Started with Gradle](../gs-gradle/README.md) guides.
30
+If you'd like to **skip the basics**, then do the following:
21
 
31
 
22
-Add the [Spring MVC](TODO) and [Jackson](http://jackson.codehaus.org) JSON libraries as dependencies:
32
+ - [download][zip] and unzip the source repository for this guide—or clone it using [git](/understanding/git):
33
+`git clone https://github.com/springframework-meta/gs-rest-service.git`
34
+ - cd into `gs-rest-service/initial`
35
+ - jump ahead to [creating a representation class](#initial).
36
+
37
+And **when you're finished**, you can check your results against the the code in `gs-rest-service/complete`.
38
+
39
+
40
+<a name="scratch"></a>
41
+Setting up the project
42
+----------------------
43
+First you'll need to set up a basic build script. You can use any build system you like when building apps with Spring, but we've included what you'll need to work with [Maven](https://maven.apache.org) and [Gradle](http://gradle.org) here. If you're not familiar with either of these, you can refer to our [Getting Started with Maven](../gs-maven/README.md) or [Getting Started with Gradle](../gs-gradle/README.md) guides.
23
 
44
 
24
 ### Maven
45
 ### Maven
25
 
46
 
26
-Create a `pom.xml` file with the following contents:
47
+Create a Maven POM that looks like this:
27
 
48
 
28
 `pom.xml`
49
 `pom.xml`
29
 ```xml
50
 ```xml
33
     <modelVersion>4.0.0</modelVersion>
54
     <modelVersion>4.0.0</modelVersion>
34
 
55
 
35
     <groupId>org.springframework</groupId>
56
     <groupId>org.springframework</groupId>
36
-    <artifactId>gs-rest-service-complete</artifactId>
37
-    <version>0.0.1-SNAPSHOT</version>
57
+    <artifactId>gs-rest-service</artifactId>
58
+    <version>1.0-SNAPSHOT</version>
38
 
59
 
39
     <parent>
60
     <parent>
40
         <groupId>org.springframework.bootstrap</groupId>
61
         <groupId>org.springframework.bootstrap</groupId>
41
         <artifactId>spring-bootstrap-starters</artifactId>
62
         <artifactId>spring-bootstrap-starters</artifactId>
42
-        <version>0.0.1-SNAPSHOT</version>
63
+        <version>0.5.0.BUILD-SNAPSHOT</version>
43
     </parent>
64
     </parent>
44
 
65
 
45
     <dependencies>
66
     <dependencies>
47
             <groupId>org.springframework.bootstrap</groupId>
68
             <groupId>org.springframework.bootstrap</groupId>
48
             <artifactId>spring-bootstrap-web-starter</artifactId>
69
             <artifactId>spring-bootstrap-web-starter</artifactId>
49
         </dependency>
70
         </dependency>
50
-        <dependency>
51
-            <groupId>com.fasterxml.jackson.core</groupId>
52
-            <artifactId>jackson-databind</artifactId>
53
-        </dependency>
54
     </dependencies>
71
     </dependencies>
55
 
72
 
73
+    <!-- TODO: remove once bootstrap goes GA -->
74
+    <repositories>
75
+        <repository>
76
+            <id>spring-snapshots</id>
77
+            <name>Spring Snapshots</name>
78
+            <url>http://repo.springsource.org/snapshot</url>
79
+            <snapshots><enabled>true</enabled></snapshots>
80
+        </repository>
81
+    </repositories>
82
+
56
 </project>
83
 </project>
57
 ```
84
 ```
58
 
85
 
86
+TODO: mention that we're using Spring Bootstrap's [_starter POMs_](../gs-bootstrap-starter) here.
87
+
59
 Experienced Maven users who feel nervous about using an external parent project: don't panic, you can take it out later, it's just there to reduce the amount of code you have to write to get started.
88
 Experienced Maven users who feel nervous about using an external parent project: don't panic, you can take it out later, it's just there to reduce the amount of code you have to write to get started.
60
 
89
 
61
-### Gradle \[[copy complete `build.gradle` to clipboard](start/build.gradle)\]
90
+### Gradle
91
+
92
+TODO: paste complete build.gradle.
62
 
93
 
63
 Add the following within the `dependencies { }` section of your build.gradle file:
94
 Add the following within the `dependencies { }` section of your build.gradle file:
64
 
95
 
92
 This class is concise, but there's plenty going on under the hood. [`@EnableWebMvc`](http://static.springsource.org/spring/docs/3.2.x/javadoc-api/org/springframework/web/servlet/config/annotation/EnableWebMvc.html) handles the registration of a number of components that enable Spring's support for annotation-based controllers—you'll build one of those in an upcoming step. And we've also annotated the configuration class with [`@ComponentScan`](http://static.springsource.org/spring/docs/3.2.x/javadoc-api/org/springframework/context/annotation/ComponentScan.html) which tells Spring to scan the `hello` package for those controllers (along with any other annotated component classes).
123
 This class is concise, but there's plenty going on under the hood. [`@EnableWebMvc`](http://static.springsource.org/spring/docs/3.2.x/javadoc-api/org/springframework/web/servlet/config/annotation/EnableWebMvc.html) handles the registration of a number of components that enable Spring's support for annotation-based controllers—you'll build one of those in an upcoming step. And we've also annotated the configuration class with [`@ComponentScan`](http://static.springsource.org/spring/docs/3.2.x/javadoc-api/org/springframework/context/annotation/ComponentScan.html) which tells Spring to scan the `hello` package for those controllers (along with any other annotated component classes).
93
 
124
 
94
 
125
 
126
+<a name="initial"></a>
127
+
95
 Creating a Representation Class
128
 Creating a Representation Class
96
 -------------------------------
129
 -------------------------------
97
 With the essential Spring MVC configuration out of the way, it's time to get to the nuts and bolts of our REST service by creating a resource representation class and an endpoint controller.
130
 With the essential Spring MVC configuration out of the way, it's time to get to the nuts and bolts of our REST service by creating a resource representation class and an endpoint controller.
103
 ```json
136
 ```json
104
 {
137
 {
105
     "id": 1,
138
     "id": 1,
106
-    "content": "Hello, stranger!"
139
+    "content": "Hello, World!"
107
 }
140
 }
108
 ```
141
 ```
109
     
142
     
201
 
234
 
202
 The `@EnableAutoConfiguration` annotation has also been added: it provides a load of defaults (like the embedded servlet container) depending on the contents of your classpath, and other things.
235
 The `@EnableAutoConfiguration` annotation has also been added: it provides a load of defaults (like the embedded servlet container) depending on the contents of your classpath, and other things.
203
 
236
 
204
-Running the Service
205
--------------------------------------
206
-
207
-Add the following to your `pom.xml`: 
208
-
209
-`pom.xml`
210
-```xml
211
-<properties>
212
-    <start-class>hello.HelloWorldConfiguration</start-class>
213
-</properties>
214
-```
215
-
216
-You can now run the application with the Maven exec plugin:
217
-
218
-```
219
-$ mvn exec:java
220
-
221
-... service comes up ...
222
-```
223
-
224
-so in another terminal you can do this
225
-
226
-```
227
-$ curl localhost:8080/hello-world
228
-{"id":1,"content":"Hello, Stranger!"}
229
-```
230
 
237
 
231
 Building an executable JAR
238
 Building an executable JAR
232
 --------------------------
239
 --------------------------
251
 $ mvn package
258
 $ mvn package
252
 ```
259
 ```
253
 
260
 
261
+Running the Service
262
+-------------------------------------
263
+
254
 Now you can run it from the jar as well, and distribute that as an executable artifact:
264
 Now you can run it from the jar as well, and distribute that as an executable artifact:
255
 
265
 
256
 ```
266
 ```
259
 ... service comes up ...
269
 ... service comes up ...
260
 ```
270
 ```
261
 
271
 
262
-Congratulations! You have just developed a simple REST service using Spring. This is a basic foundation for building a complete REST API in Spring.
272
+Congratulations! You have just developed a simple RESTful service using Spring. This is a basic foundation for building a complete REST API in Spring.
263
 
273
 
264
 
274
 
265
 Related Resources
275
 Related Resources
266
 -----------------
276
 -----------------
267
 
277
 
268
-There's more to building REST services than is covered here. You may want to continue your exploration of Spring and REST with the following Getting Started guides:
278
+There's more to building RESTful web services than is covered here. You may want to continue your exploration of Spring and REST with the following Getting Started guides:
269
 
279
 
270
 * Handling POST, PUT, and GET requests in REST services
280
 * Handling POST, PUT, and GET requests in REST services
271
 * Creating self-describing APIs with HATEOAS
281
 * Creating self-describing APIs with HATEOAS
275
 * Testing REST services
285
 * Testing REST services
276
 
286
 
277
 
287
 
288
+[zip]: https://github.com/springframework-meta/gs-rest-service/archive/master.zip

+ 4
- 20
start/pom.xml 파일 보기

5
 
5
 
6
 	<groupId>org.springframework</groupId>
6
 	<groupId>org.springframework</groupId>
7
 	<artifactId>gs-rest-service</artifactId>
7
 	<artifactId>gs-rest-service</artifactId>
8
-	<version>0.0.1-SNAPSHOT</version>
8
+	<version>1.0-SNAPSHOT</version>
9
 
9
 
10
 	<parent>
10
 	<parent>
11
 		<groupId>org.springframework.bootstrap</groupId>
11
 		<groupId>org.springframework.bootstrap</groupId>
20
 		</dependency>
20
 		</dependency>
21
 	</dependencies>
21
 	</dependencies>
22
 
22
 
23
-	<properties>
24
-		<!-- use UTF-8 for everything -->
25
-		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
26
-		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
27
-		<start-class>hello.HelloWorldConfiguration</start-class>
28
-	</properties>
29
-
23
+	<!-- TODO: remove once bootstrap goes GA -->
30
 	<repositories>
24
 	<repositories>
31
 		<repository>
25
 		<repository>
32
 			<id>spring-snapshots</id>
26
 			<id>spring-snapshots</id>
33
 			<name>Spring Snapshots</name>
27
 			<name>Spring Snapshots</name>
34
 			<url>http://repo.springsource.org/snapshot</url>
28
 			<url>http://repo.springsource.org/snapshot</url>
35
-			<snapshots>
36
-				<enabled>true</enabled>
37
-			</snapshots>
38
-		</repository>
39
-		<repository>
40
-			<id>spring-milestones</id>
41
-			<name>Spring Milestones</name>
42
-			<url>http://repo.springsource.org/milestone</url>
43
-			<snapshots>
44
-				<enabled>false</enabled>
45
-			</snapshots>
29
+			<snapshots><enabled>true</enabled></snapshots>
46
 		</repository>
30
 		</repository>
47
 	</repositories>
31
 	</repositories>
48
 
32
 
49
-</project>
33
+</project>