摘要:在之前的所有相關(guān)博文中,都會涉及工程的創(chuàng)建。本文我們將介紹嵌入的中的工具,來快速的構(gòu)建出一個基礎(chǔ)的工程。創(chuàng)建工程第一步菜單欄中選擇,我們可以看到如下圖所示的創(chuàng)建功能窗口。最后,點擊就能完成工程的構(gòu)建了。
spring cloud簡介
spring cloud 為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)的一些工具,包括配置管理、服務(wù)發(fā)現(xiàn)、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分布式會話等等。它運行環(huán)境簡單,可以在開發(fā)人員的電腦上跑。另外說明spring cloud是基于springboot的,所以需要開發(fā)中對springboot有一定的了解,如果不了解的話可以看這篇文章:2小時學會springboot。另外對于“微服務(wù)架構(gòu)” 不了解的話,可以通過搜索引擎搜索“微服務(wù)架構(gòu)”了解下。
在之前的所有Spring Boot相關(guān)博文中,都會涉及Spring Boot工程的創(chuàng)建。而創(chuàng)建的方式多種多樣,這里,我們可以通過Maven來手工構(gòu)建或是通過腳手架等方式快速搭建。
本文我們將介紹嵌入的Intellij中的maven工具,來快速的構(gòu)建出一個基礎(chǔ)的Spring Cloud工程。
創(chuàng)建工程第一步: 菜單欄中選擇File=>New=>Project..,我們可以看到如下圖所示的創(chuàng)建功能窗口。然后,我們選擇maven。
第二步: 點擊Next,等待片刻后,我們可以看到如下圖所示的工程信息窗口,在這里我們可以編輯我們想要創(chuàng)建的工程信息。其中,GroupId是工程的分組id,ArtifactId是模塊分組id,Version是當前的版本。GroupId、ArtifactId、Version組合在一起形成一個模塊的坐標
第三步: 點擊Next,進入最后關(guān)于工程物理存儲的一些細節(jié)。最后,點擊Finish就能完成工程的構(gòu)建了。
工程構(gòu)建完成
加入pom坐標修改YML配置4.0.0 cn.zhangbox spring-cloud-study 1.0-SNAPSHOT cn.zhangbox.cloud.demo cloud-demo 1.0-SNAPSHOT UTF-8 1.8 org.springframework.cloud spring-cloud-starter-eureka org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-dependencies Dalston.SR1 pom import org.springframework.boot spring-boot-maven-plugin
#工程名稱 spring: application: name: cloud-demo #選擇哪一個環(huán)境的配置 #這里可以在每個環(huán)境配置redis,數(shù)據(jù)庫(mysql),消息(kafka)等相關(guān)的組件的配置 profiles: active: dev #配置eureka獲取服務(wù)地址,這里使用的是程序員DD公開的eureka注冊中心,感謝程序員DD提供的注冊中心 eureka: client: serviceUrl: defaultZone: http://eureka.didispace.com/eureka/ #文檔塊區(qū)分為三個--- --- server: port: 8081 spring: profiles: dev #日志 logging: config: classpath:log/logback.xml path: log/cloud-demo #文檔塊區(qū)分為三個--- --- server: port: 8082 spring: profiles: test #日志 logging: config: classpath:log/logback.xml path: usr/cloud-demo/log/cloud-demo #文檔塊區(qū)分為三個--- --- server: port: 8083 spring: profiles: prod #日志 logging: config: classpath:log/logback.xml path: usr/cloud-demo/log/cloud-demo創(chuàng)建日志配置文件
在工程resources文件夾下新建文件夾log,并在該文件夾下創(chuàng)建logback.xml文件,加入以下配置:
創(chuàng)建Controller${CONSOLE_LOG_PATTERN} UTF-8 debug ${LOG_PATH}/log_debug.log %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n UTF-8 ${LOG_PATH}/debug/log-debug-%d{yyyy-MM-dd}.%i.log 500MB 30 debug ACCEPT DENY ${LOG_PATH}/log_info.log %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n UTF-8 ${LOG_PATH}/info/log-info-%d{yyyy-MM-dd}.%i.log 500MB 30 info ACCEPT DENY ${LOG_PATH}/log_warn.log %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n UTF-8 ${LOG_PATH}/warn/log-warn-%d{yyyy-MM-dd}.%i.log 500MB 30 warn ACCEPT DENY ${LOG_PATH}/log_error.log %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n UTF-8 ${LOG_PATH}/error/log-error-%d{yyyy-MM-dd}.%i.log 500MB 30 error ACCEPT DENY
在工程java代碼目錄下創(chuàng)建controller的目錄在下面創(chuàng)建DcController類用來測試服務(wù)是否已經(jīng)注冊到eureka并加入以下代碼:
@RestController public class DcController { @Autowired DiscoveryClient discoveryClient; @GetMapping("/dc") public String dc() { String services = "Services: " + discoveryClient.getServices(); System.out.println(services); return services; } }創(chuàng)建啟動類
@EnableDiscoveryClient //使用該注解將注冊服務(wù)到eureka @SpringBootApplication public class SpringCloudDemoApplication { public static void main(String[] args) { new SpringApplicationBuilder( SpringCloudDemoApplication.class).web(true).run(args); } }控制臺打印
"C:Program FilesJavajdk1.8.0_151injava" -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:51282,suspend=y,server=n -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=51281 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -Dfile.encoding=UTF-8 -classpath "C:Program FilesJavajdk1.8.0_151jrelibcharsets.jar;C:Program FilesJavajdk1.8.0_151jrelibdeploy.jar;C:Program FilesJavajdk1.8.0_151jrelibextaccess-bridge-64.jar;C:Program FilesJavajdk1.8.0_151jrelibextcldrdata.jar;C:Program FilesJavajdk1.8.0_151jrelibextdnsns.jar;C:Program FilesJavajdk1.8.0_151jrelibextjaccess.jar;C:Program FilesJavajdk1.8.0_151jrelibextjfxrt.jar;C:Program FilesJavajdk1.8.0_151jrelibextlocaledata.jar;C:Program FilesJavajdk1.8.0_151jrelibext ashorn.jar;C:Program FilesJavajdk1.8.0_151jrelibextsunec.jar;C:Program FilesJavajdk1.8.0_151jrelibextsunjce_provider.jar;C:Program FilesJavajdk1.8.0_151jrelibextsunmscapi.jar;C:Program FilesJavajdk1.8.0_151jrelibextsunpkcs11.jar;C:Program FilesJavajdk1.8.0_151jrelibextzipfs.jar;C:Program FilesJavajdk1.8.0_151jrelibjavaws.jar;C:Program FilesJavajdk1.8.0_151jrelibjce.jar;C:Program FilesJavajdk1.8.0_151jrelibjfr.jar;C:Program FilesJavajdk1.8.0_151jrelibjfxswt.jar;C:Program FilesJavajdk1.8.0_151jrelibjsse.jar;C:Program FilesJavajdk1.8.0_151jrelibmanagement-agent.jar;C:Program FilesJavajdk1.8.0_151jrelibplugin.jar;C:Program FilesJavajdk1.8.0_151jrelib esources.jar;C:Program FilesJavajdk1.8.0_151jrelib t.jar;C:UsersAdministratorDesktopmanagespring-cloud-studycloud-demo argetclasses;D:開發(fā)工具 epositoryorgspringframeworkcloudspring-cloud-starter-eureka1.3.1.RELEASEspring-cloud-starter-eureka-1.3.1.RELEASE.jar;D:開發(fā)工具 epositoryorgspringframeworkcloudspring-cloud-starter1.2.2.RELEASEspring-cloud-starter-1.2.2.RELEASE.jar;D:開發(fā)工具 epositoryorgspringframeworkcloudspring-cloud-context1.2.2.RELEASEspring-cloud-context-1.2.2.RELEASE.jar;D:開發(fā)工具 epositoryorgspringframeworksecurityspring-security-crypto4.2.2.RELEASEspring-security-crypto-4.2.2.RELEASE.jar;D:開發(fā)工具 epositoryorgspringframeworkcloudspring-cloud-commons1.2.2.RELEASEspring-cloud-commons-1.2.2.RELEASE.jar;D:開發(fā)工具 epositoryorgspringframeworksecurityspring-security-rsa1.0.3.RELEASEspring-security-rsa-1.0.3.RELEASE.jar;D:開發(fā)工具 epositoryorgouncycastlecpkix-jdk15on1.55cpkix-jdk15on-1.55.jar;D:開發(fā)工具 epositoryorgouncycastlecprov-jdk15on1.55cprov-jdk15on-1.55.jar;D:開發(fā)工具 epositoryorgspringframeworkcloudspring-cloud-netflix-core1.3.1.RELEASEspring-cloud-netflix-core-1.3.1.RELEASE.jar;D:開發(fā)工具 epositoryorgspringframeworkootspring-boot1.5.3.RELEASEspring-boot-1.5.3.RELEASE.jar;D:開發(fā)工具 epositoryorgspringframeworkootspring-boot-autoconfigure1.5.3.RELEASEspring-boot-autoconfigure-1.5.3.RELEASE.jar;D:開發(fā)工具 epositoryorgspringframeworkcloudspring-cloud-netflix-eureka-client1.3.1.RELEASEspring-cloud-netflix-eureka-client-1.3.1.RELEASE.jar;D:開發(fā)工具 epositorycom etflixeurekaeureka-client1.6.2eureka-client-1.6.2.jar;D:開發(fā)工具 epositoryorgcodehausjettisonjettison1.3.7jettison-1.3.7.jar;D:開發(fā)工具 epositorystaxstax-api1.0.1stax-api-1.0.1.jar;D:開發(fā)工具 epositorycom etflix etflix-commons etflix-eventbus