Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit807d58a

Browse files
committed
update
1 parent8070ebf commit807d58a

File tree

20 files changed

+805
-4
lines changed

20 files changed

+805
-4
lines changed

‎docs/msa-boot/first-api.md‎

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,119 @@
11
#基于 Spring Boot 的一个微服务实现
22

3+
4+
本章节,我们将基于 Spring Boot 技术来实现我们的第一个微服务天气预报应用——micro-weather。micro-weather 的作用是实现天气预报功能,可以根据不同的城市,查询该城市的实时天气情况。
5+
6+
##开发环境
7+
8+
* Gradle 4.0
9+
* Spring Boot 2.0.0.M2
10+
11+
##数据来源
12+
13+
理论上,天气的数据是天气预报的实现基础。本应用与实际的天气数据无关,理论上,可以兼容多种数据来源。但为求简单,我们在网上找了一个免费、可用的天气数据接口。
14+
15+
* 天气数据来源为中国天气网<http://www.weather.com.cn/>
16+
* 城市ID列表。每个城市都有一个唯一的ID作为标识。见<http://cj.weather.com.cn/support/Detail.aspx?id=51837fba1b35fe0f8411b6df>
17+
18+
天气调用,接口示例,我们以“深圳”城市为例,访问:
19+
20+
* 通过城市名字获得天气数据 :<http://wthrcdn.etouch.cn/weather_mini?city=深圳>
21+
* 通过城市id获得天气数据:<http://wthrcdn.etouch.cn/weather_mini?citykey=101280601>
22+
23+
可用看到如下天气数据返回。
24+
25+
```json
26+
{
27+
"data": {
28+
"yesterday": {
29+
"date":"1日星期五",
30+
"high":"高温 33℃",
31+
"fx":"无持续风向",
32+
"low":"低温 26℃",
33+
"fl":"<![CDATA[<3级]]>",
34+
"type":"多云"
35+
},
36+
"city":"深圳",
37+
"aqi":"72",
38+
"forecast": [
39+
{
40+
"date":"2日星期六",
41+
"high":"高温 32℃",
42+
"fengli":"<![CDATA[<3级]]>",
43+
"low":"低温 26℃",
44+
"fengxiang":"无持续风向",
45+
"type":"阵雨"
46+
},
47+
{
48+
"date":"3日星期天",
49+
"high":"高温 29℃",
50+
"fengli":"<![CDATA[5-6级]]>",
51+
"low":"低温 26℃",
52+
"fengxiang":"无持续风向",
53+
"type":"大雨"
54+
},
55+
{
56+
"date":"4日星期一",
57+
"high":"高温 29℃",
58+
"fengli":"<![CDATA[3-4级]]>",
59+
"low":"低温 26℃",
60+
"fengxiang":"西南风",
61+
"type":"暴雨"
62+
},
63+
{
64+
"date":"5日星期二",
65+
"high":"高温 31℃",
66+
"fengli":"<![CDATA[<3级]]>",
67+
"low":"低温 27℃",
68+
"fengxiang":"无持续风向",
69+
"type":"阵雨"
70+
},
71+
{
72+
"date":"6日星期三",
73+
"high":"高温 32℃",
74+
"fengli":"<![CDATA[<3级]]>",
75+
"low":"低温 27℃",
76+
"fengxiang":"无持续风向",
77+
"type":"阵雨"
78+
}
79+
],
80+
"ganmao":"风较大,阴冷潮湿,较易发生感冒,体质较弱的朋友请注意适当防护。",
81+
"wendu":"29"
82+
},
83+
"status":1000,
84+
"desc":"OK"
85+
}
86+
```
87+
88+
我们通过观察数据,来了解每个返回字段的含义。
89+
90+
* "city": 城市名称
91+
* "aqi": 空气指数,
92+
* "wendu": 实时温度
93+
* "date": 日期,包含未来5天
94+
* "high":最高温度
95+
* "low": 最低温度
96+
* "fengli": 风力
97+
* "fengxiang": 风向
98+
* "type": 天气类型
99+
100+
以上数据,是我们需要的天气数据的核心数据,但是,同时也要关注下面两个字段:
101+
102+
* "status": 接口调用的返回状态,返回值“1000”,意味着数据是接口正常
103+
* "desc": 接口状态的描述,“OK”代表接口正常
104+
105+
重点关注返回值不是“1000”的情况,说明,这个接口调用异常了。
106+
107+
##初始化一个 Spring Boot 项目
108+
109+
初始化一个 Spring Boot 项目 micro-weather-basic,该项目可以直接在我们之前章节课程中的 basic-gradle 项目基础进行修改。同时,为了优化项目的构建速度,我们对Maven中央仓库地址和 Gradle Wrapper 地址做了调整。其中细节暂且不表,读者可以自行参阅源码,或者学习笔者所著的《Spring Boot 教程》(<https://github.com/waylau/spring-boot-tutorial>)。其原理,我也整理到我的博客中了:
110+
111+
*https://waylau.com/change-gradle-wrapper-distribution-url-to-local-file/
112+
*https://waylau.com/use-maven-mirrors/
113+
114+
115+
116+
##创建天气信息实体 WeatherInfo
117+
118+
119+
创建`com.waylau.spring.cloud.domain`包,用于存储实体。创建天气信息实体 WeatherInfo

‎docs/msa-boot/msa-boot-api.md‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
11
#微服务 API 设计原则
2-

‎samples/basic-gradle/src/main/java/com/waylau/spring/cloud/CloudApplication.java‎renamed to ‎samples/basic-gradle/src/main/java/com/waylau/spring/cloud/Application.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
importorg.springframework.boot.autoconfigure.SpringBootApplication;
55

66
@SpringBootApplication
7-
publicclassCloudApplication {
7+
publicclassApplication {
88

99
publicstaticvoidmain(String[]args) {
10-
SpringApplication.run(CloudApplication.class,args);
10+
SpringApplication.run(Application.class,args);
1111
}
1212
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
@RunWith(SpringRunner.class)
99
@SpringBootTest
10-
publicclassCloudApplicationTests {
10+
publicclassApplicationTests {
1111

1212
@Test
1313
publicvoidcontextLoads() {
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
.gradle
2+
/build/
3+
!gradle/wrapper/gradle-wrapper.jar
4+
5+
### STS ###
6+
.apt_generated
7+
.classpath
8+
.factorypath
9+
.project
10+
.settings
11+
.springBeans
12+
13+
### IntelliJ IDEA ###
14+
.idea
15+
*.iws
16+
*.iml
17+
*.ipr
18+
19+
### NetBeans ###
20+
nbproject/private/
21+
build/
22+
nbbuild/
23+
dist/
24+
nbdist/
25+
.nb-gradle/
26+
/bin/
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
buildscript {
2+
ext {
3+
springBootVersion='1.5.6.RELEASE'
4+
}
5+
repositories {
6+
//mavenCentral()
7+
maven { url"http://maven.aliyun.com/nexus/content/groups/public/" }
8+
}
9+
dependencies {
10+
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
11+
}
12+
}
13+
14+
applyplugin:'java'
15+
applyplugin:'eclipse'
16+
applyplugin:'org.springframework.boot'
17+
18+
version='0.0.1-SNAPSHOT'
19+
sourceCompatibility=1.8
20+
21+
repositories {
22+
//mavenCentral()
23+
maven { url"http://maven.aliyun.com/nexus/content/groups/public/" }
24+
}
25+
26+
27+
dependencies {
28+
compile('org.springframework.boot:spring-boot-starter-web')
29+
testCompile('org.springframework.boot:spring-boot-starter-test')
30+
}
53.4 KB
Binary file not shown.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
distributionBase=GRADLE_USER_HOME
2+
distributionPath=wrapper/dists
3+
zipStoreBase=GRADLE_USER_HOME
4+
zipStorePath=wrapper/dists
5+
#distributionUrl=https\://services.gradle.org/distributions/gradle-3.5.1-bin.zip
6+
distributionUrl=file\:/D:/software/webdev/java/gradle-4.0-all.zip
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
#!/usr/bin/env sh
2+
3+
##############################################################################
4+
##
5+
## Gradle start up script for UN*X
6+
##
7+
##############################################################################
8+
9+
# Attempt to set APP_HOME
10+
# Resolve links: $0 may be a link
11+
PRG="$0"
12+
# Need this for relative symlinks.
13+
while [-h"$PRG" ];do
14+
ls=`ls -ld"$PRG"`
15+
link=`expr"$ls":'.*-> \(.*\)$'`
16+
if expr"$link":'/.*'> /dev/null;then
17+
PRG="$link"
18+
else
19+
PRG=`dirname"$PRG"`"/$link"
20+
fi
21+
done
22+
SAVED="`pwd`"
23+
cd"`dirname\"$PRG\"`/">/dev/null
24+
APP_HOME="`pwd -P`"
25+
cd"$SAVED">/dev/null
26+
27+
APP_NAME="Gradle"
28+
APP_BASE_NAME=`basename"$0"`
29+
30+
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
31+
DEFAULT_JVM_OPTS=""
32+
33+
# Use the maximum available, or set MAX_FD != -1 to use that value.
34+
MAX_FD="maximum"
35+
36+
warn ( ) {
37+
echo"$*"
38+
}
39+
40+
die ( ) {
41+
echo
42+
echo"$*"
43+
echo
44+
exit 1
45+
}
46+
47+
# OS specific support (must be 'true' or 'false').
48+
cygwin=false
49+
msys=false
50+
darwin=false
51+
nonstop=false
52+
case"`uname`"in
53+
CYGWIN* )
54+
cygwin=true
55+
;;
56+
Darwin* )
57+
darwin=true
58+
;;
59+
MINGW* )
60+
msys=true
61+
;;
62+
NONSTOP* )
63+
nonstop=true
64+
;;
65+
esac
66+
67+
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
68+
69+
# Determine the Java command to use to start the JVM.
70+
if [-n"$JAVA_HOME" ];then
71+
if [-x"$JAVA_HOME/jre/sh/java" ];then
72+
# IBM's JDK on AIX uses strange locations for the executables
73+
JAVACMD="$JAVA_HOME/jre/sh/java"
74+
else
75+
JAVACMD="$JAVA_HOME/bin/java"
76+
fi
77+
if [!-x"$JAVACMD" ];then
78+
die"ERROR: JAVA_HOME is set to an invalid directory:$JAVA_HOME
79+
80+
Please set the JAVA_HOME variable in your environment to match the
81+
location of your Java installation."
82+
fi
83+
else
84+
JAVACMD="java"
85+
which java>/dev/null2>&1|| die"ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
86+
87+
Please set the JAVA_HOME variable in your environment to match the
88+
location of your Java installation."
89+
fi
90+
91+
# Increase the maximum file descriptors if we can.
92+
if ["$cygwin"="false"-a"$darwin"="false"-a"$nonstop"="false" ];then
93+
MAX_FD_LIMIT=`ulimit -H -n`
94+
if [$?-eq 0 ];then
95+
if ["$MAX_FD"="maximum"-o"$MAX_FD"="max" ];then
96+
MAX_FD="$MAX_FD_LIMIT"
97+
fi
98+
ulimit -n$MAX_FD
99+
if [$?-ne 0 ];then
100+
warn"Could not set maximum file descriptor limit:$MAX_FD"
101+
fi
102+
else
103+
warn"Could not query maximum file descriptor limit:$MAX_FD_LIMIT"
104+
fi
105+
fi
106+
107+
# For Darwin, add options to specify how the application appears in the dock
108+
if$darwin;then
109+
GRADLE_OPTS="$GRADLE_OPTS\"-Xdock:name=$APP_NAME\"\"-Xdock:icon=$APP_HOME/media/gradle.icns\""
110+
fi
111+
112+
# For Cygwin, switch paths to Windows format before running java
113+
if$cygwin;then
114+
APP_HOME=`cygpath --path --mixed"$APP_HOME"`
115+
CLASSPATH=`cygpath --path --mixed"$CLASSPATH"`
116+
JAVACMD=`cygpath --unix"$JAVACMD"`
117+
118+
# We build the pattern for arguments to be converted via cygpath
119+
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d2>/dev/null`
120+
SEP=""
121+
fordirin$ROOTDIRSRAW;do
122+
ROOTDIRS="$ROOTDIRS$SEP$dir"
123+
SEP="|"
124+
done
125+
OURCYGPATTERN="(^($ROOTDIRS))"
126+
# Add a user-defined pattern to the cygpath arguments
127+
if ["$GRADLE_CYGPATTERN"!="" ];then
128+
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
129+
fi
130+
# Now convert the arguments - kludge to limit ourselves to /bin/sh
131+
i=0
132+
forargin"$@";do
133+
CHECK=`echo"$arg"|egrep -c"$OURCYGPATTERN" -`
134+
CHECK2=`echo"$arg"|egrep -c"^-"`### Determine if an option
135+
136+
if [$CHECK-ne 0 ]&& [$CHECK2-eq 0 ];then### Added a condition
137+
eval`echo args$i`=`cygpath --path --ignore --mixed"$arg"`
138+
else
139+
eval`echo args$i`="\"$arg\""
140+
fi
141+
i=$((i+1))
142+
done
143+
case$iin
144+
(0)set -- ;;
145+
(1)set --"$args0" ;;
146+
(2)set --"$args0""$args1" ;;
147+
(3)set --"$args0""$args1""$args2" ;;
148+
(4)set --"$args0""$args1""$args2""$args3" ;;
149+
(5)set --"$args0""$args1""$args2""$args3""$args4" ;;
150+
(6)set --"$args0""$args1""$args2""$args3""$args4""$args5" ;;
151+
(7)set --"$args0""$args1""$args2""$args3""$args4""$args5""$args6" ;;
152+
(8)set --"$args0""$args1""$args2""$args3""$args4""$args5""$args6""$args7" ;;
153+
(9)set --"$args0""$args1""$args2""$args3""$args4""$args5""$args6""$args7""$args8" ;;
154+
esac
155+
fi
156+
157+
# Escape application args
158+
save ( ) {
159+
for idoprintf %s\\n"$i"| sed"s/'/'\\\\''/g;1s/^/'/;\$s/\$/'\\\\/";done
160+
echo""
161+
}
162+
APP_ARGS=$(save"$@")
163+
164+
# Collect all arguments for the java command, following the shell quoting and substitution rules
165+
evalset --$DEFAULT_JVM_OPTS$JAVA_OPTS$GRADLE_OPTS"\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath"\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain"$APP_ARGS"
166+
167+
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
168+
if ["$(uname)"="Darwin" ]&& ["$HOME"="$PWD" ];then
169+
cd"$(dirname"$0")"
170+
fi
171+
172+
exec"$JAVACMD""$@"

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp