├── .gitignore
├── .idea
├── codeStyles
│ ├── Project.xml
│ └── codeStyleConfig.xml
├── compiler.xml
├── dictionaries
│ └── JourWon.xml
├── encodings.xml
├── inspectionProfiles
│ └── Project_Default.xml
├── misc.xml
├── sonarlint
│ └── issuestore
│ │ ├── 0
│ │ ├── 3
│ │ │ └── 038ed32b75a756fd70c618ebaf6d78d2be6d874e
│ │ ├── 4
│ │ │ ├── 044d0d511c0d2c0e1c4c7a2273b046690e3f5cad
│ │ │ └── 047ea185a4f2efac4300a1ca3df00a92a895c4bb
│ │ ├── 5
│ │ │ ├── 0533fe4099a854839dd61ca5b8c8bff321da5631
│ │ │ └── 0536bc708eef367baae9bdd3b15c71156d5b2984
│ │ ├── 9
│ │ │ ├── 098bb0ed44c513911250a0a904e914c0be3265eb
│ │ │ └── 09c7a9b69fd5de454b9b689e6ef5b4dd46624f2f
│ │ ├── a
│ │ │ └── 0a9416da5598ceeacc8cbb9bb2643a4454a1ecf6
│ │ ├── b
│ │ │ └── 0bbd00d5a2cd378bffc663981035e31f24cbacd1
│ │ ├── c
│ │ │ └── 0c71c85c6c52310fa642c3398dba6548b5108a76
│ │ ├── d
│ │ │ └── 0d05d6635f4004f9382298202bc084669608868d
│ │ └── f
│ │ │ └── 0f1334a9a50955f4c6849a59bde6b6caa7e9f86a
│ │ ├── 1
│ │ ├── 0
│ │ │ └── 10b197a933362f5903d4fe2e28aca7593cbbd5fc
│ │ ├── 1
│ │ │ └── 11c588082f40a9b25e2fe3299fbc2a56eb3e6721
│ │ ├── 2
│ │ │ └── 1244bc56a4f3623f6c48282f86f23e920101d1fe
│ │ ├── 6
│ │ │ └── 1656614b127a75d8d0d4207d4f35c65c60c323e3
│ │ ├── 7
│ │ │ ├── 1776ef6b1f05eadc6ed3618abee9b280d2ce8156
│ │ │ └── 17dc6f2f6e8d0397c536ab4db3bbf975301590eb
│ │ ├── 8
│ │ │ ├── 18a969491cbdca79ba10deb9df6c005ea03ff0f5
│ │ │ └── 18d1279552cfa4e71f798418861c552de0f2e9bf
│ │ ├── 9
│ │ │ ├── 1939d6bcd0e950a81413f4056362594c66c07fe2
│ │ │ └── 19d75567f27b02345d1edb107eccae4684d0a55a
│ │ ├── b
│ │ │ └── 1b1ddcdeed71c0d820b45003a0d9211589a83b69
│ │ ├── d
│ │ │ └── 1de9d4893dabd8ff357c3f2ab4f982bac3973d0f
│ │ ├── e
│ │ │ └── 1e21d5b7fbe6de89478d9e3acd4124951c568f66
│ │ └── f
│ │ │ ├── 1f00af9aa3a04c50105dc399d8cb6a0d4a83d446
│ │ │ └── 1fa6940e4406b8a322869a59049c241e53668ecd
│ │ ├── 2
│ │ ├── 1
│ │ │ ├── 21418f1e5b513123e1e7ce4a2df5f23733486291
│ │ │ ├── 21a9c2718221a2dad10875c1a0bef3647aa9a567
│ │ │ └── 21c6ded9146016bafbeccc687c8afd6e01a89f98
│ │ ├── 3
│ │ │ └── 230837192118b532400284b1a40cffe95a4fe779
│ │ ├── 4
│ │ │ └── 24e634a313d47ad82c19a5ca6e32a34b8c1a6494
│ │ ├── 6
│ │ │ └── 2624a937e43a9c0cd43f7bee42784af2ee8802ad
│ │ ├── 7
│ │ │ └── 275648774bb0b914a8818379a6c76589803a70c3
│ │ ├── a
│ │ │ └── 2a4edeeed4cad4ece666bb042912f2c15d83e543
│ │ └── b
│ │ │ └── 2bfa2b108f2439e99e004f4085b58c22cf995f73
│ │ ├── 3
│ │ ├── 0
│ │ │ └── 303a8f1d0f7b8ae5e48aab2c42c21124bb014cf3
│ │ ├── 4
│ │ │ └── 3407a35d37761f9708d5314ca03d4b3e1bf24645
│ │ ├── 5
│ │ │ ├── 354c210150bc3767c1ec6b3fd7e0c58c6909f5b9
│ │ │ └── 35e10333a0599fb5a8dec224cfed39c08fa15a02
│ │ ├── 7
│ │ │ └── 37edc1a2a7cbf85d3498327a70097ab650256dd9
│ │ ├── 8
│ │ │ └── 38cadaa221b88c7fe4411f61de07bc75e5838947
│ │ ├── c
│ │ │ └── 3cdef224df4fab325100fdb240659836d75418c7
│ │ └── e
│ │ │ └── 3e4310103526e0f68504cb6554182edac979b730
│ │ ├── 4
│ │ ├── 0
│ │ │ └── 4022e1bfe80794fc50e38c1abe664b8d6faf7508
│ │ ├── 2
│ │ │ └── 429476f87f32c90345fc8c1f7d869452a4f3bc0c
│ │ ├── 3
│ │ │ └── 43dfe3adf9912338a1f59320a75f52424e8a2a6f
│ │ ├── 4
│ │ │ └── 442292b8a7efeabbe4cc176709b833b1792140ec
│ │ ├── 5
│ │ │ ├── 451dd80895a2dca2b8bc8b331234815d91ad4d6b
│ │ │ └── 456bfcf9286dfc99b77e3cdd7ac959ab62f8fc76
│ │ ├── 6
│ │ │ └── 46cd42ef962aa695adf758f87b6cbb355e2b3b06
│ │ ├── 9
│ │ │ └── 492a74d9ae0c3e58d2d5ab082f208197c30a0502
│ │ └── a
│ │ │ ├── 4abcb516e82f47d6e2e7af1c22e74cc48e802736
│ │ │ └── 4af0c2f735a1cc5f83e66f0f219d5af66e28db01
│ │ ├── 5
│ │ ├── 1
│ │ │ ├── 51ae7214218ea02fdb2b8dc077628825b954cda5
│ │ │ └── 51c613a6f8be733e1c77aa30b39f64087a212608
│ │ ├── 2
│ │ │ └── 523711b86791f59e01b2ff501eb5f803bf8ed93b
│ │ ├── 3
│ │ │ └── 53f16b48225ab4c1dadf17a8e8733490bd1e2384
│ │ ├── 4
│ │ │ └── 541ca15a912fcfb32c15218c78724d5d08360dde
│ │ ├── 6
│ │ │ └── 56668caf5ebd5b1efd0e0cfdd88e42ef2fe63044
│ │ ├── 7
│ │ │ └── 57bef6ded49fbcffcac41c7301c75b4c45dfea1c
│ │ ├── b
│ │ │ └── 5b036fafe0cfc8bf4a33e5ef49e6a19737d1e16e
│ │ └── c
│ │ │ └── 5cd31ae5e8151a84eb9dbf9199fb3989d26d3d49
│ │ ├── 6
│ │ ├── 2
│ │ │ ├── 6235b609be2a4276c67991542511f46c69fd4a98
│ │ │ └── 623b5235d2ac5b4326a73852cc13e7f0a36dd9f5
│ │ ├── 3
│ │ │ └── 63dc04ab9dabd9c951c3bed7d0f50526f3e5f4a8
│ │ ├── 6
│ │ │ └── 66c7457b55ef4605bc19439dcc3a51394dfcc4dc
│ │ └── d
│ │ │ └── 6def1081c3028609d10dd3ef02d749ab6590767e
│ │ ├── 7
│ │ ├── 0
│ │ │ ├── 70c64663c41444ee3762f05b19252254da725a6a
│ │ │ ├── 70dabc06f664ea50791c7230faf11dd8692e30c4
│ │ │ └── 70dd682a4cbc31bd9731c8f8c7d0c3c4423c2ca9
│ │ ├── 1
│ │ │ ├── 71431ed6986b6facdbfc01a60e32c75cd9a00c48
│ │ │ └── 71d93d2372085408f0ef4b397b3d870edeb816ee
│ │ ├── 3
│ │ │ └── 730f0f73243719c68ba52bd804817421c4d61b13
│ │ ├── 4
│ │ │ └── 7471a3e2b398b66f8cd7b7c506ab212aaf91d07d
│ │ ├── 8
│ │ │ └── 783e9ab7a78669241279445c215acb8ce2e5302b
│ │ ├── 9
│ │ │ └── 793187b4ac477754124a81a39a895b0e613fafe6
│ │ └── d
│ │ │ ├── 7d7a353bd4dce88ba37b2cdd48632df4bb324172
│ │ │ └── 7dc83c9070df79ba98e230bf5d79cce33d417ee5
│ │ ├── 8
│ │ ├── 0
│ │ │ ├── 801cb9a0f5f3e60c5dda30123835e99eee1e8f7f
│ │ │ └── 803deaf8f5613f23cf85b515b1d3215648a3734d
│ │ ├── 2
│ │ │ └── 825f6893311e64bcfd3bdd438ef9f1fc3f0da4a6
│ │ ├── 3
│ │ │ └── 83bec9dcabb59fc866b0d9b94d086ced4a7ffc56
│ │ ├── 5
│ │ │ └── 854d1321ab28ed3afcd5e3834b04472008790f96
│ │ ├── 8
│ │ │ └── 88a2e41f707010bfb52bcdfb999747c5cab5a251
│ │ └── e
│ │ │ └── 8e19e7385db5e6b26fe835f3c051239d52cc71ea
│ │ ├── 9
│ │ ├── 0
│ │ │ └── 908a1c00641bd36fa202ae994f44c77c5650ae4b
│ │ ├── 1
│ │ │ └── 914e872837a41889df4456970c1c98a6de410ea2
│ │ ├── 2
│ │ │ └── 92d7641f2b22ae0479f725d07fac46ffd4f7047b
│ │ ├── 7
│ │ │ ├── 972b172bda6c345ccaa8171c2abf9bcf38c20b9f
│ │ │ └── 97b65ddf00b808445c46a0e151ca1968fcedc0c5
│ │ ├── 9
│ │ │ └── 9981130731102a855eba5875b99a72548d02148c
│ │ ├── a
│ │ │ └── 9a640725bc25295ae472f9fe58b8f06af636dea8
│ │ ├── c
│ │ │ └── 9c992d6d1b6538046050dc3c2a57acc3b4b1ca2f
│ │ ├── d
│ │ │ └── 9d042ba7a26c74936e89eeb2636f1c3897a65c16
│ │ └── f
│ │ │ └── 9fb9dc432fc858ee8072c8a650979e3c96a72bdd
│ │ ├── a
│ │ ├── 1
│ │ │ └── a15a2866706eb6233370acc147f826fa2ad86432
│ │ ├── 2
│ │ │ ├── a2f9618c8ad821b143a07a29a9805fcb0b2df470
│ │ │ └── a2fefc1a723c1cfad6db2441edb4cf7a84e567d3
│ │ ├── 3
│ │ │ └── a350bb6be1933ddc4bf3dde5bdfaed2765a5913a
│ │ ├── 8
│ │ │ └── a8c548ad366cc0524df26156a6ceb3bd5f743d2e
│ │ ├── 9
│ │ │ └── a955b37f363cbdb0321dba91e97ea28e0e54bc34
│ │ ├── c
│ │ │ └── ac0e933e1b7d6d7427dced7bb247806ccba6cd7a
│ │ ├── d
│ │ │ └── ad72d4ed1988be17db75a3b6a0c64d6521a68394
│ │ └── e
│ │ │ └── aeb8f4145f4855ffc044a4c64f5a670e9d94cc54
│ │ ├── b
│ │ ├── 2
│ │ │ └── b25aeab680768d49d7cec07a2579b3c8a6ac4680
│ │ ├── 3
│ │ │ ├── b35ba91ce3c62af117d70ff9ef3176233496e217
│ │ │ └── b39ae52d769ea03b699b5602439afd875433c8a7
│ │ ├── 5
│ │ │ ├── b573b26ca27f604cbc71d5897ce2de0803bac89b
│ │ │ └── b59d2a264b747dda2c49446ba5be175cadc5f3df
│ │ ├── 7
│ │ │ └── b7a72ca6036369611a0c938fac8e15111f9bce6a
│ │ ├── 8
│ │ │ ├── b809ec1fc7910361aca4b2442d5b49c404b1e20c
│ │ │ └── b8e1c4e88a5675b9d5632074a668974a3593bfe3
│ │ ├── d
│ │ │ └── bdd39e1c8f3f7d42420052a6170796e0e174dc01
│ │ ├── e
│ │ │ └── be37edcbec11b3986ed93ef07f333161239de5d2
│ │ └── f
│ │ │ └── bfb48a57fb4f186be883e71a187f8e0845bde869
│ │ ├── c
│ │ ├── 1
│ │ │ └── c1b5aad77ea545e8d97a30a85a19351bb1f8b2a6
│ │ ├── 2
│ │ │ └── c29fbf01efad4d78c2cb54c03fb8a9782a8e16f4
│ │ ├── 7
│ │ │ └── c7f1d8d632bd34f59b464622c0f5a63c20f28234
│ │ ├── c
│ │ │ └── cc58bef98b84f28de20a45d987b8aced4b7d281e
│ │ └── e
│ │ │ ├── ce19a4ca278d7813e1d486e497fc5464e012a0b5
│ │ │ └── ce20324483935b51f4fab200930986e52e4168ee
│ │ ├── d
│ │ ├── 0
│ │ │ └── d04e46bc3b44631be44e5a0e3fb9717d81ed52c5
│ │ ├── 1
│ │ │ └── d1acdeefc189118f89fb20a22dc258b45bc3f325
│ │ ├── 2
│ │ │ ├── d2d339ce3c9a6b938ab2d1c5ef585c63e09c2341
│ │ │ └── d2f5d1978e5f519100a679c4109f89296278badc
│ │ ├── 5
│ │ │ └── d5dd59f52ab871ef287a07d75facb1bcd8d4c6e4
│ │ ├── 6
│ │ │ ├── d6a798299aab7976db34ef8bfe8e270c2fe7b76f
│ │ │ └── d6c5c59d119b0868d1b745239b461298963597e0
│ │ ├── 7
│ │ │ ├── d718b3d11851a4b324785f3c95555aba57efef2d
│ │ │ └── d7629772b71460297b3bb140e5f8a0d942614438
│ │ ├── 9
│ │ │ ├── d971d56749ae611426a6223c893c03efdd7a8306
│ │ │ └── d9b9b3f4c465e80d4b60f47062d841bd1102531a
│ │ ├── a
│ │ │ └── da7fe9c464be0592d5a0c6815ee7af360b2d5a67
│ │ ├── b
│ │ │ ├── db2b137d42a2f03280a09c081b8a7cca6de28247
│ │ │ └── db8ff070dc3f7ef2deb8762876ba82be32875ae1
│ │ ├── c
│ │ │ └── dc1e76e99e853edf55d1b6cc01b84badb837c53f
│ │ └── d
│ │ │ ├── dd7111a9a674f67e5c895edc4c654062ccdb762b
│ │ │ └── dd94f323a5e69298069986d11acb54801b1505f5
│ │ ├── e
│ │ ├── 4
│ │ │ ├── e401a69837b50f9fd128becfd856949c72e99026
│ │ │ └── e4327cf69105283d290efb66a6d67f3cf6fa81d3
│ │ ├── 5
│ │ │ └── e56744ce03f255fd60d7b326841d99877c9e50c3
│ │ ├── 6
│ │ │ └── e647c0c176ea397b27c35ef4aa51222822cdc8a7
│ │ ├── 8
│ │ │ └── e8eb45b2a1d114e814f6f781bb65eac1bf34b42e
│ │ ├── a
│ │ │ └── ea314a3da536bad110b496df44c2f642616c921a
│ │ ├── c
│ │ │ └── ecb1536703f6b6f1686f48a038d9e48b4456e737
│ │ └── d
│ │ │ └── ed5a4f002f78c41a716b590880e28883c819b500
│ │ ├── f
│ │ ├── 0
│ │ │ └── f0b6a7b72c1930e87a9a48d4106cdba21b522cb3
│ │ ├── 2
│ │ │ ├── f21e2f53397cafa6901071b9899b4d6568256641
│ │ │ └── f225267ef2665e58388fec8b693eeb3c2dcf71fe
│ │ ├── 3
│ │ │ └── f37ef4456bb13d2afa276eabb32324fb268cf68d
│ │ ├── 5
│ │ │ └── f5454a5f17cb76cdd7c0fa373ed254aac1823967
│ │ ├── 8
│ │ │ └── f806b67df440474befc98247bfd2d1c92a6a4108
│ │ ├── 9
│ │ │ └── f923bbef801417ac5ed1f2772059f698aef810d8
│ │ ├── a
│ │ │ └── fa86f0f8c1ca95c8ef9de7aabedcdd2eaecdb969
│ │ ├── b
│ │ │ └── fb3961f8497ade7693ae5121edf26b831d9f2a9b
│ │ ├── d
│ │ │ ├── fd6739fca9c030fdb87ccf48816d937fad3ed02a
│ │ │ └── fde8a99f794b7a58469e5a6d4135a10f0bd2058d
│ │ └── e
│ │ │ ├── fe2f113b06d4b5744427c0c5f30f6c1733ec4fe8
│ │ │ ├── fe986d83eb0be014b5535dd0a4bce1c86822b5f4
│ │ │ └── fed19c8a7a5d6fc65387797243443d6c7bf90b36
│ │ └── index.pb
├── uiDesigner.xml
└── workspace.xml
├── README.md
├── admin-client.log
├── admin-client
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── AdminClientApplication.java
│ │ │ ├── controller
│ │ │ └── UserController.java
│ │ │ ├── pojo
│ │ │ ├── Result.java
│ │ │ └── User.java
│ │ │ └── service
│ │ │ ├── UserService.java
│ │ │ └── impl
│ │ │ └── UserServiceImpl.java
│ └── resources
│ │ ├── application-eureka.yml
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── AdminClientApplicationTests.java
├── admin-security-server
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── AdminSecurityServerApplication.java
│ │ │ └── config
│ │ │ └── SecuritySecureConfig.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── AdminSecurityServerApplicationTests.java
├── admin-server
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ └── AdminServerApplication.java
│ └── resources
│ │ ├── application-eureka.yml
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── AdminServerApplicationTests.java
├── api-gateway
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── ApiGatewayApplication.java
│ │ │ ├── config
│ │ │ ├── GatewayConfig.java
│ │ │ └── RedisRateLimiterConfig.java
│ │ │ └── controller
│ │ │ └── FallbackController.java
│ └── resources
│ │ ├── application-eureka.yml
│ │ ├── application-filter.yml
│ │ ├── application-predicate.yml
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── ApiGatewayApplicationTests.java
├── config-client
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── ConfigClientApplication.java
│ │ │ └── controller
│ │ │ └── ConfigClientController.java
│ └── resources
│ │ ├── bootstrap-amqp1.yml
│ │ ├── bootstrap-amqp2.yml
│ │ ├── bootstrap-cluster.yml
│ │ ├── bootstrap-security.yml
│ │ └── bootstrap.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── ConfigClientApplicationTests.java
├── config-security-server
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ └── ConfigSecurityServerApplication.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── ConfigSecurityServerApplicationTests.java
├── config-server
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ └── ConfigServerApplication.java
│ └── resources
│ │ ├── application-amqp.yml
│ │ ├── application-replica1.yml
│ │ ├── application-replica2.yml
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── ConfigServerApplicationTests.java
├── consul-config-client
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── ConsulConfigClientApplication.java
│ │ │ └── controller
│ │ │ └── ConfigClientController.java
│ └── resources
│ │ ├── application.yml
│ │ └── bootstrap.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── ConsulConfigClientApplicationTests.java
├── consul-ribbon-service
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── ConsulRibbonServiceApplication.java
│ │ │ ├── config
│ │ │ └── RibbonConfig.java
│ │ │ ├── controller
│ │ │ └── UserRibbonController.java
│ │ │ └── pojo
│ │ │ ├── Result.java
│ │ │ └── User.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── ConsulRibbonServiceApplicationTests.java
├── consul-user-service
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── ConsulUserServiceApplication.java
│ │ │ ├── controller
│ │ │ └── UserController.java
│ │ │ ├── pojo
│ │ │ ├── Result.java
│ │ │ └── User.java
│ │ │ └── service
│ │ │ ├── UserService.java
│ │ │ └── impl
│ │ │ └── UserServiceImpl.java
│ └── resources
│ │ ├── application-replica1.yml
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── ConsulUserServiceApplicationTests.java
├── eureka-client
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ └── EurekaClientApplication.java
│ └── resources
│ │ ├── application-replica.yml
│ │ ├── application-security.yml
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── EurekaClientApplicationTests.java
├── eureka-security-server
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── EurekaSecurityServerApplication.java
│ │ │ └── config
│ │ │ └── WebSecurityConfig.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── EurekaSecurityServerApplicationTests.java
├── eureka-server
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ └── EurekaServerApplication.java
│ └── resources
│ │ ├── application-replica1.yml
│ │ ├── application-replica2.yml
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── EurekaServerApplicationTests.java
├── feign-service
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── FeignServiceApplication.java
│ │ │ ├── config
│ │ │ └── FeignConfig.java
│ │ │ ├── controller
│ │ │ └── UserFeignController.java
│ │ │ ├── pojo
│ │ │ ├── Result.java
│ │ │ └── User.java
│ │ │ └── service
│ │ │ ├── UserService.java
│ │ │ └── impl
│ │ │ └── UserFallbackService.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── FeignServiceApplicationTests.java
├── hystrix-dashboard
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ └── HystrixDashboardApplication.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── HystrixDashboardApplicationTests.java
├── hystrix-service
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── HystrixServiceApplication.java
│ │ │ ├── config
│ │ │ └── RibbonConfig.java
│ │ │ ├── controller
│ │ │ └── UserHystrixController.java
│ │ │ ├── filter
│ │ │ └── HystrixRequestContextFilter.java
│ │ │ ├── pojo
│ │ │ ├── Result.java
│ │ │ └── User.java
│ │ │ └── service
│ │ │ └── UserService.java
│ └── resources
│ │ ├── application-replica1.yml
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── HystrixServiceApplicationTests.java
├── nacos-config-client
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── NacosConfigClientApplication.java
│ │ │ └── controller
│ │ │ └── ConfigClientController.java
│ └── resources
│ │ ├── application.yml
│ │ └── bootstrap.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── NacosConfigClientApplicationTests.java
├── nacos-ribbon-service
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── NacosRibbonServiceApplication.java
│ │ │ ├── config
│ │ │ └── RibbonConfig.java
│ │ │ ├── controller
│ │ │ └── UserRibbonController.java
│ │ │ └── pojo
│ │ │ ├── Result.java
│ │ │ └── User.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── NacosRibbonServiceApplicationTests.java
├── nacos-user-service
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── NacosUserServiceApplication.java
│ │ │ ├── controller
│ │ │ └── UserController.java
│ │ │ ├── pojo
│ │ │ ├── Result.java
│ │ │ └── User.java
│ │ │ └── service
│ │ │ ├── UserService.java
│ │ │ └── impl
│ │ │ └── UserServiceImpl.java
│ └── resources
│ │ ├── application-replica.yml
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── NacosUserServiceApplicationTests.java
├── oauth2-client
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── Oauth2ClientApplication.java
│ │ │ ├── config
│ │ │ └── SecurityConfig.java
│ │ │ └── controller
│ │ │ └── UserController.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── Oauth2ClientApplicationTests.java
├── oauth2-jwt-server
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── Oauth2JwtServerApplication.java
│ │ │ ├── config
│ │ │ ├── AuthorizationServerConfig.java
│ │ │ ├── JwtTokenStoreConfig.java
│ │ │ ├── RedisTokenStoreConfig.java
│ │ │ ├── ResourceServerConfig.java
│ │ │ └── SecurityConfig.java
│ │ │ ├── controller
│ │ │ └── UserController.java
│ │ │ ├── enhancer
│ │ │ └── JwtTokenEnhancer.java
│ │ │ ├── pojo
│ │ │ └── User.java
│ │ │ └── service
│ │ │ └── UserService.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── Oauth2JwtServerApplicationTests.java
├── oauth2-server
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── Oauth2ServerApplication.java
│ │ │ ├── config
│ │ │ ├── AuthorizationServerConfig.java
│ │ │ ├── ResourceServerConfig.java
│ │ │ └── SecurityConfig.java
│ │ │ ├── controller
│ │ │ └── UserController.java
│ │ │ ├── pojo
│ │ │ └── User.java
│ │ │ └── service
│ │ │ └── UserService.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── Oauth2ServerApplicationTests.java
├── pom.xml
├── ribbon-service
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── RibbonServiceApplication.java
│ │ │ ├── config
│ │ │ └── RibbonConfig.java
│ │ │ ├── controller
│ │ │ └── UserRibbonController.java
│ │ │ └── pojo
│ │ │ ├── Result.java
│ │ │ └── User.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── RibbonServiceApplicationTests.java
├── seata-account-service
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── SeataAccountServiceApplication.java
│ │ │ ├── config
│ │ │ └── DataSourceProxyConfig.java
│ │ │ ├── controller
│ │ │ └── AccountController.java
│ │ │ ├── mapper
│ │ │ └── AccountMapper.java
│ │ │ ├── pojo
│ │ │ ├── Account.java
│ │ │ └── Result.java
│ │ │ └── service
│ │ │ ├── AccountService.java
│ │ │ └── impl
│ │ │ └── AccountServiceImpl.java
│ └── resources
│ │ ├── account.sql
│ │ ├── application.yml
│ │ ├── file.conf
│ │ ├── mapper
│ │ └── AccountMapper.xml
│ │ └── registry.conf
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── SeataAccountServiceApplicationTests.java
├── seata-order-service
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── SeataOrderServiceApplication.java
│ │ │ ├── config
│ │ │ └── DataSourceProxyConfig.java
│ │ │ ├── controller
│ │ │ └── OrderController.java
│ │ │ ├── mapper
│ │ │ └── OrderMapper.java
│ │ │ ├── pojo
│ │ │ ├── Order.java
│ │ │ └── Result.java
│ │ │ └── service
│ │ │ ├── AccountService.java
│ │ │ ├── OrderService.java
│ │ │ ├── StorageService.java
│ │ │ └── impl
│ │ │ └── OrderServiceImpl.java
│ └── resources
│ │ ├── application.yml
│ │ ├── file.conf
│ │ ├── mapper
│ │ └── OrderMapper.xml
│ │ ├── order.sql
│ │ └── registry.conf
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── SeataOrderServiceApplicationTests.java
├── seata-storage-service
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── SeataStorageServiceApplication.java
│ │ │ ├── config
│ │ │ └── DataSourceProxyConfig.java
│ │ │ ├── controller
│ │ │ └── StorageController.java
│ │ │ ├── mapper
│ │ │ └── StorageMapper.java
│ │ │ ├── pojo
│ │ │ ├── Result.java
│ │ │ └── Storage.java
│ │ │ └── service
│ │ │ ├── StorageService.java
│ │ │ └── impl
│ │ │ └── StorageServiceImpl.java
│ └── resources
│ │ ├── application.yml
│ │ ├── file.conf
│ │ ├── mapper
│ │ └── StorageMapper.xml
│ │ ├── registry.conf
│ │ └── storage.sql
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── SeataStorageServiceApplicationTests.java
├── sentinel-service
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── SentinelServiceApplication.java
│ │ │ ├── config
│ │ │ └── RibbonConfig.java
│ │ │ ├── controller
│ │ │ ├── CircleBreakerController.java
│ │ │ ├── RateLimitController.java
│ │ │ └── UserFeignController.java
│ │ │ ├── handler
│ │ │ └── CustomBlockHandler.java
│ │ │ ├── pojo
│ │ │ ├── Result.java
│ │ │ └── User.java
│ │ │ └── service
│ │ │ ├── UserService.java
│ │ │ └── impl
│ │ │ └── UserFallbackService.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── SentinelServiceApplicationTests.java
├── springcloud-learning.iml
├── turbine-service
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ └── TurbineServiceApplication.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── TurbineServiceApplicationTests.java
├── user-service
├── .gitignore
├── .mvn
│ └── wrapper
│ │ ├── MavenWrapperDownloader.java
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── jourwon
│ │ │ └── springcloud
│ │ │ ├── UserServiceApplication.java
│ │ │ ├── controller
│ │ │ └── UserController.java
│ │ │ ├── pojo
│ │ │ ├── Result.java
│ │ │ └── User.java
│ │ │ └── service
│ │ │ ├── UserService.java
│ │ │ └── impl
│ │ │ └── UserServiceImpl.java
│ └── resources
│ │ ├── application-replica.yml
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── jourwon
│ └── springcloud
│ └── UserServiceApplicationTests.java
└── zuul-proxy
├── .gitignore
├── .mvn
└── wrapper
│ ├── MavenWrapperDownloader.java
│ ├── maven-wrapper.jar
│ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
├── main
├── java
│ └── com
│ │ └── jourwon
│ │ └── springcloud
│ │ ├── ZuulProxyApplication.java
│ │ └── filter
│ │ └── PreLogFilter.java
└── resources
│ └── application.yml
└── test
└── java
└── com
└── jourwon
└── springcloud
└── ZuulProxyApplicationTests.java
/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/.idea/codeStyles/Project.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/codeStyles/codeStyleConfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.idea/dictionaries/JourWon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/0/3/038ed32b75a756fd70c618ebaf6d78d2be6d874e:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/0/3/038ed32b75a756fd70c618ebaf6d78d2be6d874e
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/0/4/044d0d511c0d2c0e1c4c7a2273b046690e3f5cad:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/0/4/044d0d511c0d2c0e1c4c7a2273b046690e3f5cad
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/0/4/047ea185a4f2efac4300a1ca3df00a92a895c4bb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/0/4/047ea185a4f2efac4300a1ca3df00a92a895c4bb
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/0/5/0533fe4099a854839dd61ca5b8c8bff321da5631:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/0/5/0533fe4099a854839dd61ca5b8c8bff321da5631
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/0/5/0536bc708eef367baae9bdd3b15c71156d5b2984:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/0/5/0536bc708eef367baae9bdd3b15c71156d5b2984
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/0/9/098bb0ed44c513911250a0a904e914c0be3265eb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/0/9/098bb0ed44c513911250a0a904e914c0be3265eb
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/0/9/09c7a9b69fd5de454b9b689e6ef5b4dd46624f2f:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/0/9/09c7a9b69fd5de454b9b689e6ef5b4dd46624f2f
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/0/a/0a9416da5598ceeacc8cbb9bb2643a4454a1ecf6:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/0/a/0a9416da5598ceeacc8cbb9bb2643a4454a1ecf6
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/0/b/0bbd00d5a2cd378bffc663981035e31f24cbacd1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/0/b/0bbd00d5a2cd378bffc663981035e31f24cbacd1
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/0/c/0c71c85c6c52310fa642c3398dba6548b5108a76:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/0/c/0c71c85c6c52310fa642c3398dba6548b5108a76
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/0/d/0d05d6635f4004f9382298202bc084669608868d:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/0/d/0d05d6635f4004f9382298202bc084669608868d
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/0/f/0f1334a9a50955f4c6849a59bde6b6caa7e9f86a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/0/f/0f1334a9a50955f4c6849a59bde6b6caa7e9f86a
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/1/0/10b197a933362f5903d4fe2e28aca7593cbbd5fc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/1/0/10b197a933362f5903d4fe2e28aca7593cbbd5fc
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/1/1/11c588082f40a9b25e2fe3299fbc2a56eb3e6721:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/1/1/11c588082f40a9b25e2fe3299fbc2a56eb3e6721
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/1/2/1244bc56a4f3623f6c48282f86f23e920101d1fe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/1/2/1244bc56a4f3623f6c48282f86f23e920101d1fe
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/1/6/1656614b127a75d8d0d4207d4f35c65c60c323e3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/1/6/1656614b127a75d8d0d4207d4f35c65c60c323e3
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/1/7/1776ef6b1f05eadc6ed3618abee9b280d2ce8156:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/1/7/1776ef6b1f05eadc6ed3618abee9b280d2ce8156
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/1/7/17dc6f2f6e8d0397c536ab4db3bbf975301590eb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/1/7/17dc6f2f6e8d0397c536ab4db3bbf975301590eb
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/1/8/18a969491cbdca79ba10deb9df6c005ea03ff0f5:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/1/8/18a969491cbdca79ba10deb9df6c005ea03ff0f5
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/1/8/18d1279552cfa4e71f798418861c552de0f2e9bf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/1/8/18d1279552cfa4e71f798418861c552de0f2e9bf
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/1/9/1939d6bcd0e950a81413f4056362594c66c07fe2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/1/9/1939d6bcd0e950a81413f4056362594c66c07fe2
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/1/9/19d75567f27b02345d1edb107eccae4684d0a55a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/1/9/19d75567f27b02345d1edb107eccae4684d0a55a
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/1/b/1b1ddcdeed71c0d820b45003a0d9211589a83b69:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/1/b/1b1ddcdeed71c0d820b45003a0d9211589a83b69
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/1/d/1de9d4893dabd8ff357c3f2ab4f982bac3973d0f:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/1/d/1de9d4893dabd8ff357c3f2ab4f982bac3973d0f
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/1/e/1e21d5b7fbe6de89478d9e3acd4124951c568f66:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/1/e/1e21d5b7fbe6de89478d9e3acd4124951c568f66
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/1/f/1f00af9aa3a04c50105dc399d8cb6a0d4a83d446:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/1/f/1f00af9aa3a04c50105dc399d8cb6a0d4a83d446
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/1/f/1fa6940e4406b8a322869a59049c241e53668ecd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/1/f/1fa6940e4406b8a322869a59049c241e53668ecd
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/2/1/21418f1e5b513123e1e7ce4a2df5f23733486291:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/2/1/21418f1e5b513123e1e7ce4a2df5f23733486291
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/2/1/21a9c2718221a2dad10875c1a0bef3647aa9a567:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/2/1/21a9c2718221a2dad10875c1a0bef3647aa9a567
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/2/1/21c6ded9146016bafbeccc687c8afd6e01a89f98:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/2/1/21c6ded9146016bafbeccc687c8afd6e01a89f98
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/2/3/230837192118b532400284b1a40cffe95a4fe779:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/2/3/230837192118b532400284b1a40cffe95a4fe779
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/2/4/24e634a313d47ad82c19a5ca6e32a34b8c1a6494:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/2/4/24e634a313d47ad82c19a5ca6e32a34b8c1a6494
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/2/6/2624a937e43a9c0cd43f7bee42784af2ee8802ad:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/2/6/2624a937e43a9c0cd43f7bee42784af2ee8802ad
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/2/7/275648774bb0b914a8818379a6c76589803a70c3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/2/7/275648774bb0b914a8818379a6c76589803a70c3
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/2/a/2a4edeeed4cad4ece666bb042912f2c15d83e543:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/2/a/2a4edeeed4cad4ece666bb042912f2c15d83e543
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/2/b/2bfa2b108f2439e99e004f4085b58c22cf995f73:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/2/b/2bfa2b108f2439e99e004f4085b58c22cf995f73
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/3/0/303a8f1d0f7b8ae5e48aab2c42c21124bb014cf3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/3/0/303a8f1d0f7b8ae5e48aab2c42c21124bb014cf3
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/3/4/3407a35d37761f9708d5314ca03d4b3e1bf24645:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/3/4/3407a35d37761f9708d5314ca03d4b3e1bf24645
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/3/5/354c210150bc3767c1ec6b3fd7e0c58c6909f5b9:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/3/5/354c210150bc3767c1ec6b3fd7e0c58c6909f5b9
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/3/5/35e10333a0599fb5a8dec224cfed39c08fa15a02:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/3/5/35e10333a0599fb5a8dec224cfed39c08fa15a02
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/3/7/37edc1a2a7cbf85d3498327a70097ab650256dd9:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/3/7/37edc1a2a7cbf85d3498327a70097ab650256dd9
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/3/8/38cadaa221b88c7fe4411f61de07bc75e5838947:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/3/8/38cadaa221b88c7fe4411f61de07bc75e5838947
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/3/c/3cdef224df4fab325100fdb240659836d75418c7:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/3/c/3cdef224df4fab325100fdb240659836d75418c7
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/3/e/3e4310103526e0f68504cb6554182edac979b730:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/3/e/3e4310103526e0f68504cb6554182edac979b730
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/4/0/4022e1bfe80794fc50e38c1abe664b8d6faf7508:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/4/0/4022e1bfe80794fc50e38c1abe664b8d6faf7508
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/4/2/429476f87f32c90345fc8c1f7d869452a4f3bc0c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/4/2/429476f87f32c90345fc8c1f7d869452a4f3bc0c
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/4/3/43dfe3adf9912338a1f59320a75f52424e8a2a6f:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/4/3/43dfe3adf9912338a1f59320a75f52424e8a2a6f
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/4/4/442292b8a7efeabbe4cc176709b833b1792140ec:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/4/4/442292b8a7efeabbe4cc176709b833b1792140ec
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/4/5/451dd80895a2dca2b8bc8b331234815d91ad4d6b:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/4/5/451dd80895a2dca2b8bc8b331234815d91ad4d6b
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/4/5/456bfcf9286dfc99b77e3cdd7ac959ab62f8fc76:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/4/5/456bfcf9286dfc99b77e3cdd7ac959ab62f8fc76
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/4/6/46cd42ef962aa695adf758f87b6cbb355e2b3b06:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/4/6/46cd42ef962aa695adf758f87b6cbb355e2b3b06
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/4/9/492a74d9ae0c3e58d2d5ab082f208197c30a0502:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/4/9/492a74d9ae0c3e58d2d5ab082f208197c30a0502
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/4/a/4abcb516e82f47d6e2e7af1c22e74cc48e802736:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/4/a/4abcb516e82f47d6e2e7af1c22e74cc48e802736
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/4/a/4af0c2f735a1cc5f83e66f0f219d5af66e28db01:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/4/a/4af0c2f735a1cc5f83e66f0f219d5af66e28db01
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/5/1/51ae7214218ea02fdb2b8dc077628825b954cda5:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/5/1/51ae7214218ea02fdb2b8dc077628825b954cda5
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/5/1/51c613a6f8be733e1c77aa30b39f64087a212608:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/5/1/51c613a6f8be733e1c77aa30b39f64087a212608
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/5/2/523711b86791f59e01b2ff501eb5f803bf8ed93b:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/5/2/523711b86791f59e01b2ff501eb5f803bf8ed93b
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/5/3/53f16b48225ab4c1dadf17a8e8733490bd1e2384:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/5/3/53f16b48225ab4c1dadf17a8e8733490bd1e2384
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/5/4/541ca15a912fcfb32c15218c78724d5d08360dde:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/5/4/541ca15a912fcfb32c15218c78724d5d08360dde
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/5/6/56668caf5ebd5b1efd0e0cfdd88e42ef2fe63044:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/5/6/56668caf5ebd5b1efd0e0cfdd88e42ef2fe63044
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/5/7/57bef6ded49fbcffcac41c7301c75b4c45dfea1c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/5/7/57bef6ded49fbcffcac41c7301c75b4c45dfea1c
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/5/b/5b036fafe0cfc8bf4a33e5ef49e6a19737d1e16e:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/5/b/5b036fafe0cfc8bf4a33e5ef49e6a19737d1e16e
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/5/c/5cd31ae5e8151a84eb9dbf9199fb3989d26d3d49:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/5/c/5cd31ae5e8151a84eb9dbf9199fb3989d26d3d49
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/6/2/6235b609be2a4276c67991542511f46c69fd4a98:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/6/2/6235b609be2a4276c67991542511f46c69fd4a98
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/6/2/623b5235d2ac5b4326a73852cc13e7f0a36dd9f5:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/6/2/623b5235d2ac5b4326a73852cc13e7f0a36dd9f5
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/6/3/63dc04ab9dabd9c951c3bed7d0f50526f3e5f4a8:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/6/3/63dc04ab9dabd9c951c3bed7d0f50526f3e5f4a8
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/6/6/66c7457b55ef4605bc19439dcc3a51394dfcc4dc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/6/6/66c7457b55ef4605bc19439dcc3a51394dfcc4dc
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/6/d/6def1081c3028609d10dd3ef02d749ab6590767e:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/6/d/6def1081c3028609d10dd3ef02d749ab6590767e
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/0/70c64663c41444ee3762f05b19252254da725a6a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/7/0/70c64663c41444ee3762f05b19252254da725a6a
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/0/70dabc06f664ea50791c7230faf11dd8692e30c4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/7/0/70dabc06f664ea50791c7230faf11dd8692e30c4
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/0/70dd682a4cbc31bd9731c8f8c7d0c3c4423c2ca9:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/7/0/70dd682a4cbc31bd9731c8f8c7d0c3c4423c2ca9
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/1/71431ed6986b6facdbfc01a60e32c75cd9a00c48:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/7/1/71431ed6986b6facdbfc01a60e32c75cd9a00c48
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/1/71d93d2372085408f0ef4b397b3d870edeb816ee:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/7/1/71d93d2372085408f0ef4b397b3d870edeb816ee
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/3/730f0f73243719c68ba52bd804817421c4d61b13:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/7/3/730f0f73243719c68ba52bd804817421c4d61b13
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/4/7471a3e2b398b66f8cd7b7c506ab212aaf91d07d:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/7/4/7471a3e2b398b66f8cd7b7c506ab212aaf91d07d
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/8/783e9ab7a78669241279445c215acb8ce2e5302b:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/7/8/783e9ab7a78669241279445c215acb8ce2e5302b
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/9/793187b4ac477754124a81a39a895b0e613fafe6:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/7/9/793187b4ac477754124a81a39a895b0e613fafe6
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/d/7d7a353bd4dce88ba37b2cdd48632df4bb324172:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/7/d/7d7a353bd4dce88ba37b2cdd48632df4bb324172
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/7/d/7dc83c9070df79ba98e230bf5d79cce33d417ee5:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/7/d/7dc83c9070df79ba98e230bf5d79cce33d417ee5
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/8/0/801cb9a0f5f3e60c5dda30123835e99eee1e8f7f:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/8/0/801cb9a0f5f3e60c5dda30123835e99eee1e8f7f
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/8/0/803deaf8f5613f23cf85b515b1d3215648a3734d:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/8/0/803deaf8f5613f23cf85b515b1d3215648a3734d
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/8/2/825f6893311e64bcfd3bdd438ef9f1fc3f0da4a6:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/8/2/825f6893311e64bcfd3bdd438ef9f1fc3f0da4a6
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/8/3/83bec9dcabb59fc866b0d9b94d086ced4a7ffc56:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/8/3/83bec9dcabb59fc866b0d9b94d086ced4a7ffc56
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/8/5/854d1321ab28ed3afcd5e3834b04472008790f96:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/8/5/854d1321ab28ed3afcd5e3834b04472008790f96
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/8/8/88a2e41f707010bfb52bcdfb999747c5cab5a251:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/8/8/88a2e41f707010bfb52bcdfb999747c5cab5a251
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/8/e/8e19e7385db5e6b26fe835f3c051239d52cc71ea:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/8/e/8e19e7385db5e6b26fe835f3c051239d52cc71ea
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/9/0/908a1c00641bd36fa202ae994f44c77c5650ae4b:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/9/0/908a1c00641bd36fa202ae994f44c77c5650ae4b
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/9/1/914e872837a41889df4456970c1c98a6de410ea2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/9/1/914e872837a41889df4456970c1c98a6de410ea2
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/9/2/92d7641f2b22ae0479f725d07fac46ffd4f7047b:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/9/2/92d7641f2b22ae0479f725d07fac46ffd4f7047b
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/9/7/972b172bda6c345ccaa8171c2abf9bcf38c20b9f:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/9/7/972b172bda6c345ccaa8171c2abf9bcf38c20b9f
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/9/7/97b65ddf00b808445c46a0e151ca1968fcedc0c5:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/9/7/97b65ddf00b808445c46a0e151ca1968fcedc0c5
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/9/9/9981130731102a855eba5875b99a72548d02148c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/9/9/9981130731102a855eba5875b99a72548d02148c
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/9/a/9a640725bc25295ae472f9fe58b8f06af636dea8:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/9/a/9a640725bc25295ae472f9fe58b8f06af636dea8
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/9/c/9c992d6d1b6538046050dc3c2a57acc3b4b1ca2f:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/9/c/9c992d6d1b6538046050dc3c2a57acc3b4b1ca2f
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/9/d/9d042ba7a26c74936e89eeb2636f1c3897a65c16:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/9/d/9d042ba7a26c74936e89eeb2636f1c3897a65c16
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/9/f/9fb9dc432fc858ee8072c8a650979e3c96a72bdd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/9/f/9fb9dc432fc858ee8072c8a650979e3c96a72bdd
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/a/1/a15a2866706eb6233370acc147f826fa2ad86432:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/a/1/a15a2866706eb6233370acc147f826fa2ad86432
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/a/2/a2f9618c8ad821b143a07a29a9805fcb0b2df470:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/a/2/a2f9618c8ad821b143a07a29a9805fcb0b2df470
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/a/2/a2fefc1a723c1cfad6db2441edb4cf7a84e567d3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/a/2/a2fefc1a723c1cfad6db2441edb4cf7a84e567d3
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/a/3/a350bb6be1933ddc4bf3dde5bdfaed2765a5913a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/a/3/a350bb6be1933ddc4bf3dde5bdfaed2765a5913a
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/a/8/a8c548ad366cc0524df26156a6ceb3bd5f743d2e:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/a/8/a8c548ad366cc0524df26156a6ceb3bd5f743d2e
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/a/9/a955b37f363cbdb0321dba91e97ea28e0e54bc34:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/a/9/a955b37f363cbdb0321dba91e97ea28e0e54bc34
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/a/c/ac0e933e1b7d6d7427dced7bb247806ccba6cd7a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/a/c/ac0e933e1b7d6d7427dced7bb247806ccba6cd7a
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/a/d/ad72d4ed1988be17db75a3b6a0c64d6521a68394:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/a/d/ad72d4ed1988be17db75a3b6a0c64d6521a68394
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/a/e/aeb8f4145f4855ffc044a4c64f5a670e9d94cc54:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/a/e/aeb8f4145f4855ffc044a4c64f5a670e9d94cc54
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/b/2/b25aeab680768d49d7cec07a2579b3c8a6ac4680:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/b/2/b25aeab680768d49d7cec07a2579b3c8a6ac4680
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/b/3/b35ba91ce3c62af117d70ff9ef3176233496e217:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/b/3/b35ba91ce3c62af117d70ff9ef3176233496e217
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/b/3/b39ae52d769ea03b699b5602439afd875433c8a7:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/b/3/b39ae52d769ea03b699b5602439afd875433c8a7
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/b/5/b573b26ca27f604cbc71d5897ce2de0803bac89b:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/b/5/b573b26ca27f604cbc71d5897ce2de0803bac89b
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/b/5/b59d2a264b747dda2c49446ba5be175cadc5f3df:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/b/5/b59d2a264b747dda2c49446ba5be175cadc5f3df
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/b/7/b7a72ca6036369611a0c938fac8e15111f9bce6a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/b/7/b7a72ca6036369611a0c938fac8e15111f9bce6a
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/b/8/b809ec1fc7910361aca4b2442d5b49c404b1e20c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/b/8/b809ec1fc7910361aca4b2442d5b49c404b1e20c
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/b/8/b8e1c4e88a5675b9d5632074a668974a3593bfe3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/b/8/b8e1c4e88a5675b9d5632074a668974a3593bfe3
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/b/d/bdd39e1c8f3f7d42420052a6170796e0e174dc01:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/b/d/bdd39e1c8f3f7d42420052a6170796e0e174dc01
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/b/e/be37edcbec11b3986ed93ef07f333161239de5d2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/b/e/be37edcbec11b3986ed93ef07f333161239de5d2
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/b/f/bfb48a57fb4f186be883e71a187f8e0845bde869:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/b/f/bfb48a57fb4f186be883e71a187f8e0845bde869
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/c/1/c1b5aad77ea545e8d97a30a85a19351bb1f8b2a6:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/c/1/c1b5aad77ea545e8d97a30a85a19351bb1f8b2a6
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/c/2/c29fbf01efad4d78c2cb54c03fb8a9782a8e16f4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/c/2/c29fbf01efad4d78c2cb54c03fb8a9782a8e16f4
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/c/7/c7f1d8d632bd34f59b464622c0f5a63c20f28234:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/c/7/c7f1d8d632bd34f59b464622c0f5a63c20f28234
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/c/c/cc58bef98b84f28de20a45d987b8aced4b7d281e:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/c/c/cc58bef98b84f28de20a45d987b8aced4b7d281e
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/c/e/ce19a4ca278d7813e1d486e497fc5464e012a0b5:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/c/e/ce19a4ca278d7813e1d486e497fc5464e012a0b5
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/c/e/ce20324483935b51f4fab200930986e52e4168ee:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/c/e/ce20324483935b51f4fab200930986e52e4168ee
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/d/0/d04e46bc3b44631be44e5a0e3fb9717d81ed52c5:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/d/0/d04e46bc3b44631be44e5a0e3fb9717d81ed52c5
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/d/1/d1acdeefc189118f89fb20a22dc258b45bc3f325:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/d/1/d1acdeefc189118f89fb20a22dc258b45bc3f325
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/d/2/d2d339ce3c9a6b938ab2d1c5ef585c63e09c2341:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/d/2/d2d339ce3c9a6b938ab2d1c5ef585c63e09c2341
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/d/2/d2f5d1978e5f519100a679c4109f89296278badc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/d/2/d2f5d1978e5f519100a679c4109f89296278badc
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/d/5/d5dd59f52ab871ef287a07d75facb1bcd8d4c6e4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/d/5/d5dd59f52ab871ef287a07d75facb1bcd8d4c6e4
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/d/6/d6a798299aab7976db34ef8bfe8e270c2fe7b76f:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/d/6/d6a798299aab7976db34ef8bfe8e270c2fe7b76f
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/d/6/d6c5c59d119b0868d1b745239b461298963597e0:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/d/6/d6c5c59d119b0868d1b745239b461298963597e0
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/d/7/d718b3d11851a4b324785f3c95555aba57efef2d:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/d/7/d718b3d11851a4b324785f3c95555aba57efef2d
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/d/7/d7629772b71460297b3bb140e5f8a0d942614438:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/d/7/d7629772b71460297b3bb140e5f8a0d942614438
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/d/9/d971d56749ae611426a6223c893c03efdd7a8306:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/d/9/d971d56749ae611426a6223c893c03efdd7a8306
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/d/9/d9b9b3f4c465e80d4b60f47062d841bd1102531a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/d/9/d9b9b3f4c465e80d4b60f47062d841bd1102531a
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/d/a/da7fe9c464be0592d5a0c6815ee7af360b2d5a67:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/d/a/da7fe9c464be0592d5a0c6815ee7af360b2d5a67
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/d/b/db2b137d42a2f03280a09c081b8a7cca6de28247:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/d/b/db2b137d42a2f03280a09c081b8a7cca6de28247
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/d/b/db8ff070dc3f7ef2deb8762876ba82be32875ae1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/d/b/db8ff070dc3f7ef2deb8762876ba82be32875ae1
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/d/c/dc1e76e99e853edf55d1b6cc01b84badb837c53f:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/d/c/dc1e76e99e853edf55d1b6cc01b84badb837c53f
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/d/d/dd7111a9a674f67e5c895edc4c654062ccdb762b:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/d/d/dd7111a9a674f67e5c895edc4c654062ccdb762b
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/d/d/dd94f323a5e69298069986d11acb54801b1505f5:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/d/d/dd94f323a5e69298069986d11acb54801b1505f5
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/e/4/e401a69837b50f9fd128becfd856949c72e99026:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/e/4/e401a69837b50f9fd128becfd856949c72e99026
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/e/4/e4327cf69105283d290efb66a6d67f3cf6fa81d3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/e/4/e4327cf69105283d290efb66a6d67f3cf6fa81d3
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/e/5/e56744ce03f255fd60d7b326841d99877c9e50c3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/e/5/e56744ce03f255fd60d7b326841d99877c9e50c3
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/e/6/e647c0c176ea397b27c35ef4aa51222822cdc8a7:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/e/6/e647c0c176ea397b27c35ef4aa51222822cdc8a7
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/e/8/e8eb45b2a1d114e814f6f781bb65eac1bf34b42e:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/e/8/e8eb45b2a1d114e814f6f781bb65eac1bf34b42e
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/e/a/ea314a3da536bad110b496df44c2f642616c921a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/e/a/ea314a3da536bad110b496df44c2f642616c921a
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/e/c/ecb1536703f6b6f1686f48a038d9e48b4456e737:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/e/c/ecb1536703f6b6f1686f48a038d9e48b4456e737
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/e/d/ed5a4f002f78c41a716b590880e28883c819b500:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/e/d/ed5a4f002f78c41a716b590880e28883c819b500
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/f/0/f0b6a7b72c1930e87a9a48d4106cdba21b522cb3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/f/0/f0b6a7b72c1930e87a9a48d4106cdba21b522cb3
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/f/2/f21e2f53397cafa6901071b9899b4d6568256641:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/f/2/f21e2f53397cafa6901071b9899b4d6568256641
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/f/2/f225267ef2665e58388fec8b693eeb3c2dcf71fe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/f/2/f225267ef2665e58388fec8b693eeb3c2dcf71fe
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/f/3/f37ef4456bb13d2afa276eabb32324fb268cf68d:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/f/3/f37ef4456bb13d2afa276eabb32324fb268cf68d
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/f/5/f5454a5f17cb76cdd7c0fa373ed254aac1823967:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/f/5/f5454a5f17cb76cdd7c0fa373ed254aac1823967
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/f/8/f806b67df440474befc98247bfd2d1c92a6a4108:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/f/8/f806b67df440474befc98247bfd2d1c92a6a4108
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/f/9/f923bbef801417ac5ed1f2772059f698aef810d8:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/f/9/f923bbef801417ac5ed1f2772059f698aef810d8
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/f/a/fa86f0f8c1ca95c8ef9de7aabedcdd2eaecdb969:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/f/a/fa86f0f8c1ca95c8ef9de7aabedcdd2eaecdb969
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/f/b/fb3961f8497ade7693ae5121edf26b831d9f2a9b:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/f/b/fb3961f8497ade7693ae5121edf26b831d9f2a9b
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/f/d/fd6739fca9c030fdb87ccf48816d937fad3ed02a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/f/d/fd6739fca9c030fdb87ccf48816d937fad3ed02a
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/f/d/fde8a99f794b7a58469e5a6d4135a10f0bd2058d:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/f/d/fde8a99f794b7a58469e5a6d4135a10f0bd2058d
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/f/e/fe2f113b06d4b5744427c0c5f30f6c1733ec4fe8:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/f/e/fe2f113b06d4b5744427c0c5f30f6c1733ec4fe8
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/f/e/fe986d83eb0be014b5535dd0a4bce1c86822b5f4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/f/e/fe986d83eb0be014b5535dd0a4bce1c86822b5f4
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/f/e/fed19c8a7a5d6fc65387797243443d6c7bf90b36:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/f/e/fed19c8a7a5d6fc65387797243443d6c7bf90b36
--------------------------------------------------------------------------------
/.idea/sonarlint/issuestore/index.pb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/.idea/sonarlint/issuestore/index.pb
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # springcloud-learning
2 | 学习Spring Cloud框架的总结,使用的是最新的Hoxton版本。主要包括Eureka、Ribbon、Hystrix、Feign、Zuul、Gateway、Security、Bus、OpenFeign等核心组件用法进行详细介绍。
3 |
--------------------------------------------------------------------------------
/admin-client/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/admin-client/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/admin-client/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/admin-client/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/admin-client/src/main/java/com/jourwon/springcloud/AdminClientApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | /**
8 | * Description:
9 | *
10 | * @author JourWon
11 | * @date 2019/12/23 11:46
12 | */
13 | @EnableDiscoveryClient
14 | @SpringBootApplication
15 | public class AdminClientApplication {
16 |
17 | public static void main(String[] args) {
18 | SpringApplication.run(AdminClientApplication.class, args);
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/admin-client/src/main/java/com/jourwon/springcloud/pojo/User.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.pojo;
2 |
3 | /**
4 | * Description:用户
5 | *
6 | * @author JourWon
7 | * @date 2019/12/18 14:00
8 | */
9 | public class User {
10 |
11 | private Long id;
12 | private String username;
13 | private String password;
14 |
15 | public User() {
16 | }
17 |
18 | public User(Long id, String username, String password) {
19 | this.id = id;
20 | this.username = username;
21 | this.password = password;
22 | }
23 |
24 | public Long getId() {
25 | return id;
26 | }
27 |
28 | public void setId(Long id) {
29 | this.id = id;
30 | }
31 |
32 | public String getUsername() {
33 | return username;
34 | }
35 |
36 | public void setUsername(String username) {
37 | this.username = username;
38 | }
39 |
40 | public String getPassword() {
41 | return password;
42 | }
43 |
44 | public void setPassword(String password) {
45 | this.password = password;
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/admin-client/src/main/java/com/jourwon/springcloud/service/UserService.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.service;
2 |
3 | import com.jourwon.springcloud.pojo.User;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * Description:
9 | *
10 | * @author JourWon
11 | * @date 2019/12/18 14:06
12 | */
13 | public interface UserService {
14 |
15 | void insert(User user);
16 |
17 | User getUser(Long id);
18 |
19 | void update(User user);
20 |
21 | void delete(Long id);
22 |
23 | User getByUsername(String username);
24 |
25 | List listUsersByIds(List ids);
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/admin-client/src/main/resources/application-eureka.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 9305
3 |
4 | spring:
5 | application:
6 | name: admin-client
7 | boot:
8 | admin:
9 | client:
10 | # 配置admin-server地址
11 | url: http://localhost:9301
12 |
13 | management:
14 | endpoints:
15 | web:
16 | exposure:
17 | include: '*'
18 | endpoint:
19 | health:
20 | show-details: always
21 |
22 | eureka:
23 | client:
24 | service-url:
25 | defaultZone: http://localhost:8001/eureka/
26 |
27 | # 添加开启admin的日志监控
28 | logging:
29 | file: admin-client.log
--------------------------------------------------------------------------------
/admin-client/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 9305
3 |
4 | spring:
5 | application:
6 | name: admin-client
7 | boot:
8 | admin:
9 | client:
10 | # 配置admin-server地址
11 | url: http://localhost:9301
12 |
13 | management:
14 | endpoints:
15 | web:
16 | exposure:
17 | include: '*'
18 | endpoint:
19 | health:
20 | show-details: always
21 |
22 | # 添加开启admin的日志监控
23 | logging:
24 | file: admin-client.log
--------------------------------------------------------------------------------
/admin-client/src/test/java/com/jourwon/springcloud/AdminClientApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class AdminClientApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/admin-security-server/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/admin-security-server/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/admin-security-server/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/admin-security-server/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/admin-security-server/src/main/java/com/jourwon/springcloud/AdminSecurityServerApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import de.codecentric.boot.admin.server.config.EnableAdminServer;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
7 |
8 | /**
9 | * Description:
10 | *
11 | * @author JourWon
12 | * @date 2019/12/23 14:00
13 | */
14 | @EnableAdminServer
15 | @EnableDiscoveryClient
16 | @SpringBootApplication
17 | public class AdminSecurityServerApplication {
18 |
19 | public static void main(String[] args) {
20 | SpringApplication.run(AdminSecurityServerApplication.class, args);
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/admin-security-server/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 9301
3 |
4 | eureka:
5 | client:
6 | service-url:
7 | defaultZone: http://localhost:8001/eureka/
8 |
9 | spring:
10 | application:
11 | name: admin-security-server
12 | security:
13 | user:
14 | # 配置登录用户名和密码
15 | name: root
16 | password: 123456
17 | boot:
18 | admin:
19 | discovery:
20 | # 不显示admin-security-server的监控信息
21 | ignored-services: ${spring.application.name}
--------------------------------------------------------------------------------
/admin-security-server/src/test/java/com/jourwon/springcloud/AdminSecurityServerApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class AdminSecurityServerApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/admin-server/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/admin-server/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/admin-server/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/admin-server/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/admin-server/src/main/java/com/jourwon/springcloud/AdminServerApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import de.codecentric.boot.admin.server.config.EnableAdminServer;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
7 |
8 | /**
9 | * Description:
10 | *
11 | * @author JourWon
12 | * @date 2019/12/23 10:52
13 | */
14 | @EnableDiscoveryClient
15 | @EnableAdminServer
16 | @SpringBootApplication
17 | public class AdminServerApplication {
18 |
19 | public static void main(String[] args) {
20 | SpringApplication.run(AdminServerApplication.class, args);
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/admin-server/src/main/resources/application-eureka.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 9301
3 |
4 | spring:
5 | application:
6 | name: admin-server
7 |
8 | eureka:
9 | client:
10 | service-url:
11 | defaultZone: http://localhost:8001/eureka/
--------------------------------------------------------------------------------
/admin-server/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 9301
3 |
4 | spring:
5 | application:
6 | name: admin-server
--------------------------------------------------------------------------------
/admin-server/src/test/java/com/jourwon/springcloud/AdminServerApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class AdminServerApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/api-gateway/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/api-gateway/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/api-gateway/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/api-gateway/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/api-gateway/src/main/java/com/jourwon/springcloud/ApiGatewayApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | /**
8 | * Description:
9 | *
10 | * @author JourWon
11 | * @date 2019/12/22 18:36
12 | */
13 | @EnableDiscoveryClient
14 | @SpringBootApplication
15 | public class ApiGatewayApplication {
16 |
17 | public static void main(String[] args) {
18 | SpringApplication.run(ApiGatewayApplication.class, args);
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/api-gateway/src/main/java/com/jourwon/springcloud/config/GatewayConfig.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.config;
2 |
3 | import org.springframework.context.annotation.Configuration;
4 |
5 | /**
6 | * Description:
7 | *
8 | * @author JourWon
9 | * @date 2019/12/22 19:01
10 | */
11 | @Configuration
12 | public class GatewayConfig {
13 |
14 | /*@Bean
15 | public RouteLocator customerRouteLocator(RouteLocatorBuilder builder) {
16 | return builder.routes()
17 | .route("path_route2", r -> r.path("/user/getByUsername")
18 | .uri("http://localhost:8201/user/getByUsername"))
19 | .build();
20 | }*/
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/api-gateway/src/main/java/com/jourwon/springcloud/config/RedisRateLimiterConfig.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.config;
2 |
3 | import org.springframework.cloud.gateway.filter.ratelimit.KeyResolver;
4 | import org.springframework.context.annotation.Bean;
5 | import org.springframework.context.annotation.Configuration;
6 | import reactor.core.publisher.Mono;
7 |
8 | /**
9 | * Description:
10 | *
11 | * @author JourWon
12 | * @date 2019/12/23 9:10
13 | */
14 | @Configuration
15 | public class RedisRateLimiterConfig {
16 |
17 | @Bean
18 | public KeyResolver userKeyResolver() {
19 | return exchange -> Mono.just(exchange.getRequest().getQueryParams().getFirst("username"));
20 | }
21 |
22 |
23 | @Bean
24 | public KeyResolver ipKeyResolver() {
25 | return exchange -> Mono.just(exchange.getRequest().getRemoteAddress().getHostName());
26 | }
27 |
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/api-gateway/src/main/java/com/jourwon/springcloud/controller/FallbackController.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.controller;
2 |
3 | import org.springframework.web.bind.annotation.GetMapping;
4 | import org.springframework.web.bind.annotation.RestController;
5 |
6 | import java.util.HashMap;
7 | import java.util.Map;
8 |
9 | /**
10 | * Description:
11 | *
12 | * @author JourWon
13 | * @date 2019/12/23 8:56
14 | */
15 | @RestController
16 | public class FallbackController {
17 |
18 | @GetMapping("/fallback")
19 | public Object fallback() {
20 | Map result = new HashMap<>();
21 | result.put("data",null);
22 | result.put("message","Get request fallback!");
23 | result.put("code",500);
24 | return result;
25 | }
26 |
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/api-gateway/src/main/resources/application-eureka.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 9201
3 | spring:
4 | application:
5 | name: api-gateway
6 | cloud:
7 | gateway:
8 | routes:
9 | - id: prefixpath_route
10 | uri: lb://user-service #此处需要使用lb协议
11 | predicates:
12 | - Method=GET
13 | filters:
14 | - PrefixPath=/user
15 | discovery:
16 | locator:
17 | enabled: true
18 | eureka:
19 | client:
20 | service-url:
21 | defaultZone: http://localhost:8001/eureka/
22 | logging:
23 | level:
24 | org.springframework.cloud.gateway: debug
--------------------------------------------------------------------------------
/api-gateway/src/main/resources/application-predicate.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 9201
3 | service-url:
4 | user-service: http://localhost:8201
5 |
6 | spring:
7 | cloud:
8 | gateway:
9 | routes:
10 | - id: after_route
11 | uri: ${service-url.user-service}
12 | predicates:
13 | - After=2019-12-22T19:30:00+08:00[Asia/Shanghai]
--------------------------------------------------------------------------------
/api-gateway/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 9201
3 |
4 | service-url:
5 | user-service: http://localhost:8201
6 |
7 |
8 | spring:
9 | cloud:
10 | gateway:
11 | routes:
12 | # 路由的ID
13 | - id: path_route
14 | # 匹配后路由地址
15 | uri: ${service-url.user-service}/user/{id}
16 | predicates:
17 | # 断言,路径相匹配的进行路由
18 | - Path=/user/{id}
19 |
20 |
--------------------------------------------------------------------------------
/api-gateway/src/test/java/com/jourwon/springcloud/ApiGatewayApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class ApiGatewayApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/config-client/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/config-client/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/config-client/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/config-client/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/config-client/src/main/java/com/jourwon/springcloud/ConfigClientApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | /**
8 | * Description:
9 | *
10 | * @author JourWon
11 | * @date 2019/12/21 11:59
12 | */
13 | @EnableDiscoveryClient
14 | @SpringBootApplication
15 | public class ConfigClientApplication {
16 |
17 | public static void main(String[] args) {
18 | SpringApplication.run(ConfigClientApplication.class, args);
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/config-client/src/main/java/com/jourwon/springcloud/controller/ConfigClientController.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.controller;
2 |
3 | import org.springframework.beans.factory.annotation.Value;
4 | import org.springframework.cloud.context.config.annotation.RefreshScope;
5 | import org.springframework.web.bind.annotation.GetMapping;
6 | import org.springframework.web.bind.annotation.RestController;
7 |
8 | /**
9 | * Description:在ConfigClientController类添加@RefreshScope注解用于刷新配置
10 | *
11 | * @author JourWon
12 | * @date 2019/12/21 11:59
13 | */
14 | @RefreshScope
15 | @RestController
16 | public class ConfigClientController {
17 |
18 | @Value("${config.info}")
19 | private String configInfo;
20 |
21 | @GetMapping("/configInfo")
22 | public String getConfigInfo() {
23 | return configInfo;
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/config-client/src/main/resources/bootstrap-amqp1.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 9004
3 |
4 | spring:
5 | application:
6 | name: config-client
7 | cloud:
8 | # config客户端配置
9 | config:
10 | # 分支名称
11 | label: master
12 | # 启用配置后缀名称
13 | profile: dev
14 | # 配置文件名称
15 | name: config
16 | discovery:
17 | enabled: true
18 | service-id: config-server
19 | # rabbitmq配置
20 | rabbitmq:
21 | host: localhost
22 | port: 5672
23 | username: guest
24 | password: guest
25 |
26 | eureka:
27 | client:
28 | register-with-eureka: true
29 | fetch-registry: true
30 | service-url:
31 | defaultZone: http://localhost:8001/eureka/
32 |
33 | management:
34 | endpoints:
35 | web:
36 | exposure:
37 | include: 'refresh'
--------------------------------------------------------------------------------
/config-client/src/main/resources/bootstrap-amqp2.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 9005
3 |
4 | spring:
5 | application:
6 | name: config-client
7 | cloud:
8 | # config客户端配置
9 | config:
10 | # 分支名称
11 | label: master
12 | # 启用配置后缀名称
13 | profile: dev
14 | # 配置文件名称
15 | name: config
16 | discovery:
17 | enabled: true
18 | service-id: config-server
19 | # rabbitmq配置
20 | rabbitmq:
21 | host: localhost
22 | port: 5672
23 | username: guest
24 | password: guest
25 |
26 | eureka:
27 | client:
28 | register-with-eureka: true
29 | fetch-registry: true
30 | service-url:
31 | defaultZone: http://localhost:8001/eureka/
32 |
33 | management:
34 | endpoints:
35 | web:
36 | exposure:
37 | include: 'refresh'
--------------------------------------------------------------------------------
/config-client/src/main/resources/bootstrap-cluster.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 9003
3 |
4 | spring:
5 | application:
6 | name: config-client
7 | cloud:
8 | # config客户端配置
9 | config:
10 | # 分支名称
11 | label: master
12 | # 启用配置后缀名称
13 | profile: dev
14 | # 配置文件名称
15 | name: config
16 | # config-sever集群搭建
17 | discovery:
18 | enabled: true
19 | service-id: config-server
20 |
21 | eureka:
22 | client:
23 | register-with-eureka: true
24 | fetch-registry: true
25 | service-url:
26 | defaultZone: http://localhost:8001/eureka/
27 |
28 | management:
29 | endpoints:
30 | web:
31 | exposure:
32 | include: 'refresh'
--------------------------------------------------------------------------------
/config-client/src/main/resources/bootstrap-security.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 9002
3 |
4 | spring:
5 | application:
6 | name: config-client
7 | cloud:
8 | # config客户端配置
9 | config:
10 | # 分支名称
11 | label: master
12 | # 启用配置后缀名称
13 | profile: dev
14 | # 配置文件名称
15 | name: config
16 | # 配置中心地址
17 | uri: http://localhost:8905
18 | username: root
19 | password: 123456
20 |
21 | eureka:
22 | client:
23 | register-with-eureka: true
24 | fetch-registry: true
25 | service-url:
26 | defaultZone: http://localhost:8001/eureka/
27 |
28 | management:
29 | endpoints:
30 | web:
31 | exposure:
32 | include: 'refresh'
--------------------------------------------------------------------------------
/config-client/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 9001
3 |
4 | spring:
5 | application:
6 | name: config-client
7 | cloud:
8 | # config客户端配置
9 | config:
10 | # 分支名称
11 | label: master
12 | # 启用配置后缀名称
13 | profile: dev
14 | # 配置文件名称
15 | name: config
16 | # 配置中心地址
17 | uri: http://localhost:8901
18 |
19 | eureka:
20 | client:
21 | register-with-eureka: true
22 | fetch-registry: true
23 | service-url:
24 | defaultZone: http://localhost:8001/eureka/
25 |
26 | management:
27 | endpoints:
28 | web:
29 | exposure:
30 | include: 'refresh'
--------------------------------------------------------------------------------
/config-client/src/test/java/com/jourwon/springcloud/ConfigClientApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class ConfigClientApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/config-security-server/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/config-security-server/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/config-security-server/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/config-security-server/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/config-security-server/src/main/java/com/jourwon/springcloud/ConfigSecurityServerApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.config.server.EnableConfigServer;
7 |
8 | /**
9 | * Description:
10 | *
11 | * @author JourWon
12 | * @date 2019/12/21 15:00
13 | */
14 | @EnableConfigServer
15 | @EnableDiscoveryClient
16 | @SpringBootApplication
17 | public class ConfigSecurityServerApplication {
18 |
19 | public static void main(String[] args) {
20 | SpringApplication.run(ConfigSecurityServerApplication.class, args);
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/config-security-server/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8905
3 |
4 | spring:
5 | application:
6 | name: config-security-server
7 | cloud:
8 | config:
9 | server:
10 | git:
11 | uri: https://gitee.com/JourWon/springcloud-config.git
12 | username: JourWon
13 | password: 123456
14 | clone-on-start: true
15 | security:
16 | user:
17 | # 配置用户名和密码
18 | name: root
19 | password: 123456
20 |
21 | eureka:
22 | client:
23 | register-with-eureka: true
24 | fetch-registry: true
25 | service-url:
26 | defaultZone: http://localhost:8001/eureka/
--------------------------------------------------------------------------------
/config-security-server/src/test/java/com/jourwon/springcloud/ConfigSecurityServerApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class ConfigSecurityServerApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/config-server/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/config-server/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/config-server/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/config-server/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/config-server/src/main/java/com/jourwon/springcloud/ConfigServerApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.config.server.EnableConfigServer;
7 |
8 | /**
9 | * Description:
10 | *
11 | * @author JourWon
12 | * @date 2019/12/21 11:55
13 | */
14 | @EnableConfigServer
15 | @EnableDiscoveryClient
16 | @SpringBootApplication
17 | public class ConfigServerApplication {
18 |
19 | public static void main(String[] args) {
20 | SpringApplication.run(ConfigServerApplication.class, args);
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/config-server/src/main/resources/application-amqp.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8904
3 |
4 | spring:
5 | application:
6 | name: config-server
7 | cloud:
8 | config:
9 | server:
10 | git:
11 | # 配置存储配置信息的Git仓库
12 | uri: https://gitee.com/JourWon/springcloud-config.git
13 | username: JourWon
14 | password: 123456
15 | # 开启启动时直接从git获取配置
16 | clone-on-start: true
17 | # 获取子目录下的配置
18 | # search-paths: '{application}'
19 | # rabbitmq相干配置
20 | rabbitmq:
21 | host: localhost
22 | port: 5672
23 | username: guest
24 | password: guest
25 |
26 | eureka:
27 | client:
28 | register-with-eureka: true
29 | fetch-registry: true
30 | service-url:
31 | defaultZone: http://localhost:8001/eureka/
32 |
33 | # 暴露bus刷新配置的端点
34 | management:
35 | endpoints:
36 | web:
37 | exposure:
38 | include: 'bus-refresh'
39 |
--------------------------------------------------------------------------------
/config-server/src/main/resources/application-replica1.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8902
3 |
4 | spring:
5 | application:
6 | name: config-server
7 | cloud:
8 | config:
9 | server:
10 | git:
11 | # 配置存储配置信息的Git仓库
12 | uri: https://gitee.com/JourWon/springcloud-config.git
13 | username: JourWon
14 | password: 123456
15 | # 开启启动时直接从git获取配置
16 | clone-on-start: true
17 | # 获取子目录下的配置
18 | # search-paths: '{application}'
19 |
20 | eureka:
21 | client:
22 | register-with-eureka: true
23 | fetch-registry: true
24 | service-url:
25 | defaultZone: http://localhost:8001/eureka/
26 |
--------------------------------------------------------------------------------
/config-server/src/main/resources/application-replica2.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8903
3 |
4 | spring:
5 | application:
6 | name: config-server
7 | cloud:
8 | config:
9 | server:
10 | git:
11 | # 配置存储配置信息的Git仓库
12 | uri: https://gitee.com/JourWon/springcloud-config.git
13 | username: JourWon
14 | password: 123456
15 | # 开启启动时直接从git获取配置
16 | clone-on-start: true
17 | # 获取子目录下的配置
18 | # search-paths: '{application}'
19 |
20 | eureka:
21 | client:
22 | register-with-eureka: true
23 | fetch-registry: true
24 | service-url:
25 | defaultZone: http://localhost:8001/eureka/
26 |
--------------------------------------------------------------------------------
/config-server/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8901
3 |
4 | spring:
5 | application:
6 | name: config-server
7 | cloud:
8 | config:
9 | server:
10 | git:
11 | # 配置存储配置信息的Git仓库
12 | uri: https://gitee.com/JourWon/springcloud-config.git
13 | username: JourWon
14 | password: 123456
15 | # 开启启动时直接从git获取配置
16 | clone-on-start: true
17 | # 获取子目录下的配置
18 | # search-paths: '{application}'
19 |
20 | eureka:
21 | client:
22 | register-with-eureka: true
23 | fetch-registry: true
24 | service-url:
25 | defaultZone: http://localhost:8001/eureka/
26 |
--------------------------------------------------------------------------------
/config-server/src/test/java/com/jourwon/springcloud/ConfigServerApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class ConfigServerApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/consul-config-client/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/consul-config-client/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/consul-config-client/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/consul-config-client/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/consul-config-client/src/main/java/com/jourwon/springcloud/ConsulConfigClientApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | /**
8 | * Description:
9 | *
10 | * @author JourWon
11 | * @date 2019/12/22 18:27
12 | */
13 | @EnableDiscoveryClient
14 | @SpringBootApplication
15 | public class ConsulConfigClientApplication {
16 |
17 | public static void main(String[] args) {
18 | SpringApplication.run(ConsulConfigClientApplication.class, args);
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/consul-config-client/src/main/java/com/jourwon/springcloud/controller/ConfigClientController.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.controller;
2 |
3 | import org.springframework.beans.factory.annotation.Value;
4 | import org.springframework.cloud.context.config.annotation.RefreshScope;
5 | import org.springframework.web.bind.annotation.GetMapping;
6 | import org.springframework.web.bind.annotation.RestController;
7 |
8 | /**
9 | * Description:
10 | *
11 | * @author JourWon
12 | * @date 2019/12/22 18:00
13 | */
14 | @RefreshScope
15 | @RestController
16 | public class ConfigClientController {
17 |
18 | @Value("${config.info}")
19 | private String configInfo;
20 |
21 | @GetMapping("/configInfo")
22 | public String getConfigInfo() {
23 | return configInfo;
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/consul-config-client/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | profiles:
3 | active: dev
--------------------------------------------------------------------------------
/consul-config-client/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 9101
3 |
4 | spring:
5 | application:
6 | name: consul-config-client
7 | cloud:
8 | consul:
9 | host: localhost
10 | port: 8500
11 | discovery:
12 | service-name: consul-config-client
13 | config:
14 | # 是否启用配置中心功能
15 | enabled: true
16 | # 设置配置值的格式
17 | format: yaml
18 | # 设置配置所在目录
19 | prefix: config
20 | # 设置配置的分隔符
21 | profile-separator: ':'
22 | # 配置key的名字,由于Consul是K/V存储,配置存储在对应K的V中
23 | data-key: data
--------------------------------------------------------------------------------
/consul-config-client/src/test/java/com/jourwon/springcloud/ConsulConfigClientApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class ConsulConfigClientApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/consul-ribbon-service/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/consul-ribbon-service/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/consul-ribbon-service/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/consul-ribbon-service/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/consul-ribbon-service/src/main/java/com/jourwon/springcloud/ConsulRibbonServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | /**
8 | * Description:
9 | *
10 | * @author JourWon
11 | * @date 2019/12/21 18:18
12 | */
13 | @EnableDiscoveryClient
14 | @SpringBootApplication
15 | public class ConsulRibbonServiceApplication {
16 |
17 | public static void main(String[] args) {
18 | SpringApplication.run(ConsulRibbonServiceApplication.class, args);
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/consul-ribbon-service/src/main/java/com/jourwon/springcloud/config/RibbonConfig.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.config;
2 |
3 | import org.springframework.cloud.client.loadbalancer.LoadBalanced;
4 | import org.springframework.context.annotation.Bean;
5 | import org.springframework.context.annotation.Configuration;
6 | import org.springframework.web.client.RestTemplate;
7 |
8 | /**
9 | * Description:使用@LoadBalanced注解赋予RestTemplate负载均衡的能力
10 | *
11 | * @author JourWon
12 | * @date 2019/12/18 14:37
13 | */
14 | @Configuration
15 | public class RibbonConfig {
16 |
17 | @Bean
18 | @LoadBalanced
19 | public RestTemplate restTemplate() {
20 | return new RestTemplate();
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/consul-ribbon-service/src/main/java/com/jourwon/springcloud/pojo/User.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.pojo;
2 |
3 | /**
4 | * Description:用户
5 | *
6 | * @author JourWon
7 | * @date 2019/12/18 14:00
8 | */
9 | public class User {
10 |
11 | private Long id;
12 | private String username;
13 | private String password;
14 |
15 | public User() {
16 | }
17 |
18 | public User(Long id, String username, String password) {
19 | this.id = id;
20 | this.username = username;
21 | this.password = password;
22 | }
23 |
24 | public Long getId() {
25 | return id;
26 | }
27 |
28 | public void setId(Long id) {
29 | this.id = id;
30 | }
31 |
32 | public String getUsername() {
33 | return username;
34 | }
35 |
36 | public void setUsername(String username) {
37 | this.username = username;
38 | }
39 |
40 | public String getPassword() {
41 | return password;
42 | }
43 |
44 | public void setPassword(String password) {
45 | this.password = password;
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/consul-ribbon-service/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8308
3 | spring:
4 | application:
5 | name: consul-ribbon-service
6 | cloud:
7 | consul:
8 | host: localhost
9 | port: 8500
10 | discovery:
11 | service-name: ${spring.application.name}
12 |
13 | service-url:
14 | consul-user-service: http://consul-user-service
--------------------------------------------------------------------------------
/consul-ribbon-service/src/test/java/com/jourwon/springcloud/ConsulRibbonServiceApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class ConsulRibbonServiceApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/consul-user-service/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/consul-user-service/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/consul-user-service/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/consul-user-service/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/consul-user-service/src/main/java/com/jourwon/springcloud/ConsulUserServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | /**
8 | * Description:
9 | *
10 | * @author JourWon
11 | * @date 2019/12/21 18:18
12 | */
13 | @EnableDiscoveryClient
14 | @SpringBootApplication
15 | public class ConsulUserServiceApplication {
16 |
17 | public static void main(String[] args) {
18 | SpringApplication.run(ConsulUserServiceApplication.class, args);
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/consul-user-service/src/main/java/com/jourwon/springcloud/pojo/User.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.pojo;
2 |
3 | /**
4 | * Description:用户
5 | *
6 | * @author JourWon
7 | * @date 2019/12/18 14:00
8 | */
9 | public class User {
10 |
11 | private Long id;
12 | private String username;
13 | private String password;
14 |
15 | public User() {
16 | }
17 |
18 | public User(Long id, String username, String password) {
19 | this.id = id;
20 | this.username = username;
21 | this.password = password;
22 | }
23 |
24 | public Long getId() {
25 | return id;
26 | }
27 |
28 | public void setId(Long id) {
29 | this.id = id;
30 | }
31 |
32 | public String getUsername() {
33 | return username;
34 | }
35 |
36 | public void setUsername(String username) {
37 | this.username = username;
38 | }
39 |
40 | public String getPassword() {
41 | return password;
42 | }
43 |
44 | public void setPassword(String password) {
45 | this.password = password;
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/consul-user-service/src/main/java/com/jourwon/springcloud/service/UserService.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.service;
2 |
3 | import com.jourwon.springcloud.pojo.User;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * Description:
9 | *
10 | * @author JourWon
11 | * @date 2019/12/18 14:06
12 | */
13 | public interface UserService {
14 |
15 | void insert(User user);
16 |
17 | User getUser(Long id);
18 |
19 | void update(User user);
20 |
21 | void delete(Long id);
22 |
23 | User getByUsername(String username);
24 |
25 | List listUsersByIds(List ids);
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/consul-user-service/src/main/resources/application-replica1.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8207
3 |
4 | spring:
5 | application:
6 | name: consul-user-service
7 | cloud:
8 | consul:
9 | # 将服务注册到consul
10 | host: localhost
11 | port: 8500
12 | discovery:
13 | service-name: ${spring.application.name}
--------------------------------------------------------------------------------
/consul-user-service/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8206
3 |
4 | spring:
5 | application:
6 | name: consul-user-service
7 | cloud:
8 | consul:
9 | # 将服务注册到consul
10 | host: localhost
11 | port: 8500
12 | discovery:
13 | service-name: ${spring.application.name}
--------------------------------------------------------------------------------
/consul-user-service/src/test/java/com/jourwon/springcloud/ConsulUserServiceApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class ConsulUserServiceApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/eureka-client/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/eureka-client/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/eureka-client/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/eureka-client/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/eureka-client/src/main/java/com/jourwon/springcloud/EurekaClientApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | /**
8 | * Description: Eureka客户端
9 | *
10 | * @author JourWon
11 | * @date 2019/12/17 14:07
12 | */
13 | @EnableDiscoveryClient
14 | @SpringBootApplication
15 | public class EurekaClientApplication {
16 |
17 | public static void main(String[] args) {
18 | SpringApplication.run(EurekaClientApplication.class, args);
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/eureka-client/src/main/resources/application-replica.yml:
--------------------------------------------------------------------------------
1 | # 指定运行端口
2 | server:
3 | port: 8102
4 |
5 | # 指定服务名称
6 | spring:
7 | application:
8 | name: eureka-client
9 |
10 | eureka:
11 | client:
12 | # 注册到Eureka的注册中心
13 | register-with-eureka: true
14 | # 获取注册实例列表
15 | fetch-registry: true
16 | service-url:
17 | # 同时注册到两个注册中心
18 | defaultZone: http://replica1:8002/eureka/,http://replica2:8003/eureka/
--------------------------------------------------------------------------------
/eureka-client/src/main/resources/application-security.yml:
--------------------------------------------------------------------------------
1 | # 指定运行端口
2 | server:
3 | port: 8103
4 |
5 | # 指定服务名称
6 | spring:
7 | application:
8 | name: eureka-client
9 |
10 | eureka:
11 | client:
12 | # 注册到Eureka的注册中心
13 | register-with-eureka: true
14 | # 获取注册实例列表
15 | fetch-registry: true
16 | service-url:
17 | # 配置注册中心地址
18 | defaultZone: http://root:root@localhost:8004/eureka/
--------------------------------------------------------------------------------
/eureka-client/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | # 指定运行端口
2 | server:
3 | port: 8101
4 |
5 | # 指定服务名称
6 | spring:
7 | application:
8 | name: eureka-client
9 |
10 | eureka:
11 | client:
12 | # 注册到Eureka的注册中心
13 | register-with-eureka: true
14 | # 获取注册实例列表
15 | fetch-registry: true
16 | service-url:
17 | # 配置注册中心地址
18 | defaultZone: http://localhost:8001/eureka
--------------------------------------------------------------------------------
/eureka-client/src/test/java/com/jourwon/springcloud/EurekaClientApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class EurekaClientApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/eureka-security-server/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/eureka-security-server/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/eureka-security-server/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/eureka-security-server/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/eureka-security-server/src/main/java/com/jourwon/springcloud/EurekaSecurityServerApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
6 |
7 | /**
8 | * Description:
9 | *
10 | * @author JourWon
11 | * @date 2019/12/18 10:49
12 | */
13 | @EnableEurekaServer
14 | @SpringBootApplication
15 | public class EurekaSecurityServerApplication {
16 |
17 | public static void main(String[] args) {
18 | SpringApplication.run(EurekaSecurityServerApplication.class, args);
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/eureka-security-server/src/main/java/com/jourwon/springcloud/config/WebSecurityConfig.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.config;
2 |
3 | import org.springframework.security.config.annotation.web.builders.HttpSecurity;
4 | import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
5 | import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
6 |
7 | /**
8 | * Description:添加Java配置WebSecurityConfig
9 | *
10 | * @author JourWon
11 | * @date 2019/12/18 10:49
12 | */
13 | @EnableWebSecurity
14 | public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
15 |
16 | @Override
17 | protected void configure(HttpSecurity http) throws Exception {
18 | http.csrf().ignoringAntMatchers("/eureka/**");
19 | super.configure(http);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/eureka-security-server/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8004
3 |
4 | spring:
5 | application:
6 | name: eureka-security-server
7 | security:
8 | user:
9 | # 配置spring security登录用户名和密码
10 | name: root
11 | password: root
12 |
13 | eureka:
14 | instance:
15 | hostname: localhost
16 | client:
17 | fetch-registry: false
18 | register-with-eureka: false
--------------------------------------------------------------------------------
/eureka-security-server/src/test/java/com/jourwon/springcloud/EurekaSecurityServerApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class EurekaSecurityServerApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/eureka-server/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/eureka-server/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/eureka-server/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/eureka-server/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/eureka-server/src/main/java/com/jourwon/springcloud/EurekaServerApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
6 |
7 | /**
8 | * Description:Eureka注册中心
9 | *
10 | * @author JourWon
11 | * @date 2019/12/17 11:56
12 | */
13 |
14 | @EnableEurekaServer
15 | @SpringBootApplication
16 | public class EurekaServerApplication {
17 |
18 | public static void main(String[] args) {
19 | SpringApplication.run(EurekaServerApplication.class, args);
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/eureka-server/src/main/resources/application-replica1.yml:
--------------------------------------------------------------------------------
1 | # 指定运行端口
2 | server:
3 | port: 8002
4 |
5 | # 指定服务名称
6 | spring:
7 | application:
8 | name: eureka-server
9 |
10 | # 指定主机地址
11 | eureka:
12 | instance:
13 | hostname: replica1
14 | client:
15 | fetch-registry: true
16 | register-with-eureka: true
17 | service-url:
18 | # 注册到另一个Eureka注册中心
19 | defaultZone: http://replica2:8003/eureka/
--------------------------------------------------------------------------------
/eureka-server/src/main/resources/application-replica2.yml:
--------------------------------------------------------------------------------
1 | # 指定运行端口
2 | server:
3 | port: 8003
4 |
5 | # 指定服务名称
6 | spring:
7 | application:
8 | name: eureka-server
9 |
10 | # 指定主机地址
11 | eureka:
12 | instance:
13 | hostname: replica2
14 | client:
15 | fetch-registry: true
16 | register-with-eureka: true
17 | service-url:
18 | # 注册到另一个Eureka注册中心
19 | defaultZone: http://replica1:8002/eureka/
20 |
21 |
--------------------------------------------------------------------------------
/eureka-server/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | # 指定运行端口
2 | server:
3 | port: 8001
4 |
5 | # 指定服务名称
6 | spring:
7 | application:
8 | name: eureka-server
9 |
10 | # 指定主机地址
11 | eureka:
12 | instance:
13 | hostname: localhost
14 | client:
15 | # 指定是否从注册中心获取服务(注册中心不需要开启)
16 | fetch-registry: false
17 | # 指定是否将服务注册到注册中心(注册中心不需要开启)
18 | register-with-eureka: false
19 |
20 |
--------------------------------------------------------------------------------
/eureka-server/src/test/java/com/jourwon/springcloud/EurekaServerApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class EurekaServerApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/feign-service/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/feign-service/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/feign-service/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/feign-service/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/feign-service/src/main/java/com/jourwon/springcloud/FeignServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.openfeign.EnableFeignClients;
7 |
8 | /**
9 | * Description:
10 | *
11 | * @author JourWon
12 | * @date 2019/12/20 18:31
13 | */
14 |
15 | @EnableFeignClients
16 | @EnableDiscoveryClient
17 | @SpringBootApplication
18 | public class FeignServiceApplication {
19 |
20 | public static void main(String[] args) {
21 | SpringApplication.run(FeignServiceApplication.class, args);
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/feign-service/src/main/java/com/jourwon/springcloud/config/FeignConfig.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.config;
2 |
3 | import feign.Logger;
4 | import org.springframework.context.annotation.Bean;
5 | import org.springframework.context.annotation.Configuration;
6 |
7 | /**
8 | * Description:
9 | *
10 | * @author JourWon
11 | * @date 2019/12/20 18:39
12 | */
13 | @Configuration
14 | public class FeignConfig {
15 |
16 | @Bean
17 | Logger.Level level() {
18 | return Logger.Level.FULL;
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/feign-service/src/main/java/com/jourwon/springcloud/pojo/User.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.pojo;
2 |
3 | /**
4 | * Description:用户
5 | *
6 | * @author JourWon
7 | * @date 2019/12/18 14:00
8 | */
9 | public class User {
10 |
11 | private Long id;
12 | private String username;
13 | private String password;
14 |
15 | public User() {
16 | }
17 |
18 | public User(Long id, String username, String password) {
19 | this.id = id;
20 | this.username = username;
21 | this.password = password;
22 | }
23 |
24 | public Long getId() {
25 | return id;
26 | }
27 |
28 | public void setId(Long id) {
29 | this.id = id;
30 | }
31 |
32 | public String getUsername() {
33 | return username;
34 | }
35 |
36 | public void setUsername(String username) {
37 | this.username = username;
38 | }
39 |
40 | public String getPassword() {
41 | return password;
42 | }
43 |
44 | public void setPassword(String password) {
45 | this.password = password;
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/feign-service/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8701
3 |
4 | spring:
5 | application:
6 | name: feign-service
7 |
8 | eureka:
9 | client:
10 | register-with-eureka: true
11 | fetch-registry: true
12 | service-url:
13 | defaultZone: http://localhost:8001/eureka/
14 |
15 | #在Feign中开启Hystrix
16 | feign:
17 | hystrix:
18 | enabled: true
19 |
20 | logging:
21 | level:
22 | com.jourwon.springcloud.service: debug
--------------------------------------------------------------------------------
/feign-service/src/test/java/com/jourwon/springcloud/FeignServiceApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class FeignServiceApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/hystrix-dashboard/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/hystrix-dashboard/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/hystrix-dashboard/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/hystrix-dashboard/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/hystrix-dashboard/src/main/java/com/jourwon/springcloud/HystrixDashboardApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
7 |
8 | /**
9 | * Description:
10 | *
11 | * @author JourWon
12 | * @date 2019/12/20 14:06
13 | */
14 | @EnableHystrixDashboard
15 | @EnableDiscoveryClient
16 | @SpringBootApplication
17 | public class HystrixDashboardApplication {
18 |
19 | public static void main(String[] args) {
20 | SpringApplication.run(HystrixDashboardApplication.class, args);
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/hystrix-dashboard/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8501
3 |
4 | spring:
5 | application:
6 | name: hystrix-dashboard
7 |
8 | eureka:
9 | client:
10 | register-with-eureka: true
11 | fetch-registry: true
12 | service-url:
13 | defaultZone: http://localhost:8001/eureka/
14 |
15 |
--------------------------------------------------------------------------------
/hystrix-dashboard/src/test/java/com/jourwon/springcloud/HystrixDashboardApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class HystrixDashboardApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/hystrix-service/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/hystrix-service/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/hystrix-service/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/hystrix-service/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/hystrix-service/src/main/java/com/jourwon/springcloud/HystrixServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
7 |
8 | /**
9 | * Description: 在启动类上添加@EnableCircuitBreaker来开启Hystrix的断路器功能
10 | *
11 | * @author JourWon
12 | * @date 2019/12/18 16:16
13 | */
14 | @EnableCircuitBreaker
15 | @EnableDiscoveryClient
16 | @SpringBootApplication
17 | public class HystrixServiceApplication {
18 |
19 | public static void main(String[] args) {
20 | SpringApplication.run(HystrixServiceApplication.class, args);
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/hystrix-service/src/main/java/com/jourwon/springcloud/config/RibbonConfig.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.config;
2 |
3 | import org.springframework.cloud.client.loadbalancer.LoadBalanced;
4 | import org.springframework.context.annotation.Bean;
5 | import org.springframework.context.annotation.Configuration;
6 | import org.springframework.web.client.RestTemplate;
7 |
8 | /**
9 | * Description:
10 | *
11 | * @author JourWon
12 | * @date 2019/12/18 16:18
13 | */
14 | @Configuration
15 | public class RibbonConfig {
16 |
17 | @Bean
18 | @LoadBalanced
19 | public RestTemplate restTemplate() {
20 | return new RestTemplate();
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/hystrix-service/src/main/java/com/jourwon/springcloud/filter/HystrixRequestContextFilter.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.filter;
2 |
3 | import com.netflix.hystrix.strategy.concurrency.HystrixRequestContext;
4 | import org.springframework.stereotype.Component;
5 |
6 | import javax.servlet.*;
7 | import javax.servlet.annotation.WebFilter;
8 | import java.io.IOException;
9 |
10 | /**
11 | * Description:
12 | *
13 | * @author JourWon
14 | * @date 2019/12/19 13:49
15 | */
16 | @Component
17 | @WebFilter(urlPatterns = "/*", asyncSupported = true)
18 | public class HystrixRequestContextFilter implements Filter {
19 |
20 | @Override
21 | public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
22 | HystrixRequestContext context = HystrixRequestContext.initializeContext();
23 |
24 | try {
25 | filterChain.doFilter(servletRequest, servletResponse);
26 | } finally {
27 | context.close();
28 | }
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/hystrix-service/src/main/java/com/jourwon/springcloud/pojo/User.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.pojo;
2 |
3 | /**
4 | * Description:用户
5 | *
6 | * @author JourWon
7 | * @date 2019/12/18 14:00
8 | */
9 | public class User {
10 |
11 | private Long id;
12 | private String username;
13 | private String password;
14 |
15 | public User() {
16 | }
17 |
18 | public User(Long id, String username, String password) {
19 | this.id = id;
20 | this.username = username;
21 | this.password = password;
22 | }
23 |
24 | public Long getId() {
25 | return id;
26 | }
27 |
28 | public void setId(Long id) {
29 | this.id = id;
30 | }
31 |
32 | public String getUsername() {
33 | return username;
34 | }
35 |
36 | public void setUsername(String username) {
37 | this.username = username;
38 | }
39 |
40 | public String getPassword() {
41 | return password;
42 | }
43 |
44 | public void setPassword(String password) {
45 | this.password = password;
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/hystrix-service/src/main/resources/application-replica1.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8402
3 |
4 | spring:
5 | application:
6 | name: hystrix-service
7 |
8 | eureka:
9 | client:
10 | register-with-eureka: true
11 | fetch-registry: true
12 | service-url:
13 | defaultZone: http://localhost:8001/eureka/
14 |
15 | service-url:
16 | user-service: http://user-service/
17 |
18 | management:
19 | endpoints:
20 | web:
21 | exposure:
22 | #暴露hystrix监控端点
23 | include: 'hystrix.stream'
24 |
--------------------------------------------------------------------------------
/hystrix-service/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8401
3 |
4 | spring:
5 | application:
6 | name: hystrix-service
7 |
8 | eureka:
9 | client:
10 | register-with-eureka: true
11 | fetch-registry: true
12 | service-url:
13 | defaultZone: http://localhost:8001/eureka/
14 |
15 | service-url:
16 | user-service: http://user-service/
17 |
18 | management:
19 | endpoints:
20 | web:
21 | exposure:
22 | #暴露hystrix监控端点
23 | include: 'hystrix.stream'
24 |
--------------------------------------------------------------------------------
/hystrix-service/src/test/java/com/jourwon/springcloud/HystrixServiceApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class HystrixServiceApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/nacos-config-client/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/nacos-config-client/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/nacos-config-client/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/nacos-config-client/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/nacos-config-client/src/main/java/com/jourwon/springcloud/NacosConfigClientApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | /**
8 | * Description:
9 | *
10 | * @author JourWon
11 | * @date 2019/12/24 21:44
12 | */
13 | @EnableDiscoveryClient
14 | @SpringBootApplication
15 | public class NacosConfigClientApplication {
16 |
17 | public static void main(String[] args) {
18 | SpringApplication.run(NacosConfigClientApplication.class, args);
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/nacos-config-client/src/main/java/com/jourwon/springcloud/controller/ConfigClientController.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.controller;
2 |
3 | import org.springframework.beans.factory.annotation.Value;
4 | import org.springframework.cloud.context.config.annotation.RefreshScope;
5 | import org.springframework.web.bind.annotation.GetMapping;
6 | import org.springframework.web.bind.annotation.RestController;
7 |
8 | /**
9 | * Description:
10 | *
11 | * @author JourWon
12 | * @date 2019/12/24 21:14
13 | */
14 |
15 | @RefreshScope
16 | @RestController
17 | public class ConfigClientController {
18 |
19 | @Value("${config.info}")
20 | private String configInfo;
21 |
22 | @GetMapping("/configInfo")
23 | public Object getConfigInfo() {
24 | return configInfo;
25 | }
26 |
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/nacos-config-client/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | profiles:
3 | active: dev
--------------------------------------------------------------------------------
/nacos-config-client/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 9101
3 |
4 | spring:
5 | application:
6 | name: nacos-config-client
7 | cloud:
8 | nacos:
9 | discovery:
10 | # Nacos地址
11 | server-addr: http://localhost:8848
12 | config:
13 | # Nacos地址
14 | server-addr: http://localhost:8848
15 | # 这里我们获取的yaml格式的配置
16 | file-extension: yaml
--------------------------------------------------------------------------------
/nacos-config-client/src/test/java/com/jourwon/springcloud/NacosConfigClientApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class NacosConfigClientApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/nacos-ribbon-service/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/nacos-ribbon-service/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/nacos-ribbon-service/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/nacos-ribbon-service/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/nacos-ribbon-service/src/main/java/com/jourwon/springcloud/NacosRibbonServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | /**
8 | * Description:
9 | *
10 | * @author JourWon
11 | * @date 2019/12/24 20:45
12 | */
13 | @EnableDiscoveryClient
14 | @SpringBootApplication
15 | public class NacosRibbonServiceApplication {
16 |
17 | public static void main(String[] args) {
18 | SpringApplication.run(NacosRibbonServiceApplication.class, args);
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/nacos-ribbon-service/src/main/java/com/jourwon/springcloud/config/RibbonConfig.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.config;
2 |
3 | import org.springframework.cloud.client.loadbalancer.LoadBalanced;
4 | import org.springframework.context.annotation.Bean;
5 | import org.springframework.context.annotation.Configuration;
6 | import org.springframework.web.client.RestTemplate;
7 |
8 | /**
9 | * Description:使用@LoadBalanced注解赋予RestTemplate负载均衡的能力
10 | *
11 | * @author JourWon
12 | * @date 2019/12/18 14:37
13 | */
14 | @Configuration
15 | public class RibbonConfig {
16 |
17 | @Bean
18 | @LoadBalanced
19 | public RestTemplate restTemplate() {
20 | return new RestTemplate();
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/nacos-ribbon-service/src/main/java/com/jourwon/springcloud/pojo/User.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.pojo;
2 |
3 | /**
4 | * Description:用户
5 | *
6 | * @author JourWon
7 | * @date 2019/12/18 14:00
8 | */
9 | public class User {
10 |
11 | private Long id;
12 | private String username;
13 | private String password;
14 |
15 | public User() {
16 | }
17 |
18 | public User(Long id, String username, String password) {
19 | this.id = id;
20 | this.username = username;
21 | this.password = password;
22 | }
23 |
24 | public Long getId() {
25 | return id;
26 | }
27 |
28 | public void setId(Long id) {
29 | this.id = id;
30 | }
31 |
32 | public String getUsername() {
33 | return username;
34 | }
35 |
36 | public void setUsername(String username) {
37 | this.username = username;
38 | }
39 |
40 | public String getPassword() {
41 | return password;
42 | }
43 |
44 | public void setPassword(String password) {
45 | this.password = password;
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/nacos-ribbon-service/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8308
3 |
4 | spring:
5 | application:
6 | name: nacos-ribbon-service
7 | cloud:
8 | nacos:
9 | discovery:
10 | server-addr: http://localhost:8848
11 |
12 | service-url:
13 | nacos-user-service: http://nacos-user-service
--------------------------------------------------------------------------------
/nacos-ribbon-service/src/test/java/com/jourwon/springcloud/NacosRibbonServiceApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class NacosRibbonServiceApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/nacos-user-service/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/nacos-user-service/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/nacos-user-service/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/nacos-user-service/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/nacos-user-service/src/main/java/com/jourwon/springcloud/NacosUserServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | /**
8 | * Description:
9 | *
10 | * @author JourWon
11 | * @date 2019/12/24 20:39
12 | */
13 | @EnableDiscoveryClient
14 | @SpringBootApplication
15 | public class NacosUserServiceApplication {
16 |
17 | public static void main(String[] args) {
18 | SpringApplication.run(NacosUserServiceApplication.class, args);
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/nacos-user-service/src/main/java/com/jourwon/springcloud/pojo/User.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.pojo;
2 |
3 | /**
4 | * Description:用户
5 | *
6 | * @author JourWon
7 | * @date 2019/12/18 14:00
8 | */
9 | public class User {
10 |
11 | private Long id;
12 | private String username;
13 | private String password;
14 |
15 | public User() {
16 | }
17 |
18 | public User(Long id, String username, String password) {
19 | this.id = id;
20 | this.username = username;
21 | this.password = password;
22 | }
23 |
24 | public Long getId() {
25 | return id;
26 | }
27 |
28 | public void setId(Long id) {
29 | this.id = id;
30 | }
31 |
32 | public String getUsername() {
33 | return username;
34 | }
35 |
36 | public void setUsername(String username) {
37 | this.username = username;
38 | }
39 |
40 | public String getPassword() {
41 | return password;
42 | }
43 |
44 | public void setPassword(String password) {
45 | this.password = password;
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/nacos-user-service/src/main/java/com/jourwon/springcloud/service/UserService.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.service;
2 |
3 | import com.jourwon.springcloud.pojo.User;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * Description:
9 | *
10 | * @author JourWon
11 | * @date 2019/12/18 14:06
12 | */
13 | public interface UserService {
14 |
15 | void insert(User user);
16 |
17 | User getUser(Long id);
18 |
19 | void update(User user);
20 |
21 | void delete(Long id);
22 |
23 | User getByUsername(String username);
24 |
25 | List listUsersByIds(List ids);
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/nacos-user-service/src/main/resources/application-replica.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8207
3 |
4 | spring:
5 | application:
6 | name: nacos-user-service
7 | cloud:
8 | nacos:
9 | discovery:
10 | # 配置Nacos地址
11 | server-addr: http://localhost:8848
12 |
13 | management:
14 | endpoints:
15 | web:
16 | exposure:
17 | include: '*'
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/nacos-user-service/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8206
3 |
4 | spring:
5 | application:
6 | name: nacos-user-service
7 | cloud:
8 | nacos:
9 | discovery:
10 | # 配置Nacos地址
11 | server-addr: http://localhost:8848
12 |
13 | management:
14 | endpoints:
15 | web:
16 | exposure:
17 | include: '*'
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/nacos-user-service/src/test/java/com/jourwon/springcloud/NacosUserServiceApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class NacosUserServiceApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/oauth2-client/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/oauth2-client/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/oauth2-client/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/oauth2-client/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/oauth2-client/src/main/java/com/jourwon/springcloud/Oauth2ClientApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso;
6 |
7 | /**
8 | * Description: 在启动类上添加@EnableOAuth2Sso注解来启用单点登录功能
9 | *
10 | * @author JourWon
11 | * @date 2019/12/24 14:42
12 | */
13 | @EnableOAuth2Sso
14 | @SpringBootApplication
15 | public class Oauth2ClientApplication {
16 |
17 | public static void main(String[] args) {
18 | SpringApplication.run(Oauth2ClientApplication.class, args);
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/oauth2-client/src/main/java/com/jourwon/springcloud/config/SecurityConfig.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.config;
2 |
3 | import org.springframework.context.annotation.Configuration;
4 | import org.springframework.core.annotation.Order;
5 | import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
6 | import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
7 |
8 | /**
9 | * Description:在接口上配置权限时使用
10 | *
11 | * @author JourWon
12 | * @date 2019/12/24 16:24
13 | */
14 | @Configuration
15 | @EnableGlobalMethodSecurity(prePostEnabled = true)
16 | @Order(101)
17 | public class SecurityConfig extends WebSecurityConfigurerAdapter {
18 | }
19 |
--------------------------------------------------------------------------------
/oauth2-client/src/main/java/com/jourwon/springcloud/controller/UserController.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.controller;
2 |
3 | import org.springframework.security.access.prepost.PreAuthorize;
4 | import org.springframework.security.core.Authentication;
5 | import org.springframework.web.bind.annotation.GetMapping;
6 | import org.springframework.web.bind.annotation.RequestMapping;
7 | import org.springframework.web.bind.annotation.RestController;
8 |
9 | /**
10 | * Description:
11 | *
12 | * @author JourWon
13 | * @date 2019/12/24 14:46
14 | */
15 | @RestController
16 | @RequestMapping("/user")
17 | public class UserController {
18 |
19 | @GetMapping("/getCurrentUser")
20 | public Object getCurrentUser(Authentication authentication) {
21 | return authentication;
22 | }
23 |
24 |
25 | @PreAuthorize("hasAuthority('admin')")
26 | @GetMapping("/auth/admin")
27 | public Object adminAuth() {
28 | return "Has admin auth!";
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/oauth2-client/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 9501
3 | servlet:
4 | session:
5 | cookie:
6 | # 防止cookie冲突,冲突会导致登录验证不通过
7 | name: OAUTH2-CLIENT-SESSIONID
8 |
9 | oauth2-service-url: http://localhost:9401
10 |
11 | spring:
12 | application:
13 | name: oauth2-client
14 |
15 | security:
16 | # 与oauth2-server对应的配置
17 | oauth2:
18 | client:
19 | client-id: admin
20 | client-secret: admin123456
21 | user-authorization-uri: ${oauth2-service-url}/oauth/authorize
22 | access-token-uri: ${oauth2-service-url}/oauth/token
23 | resource:
24 | jwt:
25 | key-uri: ${oauth2-service-url}/oauth/token_key
26 |
--------------------------------------------------------------------------------
/oauth2-client/src/test/java/com/jourwon/springcloud/Oauth2ClientApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class Oauth2ClientApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/oauth2-jwt-server/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/oauth2-jwt-server/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/oauth2-jwt-server/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/oauth2-jwt-server/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/oauth2-jwt-server/src/main/java/com/jourwon/springcloud/Oauth2JwtServerApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 |
6 | /**
7 | * Description:
8 | *
9 | * @author JourWon
10 | * @date 2019/12/24 10:15
11 | */
12 | @SpringBootApplication
13 | public class Oauth2JwtServerApplication {
14 |
15 | public static void main(String[] args) {
16 | SpringApplication.run(Oauth2JwtServerApplication.class, args);
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/oauth2-jwt-server/src/main/java/com/jourwon/springcloud/config/RedisTokenStoreConfig.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.config;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.context.annotation.Bean;
5 | import org.springframework.context.annotation.Configuration;
6 | import org.springframework.data.redis.connection.RedisConnectionFactory;
7 | import org.springframework.security.oauth2.provider.token.TokenStore;
8 | import org.springframework.security.oauth2.provider.token.store.redis.RedisTokenStore;
9 |
10 | /**
11 | * Description:使用redis存储token的配置
12 | *
13 | * @author JourWon
14 | * @date 2019/12/24 9:49
15 | */
16 | @Configuration
17 | public class RedisTokenStoreConfig {
18 |
19 | @Autowired
20 | private RedisConnectionFactory redisConnectionFactory;
21 |
22 | @Bean
23 | public TokenStore redisTokenStore() {
24 | return new RedisTokenStore(redisConnectionFactory);
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/oauth2-jwt-server/src/main/java/com/jourwon/springcloud/enhancer/JwtTokenEnhancer.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.enhancer;
2 |
3 | import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken;
4 | import org.springframework.security.oauth2.common.OAuth2AccessToken;
5 | import org.springframework.security.oauth2.provider.OAuth2Authentication;
6 | import org.springframework.security.oauth2.provider.token.TokenEnhancer;
7 |
8 | import java.util.HashMap;
9 | import java.util.Map;
10 |
11 | /**
12 | * Description:继承TokenEnhancer实现一个JWT内容增强器
13 | *
14 | * @author JourWon
15 | * @date 2019/12/24 11:21
16 | */
17 | public class JwtTokenEnhancer implements TokenEnhancer {
18 |
19 | @Override
20 | public OAuth2AccessToken enhance(OAuth2AccessToken oAuth2AccessToken, OAuth2Authentication oAuth2Authentication) {
21 | Map info = new HashMap<>();
22 | info.put("enhance", "enhance info");
23 |
24 | ((DefaultOAuth2AccessToken) oAuth2AccessToken).setAdditionalInformation(info);
25 | return oAuth2AccessToken;
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/oauth2-jwt-server/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 9401
3 |
4 | spring:
5 | application:
6 | name: oauth2-jwt-server
7 | redis:
8 | host: 10.172.0.201
9 | database: 0
--------------------------------------------------------------------------------
/oauth2-jwt-server/src/test/java/com/jourwon/springcloud/Oauth2JwtServerApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class Oauth2JwtServerApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/oauth2-server/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/oauth2-server/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/oauth2-server/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/oauth2-server/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/oauth2-server/src/main/java/com/jourwon/springcloud/Oauth2ServerApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 |
6 | /**
7 | * Description:
8 | *
9 | * @author JourWon
10 | * @date 2019/12/23 16:24
11 | */
12 | @SpringBootApplication
13 | public class Oauth2ServerApplication {
14 |
15 | public static void main(String[] args) {
16 | SpringApplication.run(Oauth2ServerApplication.class, args);
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/oauth2-server/src/main/java/com/jourwon/springcloud/controller/UserController.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.controller;
2 |
3 | import org.springframework.security.core.Authentication;
4 | import org.springframework.web.bind.annotation.GetMapping;
5 | import org.springframework.web.bind.annotation.RequestMapping;
6 | import org.springframework.web.bind.annotation.RestController;
7 |
8 | /**
9 | * Description:
10 | *
11 | * @author JourWon
12 | * @date 2019/12/23 17:07
13 | */
14 | @RestController
15 | @RequestMapping("/user")
16 | public class UserController {
17 |
18 | @GetMapping("/getCurrentUser")
19 | public Object getCurrentUser(Authentication authentication) {
20 | return authentication.getPrincipal();
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/oauth2-server/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 9401
3 |
4 | spring:
5 | application:
6 | name: oauth2-server
--------------------------------------------------------------------------------
/oauth2-server/src/test/java/com/jourwon/springcloud/Oauth2ServerApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class Oauth2ServerApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | com.jourwon.springcloud
8 | springcloud-learning
9 | 1.0-SNAPSHOT
10 | pom
11 |
12 |
13 |
--------------------------------------------------------------------------------
/ribbon-service/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/ribbon-service/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/ribbon-service/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/ribbon-service/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/ribbon-service/src/main/java/com/jourwon/springcloud/RibbonServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | /**
8 | * Description:
9 | *
10 | * @author JourWon
11 | * @date 2019/12/18 14:51
12 | */
13 | @EnableDiscoveryClient
14 | @SpringBootApplication
15 | public class RibbonServiceApplication {
16 |
17 | public static void main(String[] args) {
18 | SpringApplication.run(RibbonServiceApplication.class, args);
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/ribbon-service/src/main/java/com/jourwon/springcloud/config/RibbonConfig.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.config;
2 |
3 | import org.springframework.cloud.client.loadbalancer.LoadBalanced;
4 | import org.springframework.context.annotation.Bean;
5 | import org.springframework.context.annotation.Configuration;
6 | import org.springframework.web.client.RestTemplate;
7 |
8 | /**
9 | * Description:使用@LoadBalanced注解赋予RestTemplate负载均衡的能力
10 | *
11 | * @author JourWon
12 | * @date 2019/12/18 14:37
13 | */
14 | @Configuration
15 | public class RibbonConfig {
16 |
17 | @Bean
18 | @LoadBalanced
19 | public RestTemplate restTemplate() {
20 | return new RestTemplate();
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/ribbon-service/src/main/java/com/jourwon/springcloud/pojo/User.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.pojo;
2 |
3 | /**
4 | * Description:用户
5 | *
6 | * @author JourWon
7 | * @date 2019/12/18 14:00
8 | */
9 | public class User {
10 |
11 | private Long id;
12 | private String username;
13 | private String password;
14 |
15 | public User() {
16 | }
17 |
18 | public User(Long id, String username, String password) {
19 | this.id = id;
20 | this.username = username;
21 | this.password = password;
22 | }
23 |
24 | public Long getId() {
25 | return id;
26 | }
27 |
28 | public void setId(Long id) {
29 | this.id = id;
30 | }
31 |
32 | public String getUsername() {
33 | return username;
34 | }
35 |
36 | public void setUsername(String username) {
37 | this.username = username;
38 | }
39 |
40 | public String getPassword() {
41 | return password;
42 | }
43 |
44 | public void setPassword(String password) {
45 | this.password = password;
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/ribbon-service/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8301
3 |
4 | spring:
5 | application:
6 | name: ribbon-service
7 | # zipkin:
8 | # base-url: http://localhost:9411
9 | # #设置Sleuth的抽样收集概率
10 | # sleuth:
11 | # sampler:
12 | # probability: 0.1
13 |
14 | eureka:
15 | client:
16 | register-with-eureka: true
17 | fetch-registry: true
18 | service-url:
19 | defaultZone: http://localhost:8001/eureka/
20 |
21 |
22 | service-url:
23 | user-service: http://user-service
24 |
--------------------------------------------------------------------------------
/ribbon-service/src/test/java/com/jourwon/springcloud/RibbonServiceApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class RibbonServiceApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/seata-account-service/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/seata-account-service/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/seata-account-service/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/seata-account-service/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/seata-account-service/src/main/java/com/jourwon/springcloud/SeataAccountServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.mybatis.spring.annotation.MapperScan;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
7 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
8 | import org.springframework.cloud.openfeign.EnableFeignClients;
9 |
10 | /**
11 | * Description:
12 | *
13 | * @author JourWon
14 | * @date 2019/12/25 17:24
15 | */
16 | @EnableFeignClients
17 | @EnableDiscoveryClient
18 | @MapperScan(basePackages = {"com.jourwon.springcloud.mapper"})
19 | @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
20 | public class SeataAccountServiceApplication {
21 |
22 | public static void main(String[] args) {
23 | SpringApplication.run(SeataAccountServiceApplication.class, args);
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/seata-account-service/src/main/java/com/jourwon/springcloud/controller/AccountController.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.controller;
2 |
3 | import com.jourwon.springcloud.pojo.Result;
4 | import com.jourwon.springcloud.service.AccountService;
5 | import org.springframework.beans.factory.annotation.Autowired;
6 | import org.springframework.web.bind.annotation.RequestMapping;
7 | import org.springframework.web.bind.annotation.RequestParam;
8 | import org.springframework.web.bind.annotation.RestController;
9 |
10 | import java.math.BigDecimal;
11 |
12 | @RestController
13 | @RequestMapping("/account")
14 | public class AccountController {
15 |
16 | @Autowired
17 | private AccountService accountService;
18 |
19 | /**
20 | * 扣减账户余额
21 | */
22 | @RequestMapping("/decrease")
23 | public Result decrease(@RequestParam("userId") Long userId, @RequestParam("money") BigDecimal money){
24 | accountService.decrease(userId,money);
25 | return new Result("扣减账户余额成功!",200);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/seata-account-service/src/main/java/com/jourwon/springcloud/mapper/AccountMapper.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.mapper;
2 |
3 | import org.apache.ibatis.annotations.Param;
4 | import org.springframework.stereotype.Repository;
5 |
6 | import java.math.BigDecimal;
7 |
8 | @Repository
9 | public interface AccountMapper {
10 |
11 | /**
12 | * 扣减账户余额
13 | */
14 | void decrease(@Param("userId") Long userId, @Param("money") BigDecimal money);
15 | }
16 |
--------------------------------------------------------------------------------
/seata-account-service/src/main/java/com/jourwon/springcloud/pojo/Account.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.pojo;
2 |
3 | import lombok.Data;
4 |
5 | import java.math.BigDecimal;
6 |
7 | @Data
8 | public class Account {
9 |
10 | private Long id;
11 |
12 | /**
13 | * 用户id
14 | */
15 | private Long userId;
16 |
17 | /**
18 | * 总额度
19 | */
20 | private BigDecimal total;
21 |
22 | /**
23 | * 已用额度
24 | */
25 | private BigDecimal used;
26 |
27 | /**
28 | * 剩余额度
29 | */
30 | private BigDecimal residue;
31 | }
32 |
--------------------------------------------------------------------------------
/seata-account-service/src/main/java/com/jourwon/springcloud/service/AccountService.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.service;
2 |
3 | import java.math.BigDecimal;
4 |
5 | public interface AccountService {
6 |
7 | /**
8 | * 扣减账户余额
9 | * @param userId 用户id
10 | * @param money 金额
11 | */
12 | void decrease(Long userId, BigDecimal money);
13 | }
14 |
--------------------------------------------------------------------------------
/seata-account-service/src/main/resources/account.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE `account` (
2 | `id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
3 | `user_id` bigint(11) DEFAULT NULL COMMENT '用户id',
4 | `total` decimal(10,0) DEFAULT NULL COMMENT '总额度',
5 | `used` decimal(10,0) DEFAULT NULL COMMENT '已用余额',
6 | `residue` decimal(10,0) DEFAULT '0' COMMENT '剩余可用额度',
7 | PRIMARY KEY (`id`)
8 | ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
9 |
10 | INSERT INTO `account` (`id`, `user_id`, `total`, `used`, `residue`) VALUES ('1', '1', '1000', '0', '1000');
11 |
--------------------------------------------------------------------------------
/seata-account-service/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8182
3 |
4 | spring:
5 | application:
6 | name: seata-account-service
7 | cloud:
8 | alibaba:
9 | seata:
10 | tx-service-group: my_test_tx_group
11 | nacos:
12 | discovery:
13 | server-addr: localhost:8848
14 | datasource:
15 | driver-class-name: com.mysql.cj.jdbc.Driver
16 | url: jdbc:mysql://localhost:3306/seata-account?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&allowMultiQueries=true&useSSL=false&tinyInt1isBit=false&serverTimezone=GMT%2B8
17 | username: root
18 | password: root
19 |
20 | feign:
21 | hystrix:
22 | enabled: true
23 |
24 | logging:
25 | level:
26 | io:
27 | seata: info
28 |
29 | mybatis:
30 | mapper-locations: classpath:mapper/*.xml
31 |
--------------------------------------------------------------------------------
/seata-account-service/src/main/resources/mapper/AccountMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | UPDATE account
15 | SET residue = residue - #{money},
16 | used = used + #{money}
17 | WHERE user_id = #{userId};
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/seata-account-service/src/test/java/com/jourwon/springcloud/SeataAccountServiceApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class SeataAccountServiceApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/seata-order-service/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/seata-order-service/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/seata-order-service/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/seata-order-service/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/seata-order-service/src/main/java/com/jourwon/springcloud/SeataOrderServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.mybatis.spring.annotation.MapperScan;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
7 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
8 | import org.springframework.cloud.openfeign.EnableFeignClients;
9 |
10 | /**
11 | * Description:
12 | *
13 | * @author JourWon
14 | * @date 2019/12/25 16:32
15 | */
16 |
17 | @EnableFeignClients
18 | @EnableDiscoveryClient
19 | @MapperScan(basePackages = {"com.jourwon.springcloud.mapper"})
20 | @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
21 | public class SeataOrderServiceApplication {
22 |
23 | public static void main(String[] args) {
24 | SpringApplication.run(SeataOrderServiceApplication.class, args);
25 | }
26 |
27 | }
28 |
29 |
30 |
--------------------------------------------------------------------------------
/seata-order-service/src/main/java/com/jourwon/springcloud/controller/OrderController.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.controller;
2 |
3 | import com.jourwon.springcloud.pojo.Order;
4 | import com.jourwon.springcloud.pojo.Result;
5 | import com.jourwon.springcloud.service.OrderService;
6 | import org.springframework.beans.factory.annotation.Autowired;
7 | import org.springframework.web.bind.annotation.GetMapping;
8 | import org.springframework.web.bind.annotation.RequestMapping;
9 | import org.springframework.web.bind.annotation.RestController;
10 |
11 | @RestController
12 | @RequestMapping(value = "/order")
13 | public class OrderController {
14 |
15 | @Autowired
16 | private OrderService orderService;
17 |
18 | /**
19 | * 创建订单
20 | */
21 | @GetMapping("/create")
22 | public Result create(Order order) {
23 | orderService.create(order);
24 | return new Result<>("订单创建成功!", 200);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/seata-order-service/src/main/java/com/jourwon/springcloud/mapper/OrderMapper.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.mapper;
2 |
3 | import com.jourwon.springcloud.pojo.Order;
4 | import org.apache.ibatis.annotations.Param;
5 | import org.springframework.stereotype.Repository;
6 |
7 |
8 | @Repository
9 | public interface OrderMapper {
10 |
11 | /**
12 | * 创建订单
13 | */
14 | void create(Order order);
15 |
16 | /**
17 | * 修改订单金额
18 | */
19 | void update(@Param("userId") Long userId, @Param("status") Integer status);
20 | }
21 |
--------------------------------------------------------------------------------
/seata-order-service/src/main/java/com/jourwon/springcloud/pojo/Order.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.pojo;
2 |
3 |
4 | import lombok.Data;
5 |
6 | import java.math.BigDecimal;
7 |
8 | /**
9 | * Description:
10 | *
11 | * @author JourWon
12 | * @date 2019/12/25 16:28
13 | */
14 | @Data
15 | public class Order {
16 |
17 | private Long id;
18 |
19 | private Long userId;
20 |
21 | private Long productId;
22 |
23 | private Integer count;
24 |
25 | private BigDecimal money;
26 |
27 | /**
28 | * 订单状态:0:创建中;1:已完结
29 | */
30 | private Integer status;
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/seata-order-service/src/main/java/com/jourwon/springcloud/service/AccountService.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.service;
2 |
3 | import com.jourwon.springcloud.pojo.Result;
4 | import org.springframework.cloud.openfeign.FeignClient;
5 | import org.springframework.web.bind.annotation.RequestMapping;
6 | import org.springframework.web.bind.annotation.RequestParam;
7 |
8 | import java.math.BigDecimal;
9 |
10 | @FeignClient(value = "seata-account-service")
11 | public interface AccountService {
12 |
13 | /**
14 | * 扣减账户余额
15 | */
16 | @RequestMapping("/account/decrease")
17 | Result decrease(@RequestParam("userId") Long userId, @RequestParam("money") BigDecimal money);
18 | }
19 |
--------------------------------------------------------------------------------
/seata-order-service/src/main/java/com/jourwon/springcloud/service/OrderService.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.service;
2 |
3 |
4 | import com.jourwon.springcloud.pojo.Order;
5 |
6 | public interface OrderService {
7 |
8 | /**
9 | * 创建订单
10 | */
11 | void create(Order order);
12 | }
13 |
--------------------------------------------------------------------------------
/seata-order-service/src/main/java/com/jourwon/springcloud/service/StorageService.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.service;
2 |
3 | import com.jourwon.springcloud.pojo.Result;
4 | import org.springframework.cloud.openfeign.FeignClient;
5 | import org.springframework.web.bind.annotation.GetMapping;
6 | import org.springframework.web.bind.annotation.RequestParam;
7 |
8 | @FeignClient(value = "seata-storage-service")
9 | public interface StorageService {
10 |
11 | /**
12 | * 扣减库存
13 | */
14 | @GetMapping(value = "/storage/decrease")
15 | Result decrease(@RequestParam("productId") Long productId, @RequestParam("count") Integer count);
16 | }
17 |
--------------------------------------------------------------------------------
/seata-order-service/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8180
3 |
4 | spring:
5 | application:
6 | name: seata-order-service
7 | cloud:
8 | alibaba:
9 | seata:
10 | tx-service-group: my_test_tx_group
11 | nacos:
12 | discovery:
13 | server-addr: localhost:8848
14 | datasource:
15 | driver-class-name: com.mysql.cj.jdbc.Driver
16 | url: jdbc:mysql://localhost:3306/seata-order?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&allowMultiQueries=true&useSSL=false&tinyInt1isBit=false&serverTimezone=GMT%2B8
17 | username: root
18 | password: root
19 |
20 | feign:
21 | hystrix:
22 | enabled: true
23 |
24 | logging:
25 | level:
26 | io:
27 | seata: info
28 |
29 | mybatis:
30 | mapper-locations: classpath:mapper/*.xml
31 |
--------------------------------------------------------------------------------
/seata-order-service/src/main/resources/order.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE `order` (
2 | `id` bigint(11) NOT NULL AUTO_INCREMENT,
3 | `user_id` bigint(11) DEFAULT NULL COMMENT '用户id',
4 | `product_id` bigint(11) DEFAULT NULL COMMENT '产品id',
5 | `count` int(11) DEFAULT NULL COMMENT '数量',
6 | `money` decimal(11,0) DEFAULT NULL COMMENT '金额',
7 | PRIMARY KEY (`id`)
8 | ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
9 |
10 | ALTER TABLE `order` ADD COLUMN `status` int(1) DEFAULT NULL COMMENT '订单状态:0:创建中;1:已完结' AFTER `money` ;
11 |
12 |
13 |
--------------------------------------------------------------------------------
/seata-order-service/src/test/java/com/jourwon/springcloud/SeataOrderServiceApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class SeataOrderServiceApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/seata-storage-service/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/seata-storage-service/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/seata-storage-service/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/seata-storage-service/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/seata-storage-service/src/main/java/com/jourwon/springcloud/SeataStorageServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.mybatis.spring.annotation.MapperScan;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
7 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
8 | import org.springframework.cloud.openfeign.EnableFeignClients;
9 |
10 | @EnableFeignClients
11 | @EnableDiscoveryClient
12 | @MapperScan(basePackages = {"com.jourwon.springcloud.mapper"})
13 | @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
14 | public class SeataStorageServiceApplication {
15 |
16 | public static void main(String[] args) {
17 | SpringApplication.run(SeataStorageServiceApplication.class, args);
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/seata-storage-service/src/main/java/com/jourwon/springcloud/controller/StorageController.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.controller;
2 |
3 |
4 | import com.jourwon.springcloud.pojo.Result;
5 | import com.jourwon.springcloud.service.StorageService;
6 | import org.springframework.beans.factory.annotation.Autowired;
7 | import org.springframework.web.bind.annotation.RequestMapping;
8 | import org.springframework.web.bind.annotation.RestController;
9 |
10 | @RestController
11 | @RequestMapping("/storage")
12 | public class StorageController {
13 |
14 | @Autowired
15 | private StorageService storageService;
16 |
17 | /**
18 | * 扣减库存
19 | */
20 | @RequestMapping("/decrease")
21 | public Result decrease(Long productId, Integer count) {
22 | storageService.decrease(productId, count);
23 | return new Result("扣减库存成功!",200);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/seata-storage-service/src/main/java/com/jourwon/springcloud/mapper/StorageMapper.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.mapper;
2 |
3 | import org.apache.ibatis.annotations.Param;
4 | import org.springframework.stereotype.Repository;
5 |
6 | @Repository
7 | public interface StorageMapper {
8 |
9 | /**
10 | * 扣减库存
11 | */
12 | void decrease(@Param("id") Long productId, @Param("ct") Integer count);
13 | }
14 |
--------------------------------------------------------------------------------
/seata-storage-service/src/main/java/com/jourwon/springcloud/pojo/Storage.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.pojo;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class Storage {
7 |
8 | private Long id;
9 |
10 | /**
11 | * 产品id
12 | */
13 | private Long productId;
14 |
15 | /**
16 | * 总库存
17 | */
18 | private Integer total;
19 |
20 | /**
21 | * 已用库存
22 | */
23 | private Integer used;
24 |
25 | /**
26 | * 剩余库存
27 | */
28 | private Integer residue;
29 | }
30 |
--------------------------------------------------------------------------------
/seata-storage-service/src/main/java/com/jourwon/springcloud/service/StorageService.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.service;
2 |
3 |
4 | public interface StorageService {
5 | /**
6 | * 扣减库存
7 | */
8 | void decrease(Long productId, Integer count);
9 | }
10 |
--------------------------------------------------------------------------------
/seata-storage-service/src/main/java/com/jourwon/springcloud/service/impl/StorageServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.service.impl;
2 |
3 | import com.jourwon.springcloud.mapper.StorageMapper;
4 | import com.jourwon.springcloud.service.StorageService;
5 | import org.slf4j.Logger;
6 | import org.slf4j.LoggerFactory;
7 | import org.springframework.beans.factory.annotation.Autowired;
8 | import org.springframework.stereotype.Service;
9 |
10 |
11 | @Service
12 | public class StorageServiceImpl implements StorageService {
13 |
14 | private static final Logger LOGGER = LoggerFactory.getLogger(StorageServiceImpl.class);
15 |
16 | @Autowired
17 | private StorageMapper storageMapper;
18 |
19 | /**
20 | * 扣减库存
21 | */
22 | @Override
23 | public void decrease(Long productId, Integer count) {
24 | LOGGER.info("------->storage-service中扣减库存开始");
25 | storageMapper.decrease(productId,count);
26 | LOGGER.info("------->storage-service中扣减库存结束");
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/seata-storage-service/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8181
3 |
4 | spring:
5 | application:
6 | name: seata-storage-service
7 | cloud:
8 | alibaba:
9 | seata:
10 | tx-service-group: my_test_tx_group
11 | nacos:
12 | discovery:
13 | server-addr: localhost:8848
14 | datasource:
15 | driver-class-name: com.mysql.cj.jdbc.Driver
16 | url: jdbc:mysql://localhost:3306/seata-storage?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&allowMultiQueries=true&useSSL=false&tinyInt1isBit=false&serverTimezone=GMT%2B8
17 | username: root
18 | password: root
19 |
20 | logging:
21 | level:
22 | io:
23 | seata: info
24 |
25 | mybatis:
26 | mapper-locations: classpath:mapper/*.xml
27 |
--------------------------------------------------------------------------------
/seata-storage-service/src/main/resources/mapper/StorageMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | UPDATE storage
15 | SET used = used + #{ct},
16 | residue = residue - #{ct}
17 | WHERE product_id = #{id}
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/seata-storage-service/src/main/resources/storage.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE `storage` (
2 | `id` bigint(11) NOT NULL AUTO_INCREMENT,
3 | `product_id` bigint(11) DEFAULT NULL COMMENT '产品id',
4 | `total` int(11) DEFAULT NULL COMMENT '总库存',
5 | `used` int(11) DEFAULT NULL COMMENT '已用库存',
6 | `residue` int(11) DEFAULT NULL COMMENT '剩余库存',
7 | PRIMARY KEY (`id`)
8 | ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
9 |
10 | INSERT INTO `seat-storage`.`storage` (`id`, `product_id`, `total`, `used`, `residue`) VALUES ('1', '1', '100', '0', '100');
11 |
--------------------------------------------------------------------------------
/seata-storage-service/src/test/java/com/jourwon/springcloud/SeataStorageServiceApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class SeataStorageServiceApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/sentinel-service/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/sentinel-service/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/sentinel-service/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/sentinel-service/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/sentinel-service/src/main/java/com/jourwon/springcloud/SentinelServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.openfeign.EnableFeignClients;
7 |
8 | /**
9 | * Description:
10 | *
11 | * @author JourWon
12 | * @date 2019/12/25 9:37
13 | */
14 | @EnableFeignClients
15 | @EnableDiscoveryClient
16 | @SpringBootApplication
17 | public class SentinelServiceApplication {
18 |
19 | public static void main(String[] args) {
20 | SpringApplication.run(SentinelServiceApplication.class, args);
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/sentinel-service/src/main/java/com/jourwon/springcloud/config/RibbonConfig.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.config;
2 |
3 | import com.alibaba.cloud.sentinel.annotation.SentinelRestTemplate;
4 | import org.springframework.cloud.client.loadbalancer.LoadBalanced;
5 | import org.springframework.context.annotation.Bean;
6 | import org.springframework.context.annotation.Configuration;
7 | import org.springframework.web.client.RestTemplate;
8 |
9 | /**
10 | * Description:
11 | *
12 | * @author JourWon
13 | * @date 2019/12/25 10:10
14 | */
15 | @Configuration
16 | public class RibbonConfig {
17 |
18 | @Bean
19 | @LoadBalanced
20 | @SentinelRestTemplate
21 | public RestTemplate restTemplate() {
22 | return new RestTemplate();
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/sentinel-service/src/main/java/com/jourwon/springcloud/handler/CustomBlockHandler.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.handler;
2 |
3 | import com.alibaba.csp.sentinel.slots.block.BlockException;
4 | import com.jourwon.springcloud.pojo.Result;
5 |
6 | /**
7 | * Description:
8 | *
9 | * @author JourWon
10 | * @date 2019/12/25 9:40
11 | */
12 | public class CustomBlockHandler {
13 |
14 | public Result handleException(BlockException exception) {
15 | return new Result("自定义限流信息", 200);
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/sentinel-service/src/main/java/com/jourwon/springcloud/pojo/User.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.pojo;
2 |
3 | /**
4 | * Description:用户
5 | *
6 | * @author JourWon
7 | * @date 2019/12/18 14:00
8 | */
9 | public class User {
10 |
11 | private Long id;
12 | private String username;
13 | private String password;
14 |
15 | public User() {
16 | }
17 |
18 | public User(Long id, String username, String password) {
19 | this.id = id;
20 | this.username = username;
21 | this.password = password;
22 | }
23 |
24 | public Long getId() {
25 | return id;
26 | }
27 |
28 | public void setId(Long id) {
29 | this.id = id;
30 | }
31 |
32 | public String getUsername() {
33 | return username;
34 | }
35 |
36 | public void setUsername(String username) {
37 | this.username = username;
38 | }
39 |
40 | public String getPassword() {
41 | return password;
42 | }
43 |
44 | public void setPassword(String password) {
45 | this.password = password;
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/sentinel-service/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8401
3 |
4 | spring:
5 | application:
6 | name: sentinel-service
7 | cloud:
8 | nacos:
9 | # 配置Nacos地址
10 | server-addr: http://localhost:8848
11 | sentinel:
12 | transport:
13 | # 配置Sentinel dashborad地址
14 | dashboard: http://localhost:8080
15 | port: 8719
16 | datasource:
17 | ds1:
18 | nacos:
19 | server-addr: localhost:8848
20 | dataId: ${spring.application.name}-sentinel
21 | groupId: DEFAULT_GROUP
22 | data-type: json
23 | rule-type: flow
24 |
25 | service-url:
26 | user-service: http://nacos-user-service
27 |
28 |
29 | management:
30 | endpoints:
31 | web:
32 | exposure:
33 | include: '*'
34 |
35 | # 打开sentinel对feign的支持
36 | feign:
37 | sentinel:
38 | enabled: true
--------------------------------------------------------------------------------
/sentinel-service/src/test/java/com/jourwon/springcloud/SentinelServiceApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class SentinelServiceApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/springcloud-learning.iml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/turbine-service/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/turbine-service/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/turbine-service/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/turbine-service/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/turbine-service/src/main/java/com/jourwon/springcloud/TurbineServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.netflix.turbine.EnableTurbine;
7 |
8 | /**
9 | * Description:
10 | *
11 | * @author JourWon
12 | * @date 2019/12/20 17:06
13 | */
14 | @EnableTurbine
15 | @EnableDiscoveryClient
16 | @SpringBootApplication
17 | public class TurbineServiceApplication {
18 |
19 | public static void main(String[] args) {
20 | SpringApplication.run(TurbineServiceApplication.class, args);
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/turbine-service/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8601
3 |
4 | spring:
5 | application:
6 | name: turbine-service
7 |
8 | eureka:
9 | client:
10 | register-with-eureka: true
11 | fetch-registry: true
12 | service-url:
13 | defaultZone: http://localhost:8001/eureka/
14 |
15 | turbine:
16 | # 指定需要收集信息的服务名称
17 | app-config: hystrix-service
18 | # 指定服务所属集群
19 | cluster-name-expression: new String('default')
20 | # 以主机名和端口号区分服务
21 | combine-host-port: true
22 |
--------------------------------------------------------------------------------
/turbine-service/src/test/java/com/jourwon/springcloud/TurbineServiceApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class TurbineServiceApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/user-service/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/user-service/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/user-service/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/user-service/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/jourwon/springcloud/UserServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | /**
8 | * Description:
9 | *
10 | * @author JourWon
11 | * @date 2019/12/18 14:39
12 | */
13 | @EnableDiscoveryClient
14 | @SpringBootApplication
15 | public class UserServiceApplication {
16 |
17 | public static void main(String[] args) {
18 | SpringApplication.run(UserServiceApplication.class, args);
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/jourwon/springcloud/pojo/User.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.pojo;
2 |
3 | /**
4 | * Description:用户
5 | *
6 | * @author JourWon
7 | * @date 2019/12/18 14:00
8 | */
9 | public class User {
10 |
11 | private Long id;
12 | private String username;
13 | private String password;
14 |
15 | public User() {
16 | }
17 |
18 | public User(Long id, String username, String password) {
19 | this.id = id;
20 | this.username = username;
21 | this.password = password;
22 | }
23 |
24 | public Long getId() {
25 | return id;
26 | }
27 |
28 | public void setId(Long id) {
29 | this.id = id;
30 | }
31 |
32 | public String getUsername() {
33 | return username;
34 | }
35 |
36 | public void setUsername(String username) {
37 | this.username = username;
38 | }
39 |
40 | public String getPassword() {
41 | return password;
42 | }
43 |
44 | public void setPassword(String password) {
45 | this.password = password;
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/user-service/src/main/java/com/jourwon/springcloud/service/UserService.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud.service;
2 |
3 | import com.jourwon.springcloud.pojo.User;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * Description:
9 | *
10 | * @author JourWon
11 | * @date 2019/12/18 14:06
12 | */
13 | public interface UserService {
14 |
15 | void insert(User user);
16 |
17 | User getUser(Long id);
18 |
19 | void update(User user);
20 |
21 | void delete(Long id);
22 |
23 | User getByUsername(String username);
24 |
25 | List listUsersByIds(List ids);
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/user-service/src/main/resources/application-replica.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8202
3 |
4 | spring:
5 | application:
6 | name: user-service
7 |
8 | eureka:
9 | client:
10 | register-with-eureka: true
11 | fetch-registry: true
12 | service-url:
13 | defaultZone: http://localhost:8001/eureka/
--------------------------------------------------------------------------------
/user-service/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8201
3 |
4 | spring:
5 | application:
6 | name: user-service
7 | # zipkin:
8 | # base-url: http://localhost:9411
9 | # #设置Sleuth的抽样收集概率
10 | # sleuth:
11 | # sampler:
12 | # probability: 0.1
13 |
14 | eureka:
15 | client:
16 | register-with-eureka: true
17 | fetch-registry: true
18 | service-url:
19 | defaultZone: http://localhost:8001/eureka/
--------------------------------------------------------------------------------
/user-service/src/test/java/com/jourwon/springcloud/UserServiceApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class UserServiceApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/zuul-proxy/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**
5 | !**/src/test/**
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 |
30 | ### VS Code ###
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/zuul-proxy/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JourWon/springcloud-learning/447e9f3f964267196fe2c83f032a66e3c1b593e2/zuul-proxy/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/zuul-proxy/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
3 |
--------------------------------------------------------------------------------
/zuul-proxy/src/main/java/com/jourwon/springcloud/ZuulProxyApplication.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
7 |
8 | /**
9 | * Description:
10 | *
11 | * @author JourWon
12 | * @date 2019/12/21 9:38
13 | */
14 | @EnableZuulProxy
15 | @EnableDiscoveryClient
16 | @SpringBootApplication
17 | public class ZuulProxyApplication {
18 |
19 | public static void main(String[] args) {
20 | SpringApplication.run(ZuulProxyApplication.class, args);
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/zuul-proxy/src/test/java/com/jourwon/springcloud/ZuulProxyApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.jourwon.springcloud;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class ZuulProxyApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------