├── .gitignore ├── README.md ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── src ├── main ├── java │ └── com │ │ └── example │ │ └── stock │ │ ├── StockApplication.java │ │ ├── domain │ │ └── Stock.java │ │ ├── facade │ │ ├── LettuceLockStockFacade.java │ │ ├── NamedLockStockFacade.java │ │ ├── OptimisticLockStockFacade.java │ │ └── RedissonLockStockFacade.java │ │ ├── repository │ │ ├── LockRepository.java │ │ ├── RedisLockRepository.java │ │ └── StockRepository.java │ │ └── service │ │ ├── OptimisticLockStockService.java │ │ ├── PessimisticLockStockService.java │ │ └── StockService.java └── resources │ └── application.yml └── test └── java └── com └── example └── stock ├── StockApplicationTests.java ├── facade ├── LettuceLockStockFacadeTest.java ├── NamedLockStockFacadeTest.java ├── OptimisticLockStockFacadeTest.java └── RedissonLockStockFacadeTest.java └── service └── StockServiceTest.java /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/.gitignore -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # stock-example 2 | [인프런강의 - 재고시스템으로 알아보는 동시성이슈 해결방법 소스입니다.](https://inf.run/Jhu5) 3 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/gradlew -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/gradlew.bat -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'stock' 2 | -------------------------------------------------------------------------------- /src/main/java/com/example/stock/StockApplication.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/src/main/java/com/example/stock/StockApplication.java -------------------------------------------------------------------------------- /src/main/java/com/example/stock/domain/Stock.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/src/main/java/com/example/stock/domain/Stock.java -------------------------------------------------------------------------------- /src/main/java/com/example/stock/facade/LettuceLockStockFacade.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/src/main/java/com/example/stock/facade/LettuceLockStockFacade.java -------------------------------------------------------------------------------- /src/main/java/com/example/stock/facade/NamedLockStockFacade.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/src/main/java/com/example/stock/facade/NamedLockStockFacade.java -------------------------------------------------------------------------------- /src/main/java/com/example/stock/facade/OptimisticLockStockFacade.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/src/main/java/com/example/stock/facade/OptimisticLockStockFacade.java -------------------------------------------------------------------------------- /src/main/java/com/example/stock/facade/RedissonLockStockFacade.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/src/main/java/com/example/stock/facade/RedissonLockStockFacade.java -------------------------------------------------------------------------------- /src/main/java/com/example/stock/repository/LockRepository.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/src/main/java/com/example/stock/repository/LockRepository.java -------------------------------------------------------------------------------- /src/main/java/com/example/stock/repository/RedisLockRepository.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/src/main/java/com/example/stock/repository/RedisLockRepository.java -------------------------------------------------------------------------------- /src/main/java/com/example/stock/repository/StockRepository.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/src/main/java/com/example/stock/repository/StockRepository.java -------------------------------------------------------------------------------- /src/main/java/com/example/stock/service/OptimisticLockStockService.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/src/main/java/com/example/stock/service/OptimisticLockStockService.java -------------------------------------------------------------------------------- /src/main/java/com/example/stock/service/PessimisticLockStockService.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/src/main/java/com/example/stock/service/PessimisticLockStockService.java -------------------------------------------------------------------------------- /src/main/java/com/example/stock/service/StockService.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/src/main/java/com/example/stock/service/StockService.java -------------------------------------------------------------------------------- /src/main/resources/application.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/src/main/resources/application.yml -------------------------------------------------------------------------------- /src/test/java/com/example/stock/StockApplicationTests.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/src/test/java/com/example/stock/StockApplicationTests.java -------------------------------------------------------------------------------- /src/test/java/com/example/stock/facade/LettuceLockStockFacadeTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/src/test/java/com/example/stock/facade/LettuceLockStockFacadeTest.java -------------------------------------------------------------------------------- /src/test/java/com/example/stock/facade/NamedLockStockFacadeTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/src/test/java/com/example/stock/facade/NamedLockStockFacadeTest.java -------------------------------------------------------------------------------- /src/test/java/com/example/stock/facade/OptimisticLockStockFacadeTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/src/test/java/com/example/stock/facade/OptimisticLockStockFacadeTest.java -------------------------------------------------------------------------------- /src/test/java/com/example/stock/facade/RedissonLockStockFacadeTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/src/test/java/com/example/stock/facade/RedissonLockStockFacadeTest.java -------------------------------------------------------------------------------- /src/test/java/com/example/stock/service/StockServiceTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sangyongchoi/stock-example/HEAD/src/test/java/com/example/stock/service/StockServiceTest.java --------------------------------------------------------------------------------