為何模塊開發
先舉個栗子,同一張數據表,可能要在多個項目中或功能中使用,所以就有可能在每個模塊都要搞一個mybatis去配置。如果一開始規定說這張表一定不可以改字段屬性,那么沒毛病。但是事實上, 一張表從項目開始到結束,不知道被改了多少遍,所以,你有可能在多個項目中去改mybatis改到吐血!
在舉一個栗子,一個web服務里包含了多個功能模塊,比如其中一個功能可能會消耗大量資源和時間,當用戶調用這個功能的時候,可能會影響到其他功能的正常使用,這個時候,如果把各個功能模塊分出來單獨部署,然后通過http請求去調用,至于性能和響應速度,再單獨去優化,將會非常爽!這也有利于將來的
分布式集群
根據當前的業務需求,我需要重構現有的web功能,多模塊化,然后單獨部署,基本架構示意圖如下
怎樣分模塊
注意:下面配置的步驟是基于intellij idea 2016.3.4(64),不保證eclipse能成功。如果你還在使用eclipse,建議你刪掉它,使用idea吧
1、創建maven主項目例如,springbootmodules,并刪掉src文件
2、右鍵項目分別創建三個module,dao,service1,service2
3、將之前項目用到的依賴寫在主項目的pom里,這里要注意
4、dao層主要提供實體類,curd接口和xml映射文件
5、一定要在service1和service2配置數據庫的相關信息,并添加spring的相關配置
6、編寫接口測試
相關代碼
父項目pom
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
<?xml version= "1.0" encoding= "utf-8" ?> <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.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > <modelversion> 4.0 . 0 </modelversion> <groupid>com.boot.lean</groupid> <artifactid>springbootquick</artifactid> <version> 1.0 -snapshot</version> <modules> <module>dao</module> <module>service1</module> <module>service2</module> </modules> <packaging>pom</packaging> <name>springbootquick</name> <parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version> 1.5 . 1 .release</version> <relativepath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceencoding>utf- 8 </project.build.sourceencoding> <shadedclassifier>bin</shadedclassifier> <java.version> 1.8 </java.version> <mybatis-spring-boot> 1.2 . 0 </mybatis-spring-boot> <mysql-connector> 5.1 . 39 </mysql-connector> </properties> <dependencies> <!-- spring boot web 依賴 --> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <!-- spring boot test 依賴 --> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-test</artifactid> <scope>test</scope> </dependency> <!-- spring boot mybatis 依賴 --> <dependency> <groupid>org.mybatis.spring.boot</groupid> <artifactid>mybatis-spring-boot-starter</artifactid> <version>${mybatis-spring-boot}</version> </dependency> <!-- mysql 連接驅動依賴 --> <dependency> <groupid>mysql</groupid> <artifactid>mysql-connector-java</artifactid> <version>${mysql-connector}</version> </dependency> <!-- junit --> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version> 4.12 </version> </dependency> <dependency> <groupid>org.apache.commons</groupid> <artifactid>commons-pool2</artifactid> <version> 2.4 . 2 </version> </dependency> <dependency> <groupid>commons-beanutils</groupid> <artifactid>commons-beanutils</artifactid> <version> 1.9 . 2 </version> </dependency> <dependency> <groupid>commons-logging</groupid> <artifactid>commons-logging</artifactid> <version> 1.2 </version> </dependency> <dependency> <groupid>commons-dbcp</groupid> <artifactid>commons-dbcp</artifactid> <version> 1.4 </version> </dependency> <dependency> <groupid>net.sf.json-lib</groupid> <artifactid>json-lib</artifactid> <version> 2.4 </version> <classifier>jdk15</classifier> </dependency> </dependencies> <build> <plugins> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-compiler-plugin</artifactid> <version> 3.1 </version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-surefire-plugin</artifactid> <version> 2.19 . 1 </version> <configuration> <skiptests> true </skiptests> <!--默認關掉單元測試 --> </configuration> </plugin> <plugin> <groupid>org.mybatis.generator</groupid> <artifactid>mybatis-generator-maven-plugin</artifactid> <version> 1.3 . 2 </version> <configuration> <verbose> true </verbose> <overwrite> true </overwrite> </configuration> <dependencies> <dependency> <groupid>mysql</groupid> <artifactid>mysql-connector-java</artifactid> <version> 5.1 . 30 </version> </dependency> </dependencies> </plugin> </plugins> </build> </project> |
dao模塊的pom(里面配置了mybatis的逆向功能插件)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
<?xml version= "1.0" encoding= "utf-8" ?> <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.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > <parent> <artifactid>springbootquick</artifactid> <groupid>com.boot.lean</groupid> <version> 1.0 -snapshot</version> </parent> <modelversion> 4.0 . 0 </modelversion> <artifactid>dao</artifactid> <packaging>jar</packaging> <build> <!-- 一定要聲明如下配置--> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/resources</directory> </resource> </resources> </build> </project> |
service1和service2的pom一樣
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
<?xml version= "1.0" encoding= "utf-8" ?> <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.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > <parent> <artifactid>springbootquick</artifactid> <groupid>com.boot.lean</groupid> <version> 1.0 -snapshot</version> </parent> <modelversion> 4.0 . 0 </modelversion> <artifactid>service1</artifactid> <packaging>jar</packaging> <dependencies> <dependency> <groupid>com.boot.lean</groupid> <artifactid>dao</artifactid> <version> 1.0 -snapshot</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-maven-plugin</artifactid> </plugin> </plugins> </build> </project> |
需要注意的是,service模塊里我用的是注解配置,如圖所示
結構示意圖
注意配置文件里的端口號
打包測試
在父項目下執行maven命令
1
|
mvn package |
service1和service2目錄下分別會產生target文件,里面包含可執行jar包,分別執行
1
2
|
java -jar service1- 1.0 -snapshot java -jar service2- 1.0 -snapshot |
如果一切順利的話,你可以得出下面的操作結果
注意端口號哦
有什么問題,自行解決,然后你會發現,跨過這個坑,還有無數個坑在等你~
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://blog.csdn.net/qqhjqs/article/details/68941934