├── .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 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 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 | --------------------------------------------------------------------------------