├── .gitignore ├── .travis.yml ├── README.md ├── amazon-s3 ├── README.md ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── java │ │ │ └── examples │ │ │ ├── AWSS3Service.java │ │ │ ├── MultipartUpload.java │ │ │ └── S3App.java │ └── resources │ │ ├── image.png │ │ ├── text.txt │ │ └── video.mov │ └── test │ └── java │ └── com │ └── java │ └── examples │ └── S3AppTest.java ├── assertj-unit-test ├── pom.xml └── src │ ├── main │ └── java │ │ ├── enums │ │ └── Gender.java │ │ └── model │ │ └── Person.java │ └── test │ ├── java │ └── com │ │ └── java │ │ └── examples │ │ ├── AssertJStyleTest.java │ │ ├── AssertJTest.java │ │ └── JUnitStyleTest.java │ └── resources │ └── logback.xml ├── custom-annotation ├── README.md ├── pom.xml └── src │ ├── main │ ├── java │ │ ├── com │ │ │ ├── hochulshin │ │ │ │ ├── FamilyBudget.java │ │ │ │ ├── FamilyMainExecutor.java │ │ │ │ └── FamilyMember.java │ │ │ ├── java │ │ │ │ └── examples │ │ │ │ │ ├── AnnotationExam01.java │ │ │ │ │ ├── AnnotationExam02.java │ │ │ │ │ ├── AnnotationHandler.java │ │ │ │ │ ├── InsertIntData.java │ │ │ │ │ ├── InsertStringData.java │ │ │ │ │ ├── annotationType │ │ │ │ │ ├── AnnotationPlacement.java │ │ │ │ │ ├── UsingMakerAnnotation.java │ │ │ │ │ ├── UsingMultiValueAnnotation.java │ │ │ │ │ ├── UsingSingleValueAnnotation.java │ │ │ │ │ └── annotation │ │ │ │ │ │ ├── MakerAnnotation.java │ │ │ │ │ │ ├── MultiValueAnnotation.java │ │ │ │ │ │ └── SingleValueAnnotation.java │ │ │ │ │ ├── repeatable │ │ │ │ │ ├── Color.java │ │ │ │ │ ├── Colors.java │ │ │ │ │ └── Shirt.java │ │ │ │ │ └── safeVarArgs │ │ │ │ │ ├── NonSafeVarArgsEx.java │ │ │ │ │ └── SafeVarArgsEx.java │ │ │ ├── jenkov │ │ │ │ └── tutorials │ │ │ │ │ ├── classAnnotation │ │ │ │ │ ├── ClassAnnotationExecutor.java │ │ │ │ │ ├── MyAnnotation.java │ │ │ │ │ └── TheClass.java │ │ │ │ │ ├── fieldAnnotation │ │ │ │ │ ├── FieldAnnotationExecutor.java │ │ │ │ │ ├── MyAnnotation.java │ │ │ │ │ └── TheClass.java │ │ │ │ │ ├── methodAnnotation │ │ │ │ │ ├── MethodAnnotationExecutor.java │ │ │ │ │ ├── MyAnnotation.java │ │ │ │ │ └── TheClass.java │ │ │ │ │ └── parameterAnnotation │ │ │ │ │ ├── MyAnnotation.java │ │ │ │ │ ├── ParameterAnnotationExecutor.java │ │ │ │ │ └── TheClass.java │ │ │ └── keyhole │ │ │ │ ├── AnnotatedClassProcessor.java │ │ │ │ ├── RunProcessor.java │ │ │ │ └── annotation │ │ │ │ ├── AnnotatedClass.java │ │ │ │ ├── AnnotatedOne.java │ │ │ │ ├── AnnotatedTwo.java │ │ │ │ ├── DoItLikeThat.java │ │ │ │ ├── DoItLikeThis.java │ │ │ │ ├── DoItWithAWhiffleBallBat.java │ │ │ │ └── WhiffleBallBat.java │ │ └── kr │ │ │ └── jdm │ │ │ ├── AnnotationDemo.java │ │ │ ├── MyContextContainer.java │ │ │ ├── MyObject.java │ │ │ └── StringInjector.java │ └── resources │ │ └── logback.xml │ └── test │ └── java │ └── com │ └── java │ └── examples │ ├── AnnotationHandlerTest.java │ └── repeatable │ └── ShirtTest.java ├── docker-cross-build ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ └── maven-wrapper.properties ├── Dockerfile ├── Makefile ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ └── main │ └── java │ └── kr │ └── pe │ └── advenoh │ └── App.java ├── ds-priority-queue ├── pom.xml └── src │ └── main │ └── java │ └── PriorityQueueTestDrive.java ├── google-guava ├── pom.xml └── src │ ├── main │ └── resources │ │ └── logback.xml │ └── test │ └── java │ └── com │ └── advenoh │ └── GuavaTest.java ├── httpclient ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ ├── concretepage │ │ │ ├── config │ │ │ │ ├── AppConfig.java │ │ │ │ └── WebAppInitializer.java │ │ │ ├── controller │ │ │ │ └── PersonController.java │ │ │ ├── entity │ │ │ │ ├── Address.java │ │ │ │ ├── Company.java │ │ │ │ └── Person.java │ │ │ └── util │ │ │ │ └── Utils.java │ │ │ └── examples │ │ │ └── RetryableHttpFetcher.java │ ├── resources │ │ └── logback.xml │ └── webapp │ │ └── WEB-INF │ │ └── web.xml │ └── test │ └── java │ └── com │ ├── concretepage │ └── controller │ │ └── HttpClientTest.java │ └── examples │ └── RetryableHttpFetcherTest.java ├── interface-callback ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── java │ │ │ └── examples │ │ │ ├── OnMaxNumberCb.java │ │ │ └── Sum.java │ └── resources │ │ └── logback.xml │ └── test │ └── java │ └── com │ └── java │ └── examples │ └── SumTest.java ├── java-class-loader ├── pom.xml └── src │ └── main │ └── java │ ├── com │ └── jenkov │ │ └── tutorials │ │ ├── customclassloader │ │ ├── AnInterface2.java │ │ ├── MyClassLoader.java │ │ └── MyObjectSuperClass.java │ │ └── loader │ │ ├── MainClass.java │ │ └── MyClass.java │ └── reflection │ └── MyObject.java ├── java-cloneable ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── java │ └── examples │ ├── CloneTest.java │ └── Mimic.java ├── java-collections ├── pom.xml └── src │ └── test │ └── java │ └── com │ └── advenoh │ └── CollectionTest.java ├── java-compare ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── advenoh │ │ │ └── model │ │ │ ├── ComparablePlayer.java │ │ │ └── ComparatorPlayer.java │ └── resources │ │ └── logback.xml │ └── test │ └── java │ └── com │ └── advenoh │ └── CompareTest.java ├── java-completablefuture ├── pom.xml └── src │ └── test │ └── java │ └── com │ └── java │ └── examples │ ├── CompletableFutureTest.java │ └── CoreThreadPoolIntegrationTest.java ├── java-concurrency-atomic ├── README.md ├── pom.xml └── src │ └── test │ └── java │ └── com │ └── advenoh │ ├── AtomicIntegerTest.java │ └── ConcurrentUtils.java ├── java-concurrency-countdownlatch ├── pom.xml └── src │ ├── main │ └── java │ │ └── com │ │ └── baeldung │ │ ├── BrokenWorker.java │ │ ├── CountdownLatchCountExample.java │ │ ├── CountdownLatchResetExample.java │ │ ├── WaitingWorker.java │ │ └── Worker.java │ └── test │ └── java │ └── com │ └── baeldung │ ├── CountdownLatchCountExampleUnitTest.java │ ├── CountdownLatchExampleIntegrationTest.java │ └── CountdownLatchResetExampleUnitTest.java ├── java-enum ├── pom.xml └── src │ └── main │ ├── java │ ├── EnumTest.java │ └── UserStatus.java │ └── resources │ └── logback.xml ├── java-eventlistener ├── pom.xml └── src │ └── main │ └── java │ └── com │ ├── java │ └── booleanchange │ │ └── BooleanChangeTest.java │ ├── javaexamples │ ├── EventAction.java │ ├── IEventListener.java │ └── MyListenerImpl.java │ └── javaworld │ ├── MyEventClass.java │ ├── MyEventClassListener.java │ ├── MyEventListener.java │ └── MyEventSource.java ├── java-file-io ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── java │ │ │ └── examples │ │ │ └── FileUtil.java │ └── resources │ │ └── logback.xml │ └── test │ ├── java │ └── com │ │ └── java │ │ └── examples │ │ ├── FileTest.java │ │ └── MultipartFileTest.java │ └── resources │ └── testfile │ ├── animation_clip.mp4 │ └── tmon_sample.jpg ├── java-final ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── java │ │ │ └── examples │ │ │ ├── Constants.java │ │ │ ├── finalclass │ │ │ ├── Dog.java │ │ │ └── Pet.java │ │ │ ├── finalfield │ │ │ ├── Cat.java │ │ │ └── Pet.java │ │ │ ├── finalmethod │ │ │ ├── Dog.java │ │ │ └── Pet.java │ │ │ └── finalvariable │ │ │ └── Pet.java │ └── resources │ │ └── logback.xml │ └── test │ └── java │ └── com │ └── java │ └── examples │ ├── finalclass │ └── PetTest.java │ ├── finalfield │ └── CatTest.java │ └── finalvariable │ └── PetTest.java ├── java-generics ├── pom.xml └── src │ └── main │ └── java │ ├── Animal.java │ ├── Song.java │ ├── ex2 │ ├── XmlGenerator.java │ └── XmlGeneratorImpl.java │ └── ex3 │ ├── Change.java │ ├── ChangeProcessingHandler.java │ ├── ChangeProcessingHandlerRefactored.java │ ├── ChangeProcessor.java │ ├── Code.java │ ├── CodeDelta.java │ ├── Growth.java │ ├── Improvement.java │ ├── Refactoring.java │ ├── UnsuportedChangeException.java │ └── Visitator.java ├── java-hashcode ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── java │ └── examples │ ├── javaex1 │ ├── ObjectCompareTestDriver.java │ └── UserSession.java │ └── javaex2 │ ├── Person.java │ └── TestDriver.java ├── java-iterator ├── pom.xml └── src │ └── main │ └── java │ └── IteratorTestDrive.java ├── java-method-chain ├── README.md ├── pom.xml └── src │ ├── main │ ├── java │ │ ├── complex │ │ │ ├── oneDepthAbstract │ │ │ │ ├── problem │ │ │ │ │ ├── MethodChain │ │ │ │ │ │ ├── Cat.java │ │ │ │ │ │ ├── Dog.java │ │ │ │ │ │ └── Pet.java │ │ │ │ │ └── NoMethodChain │ │ │ │ │ │ ├── Cat.java │ │ │ │ │ │ ├── Dog.java │ │ │ │ │ │ └── Pet.java │ │ │ │ └── solution │ │ │ │ │ ├── Cat.java │ │ │ │ │ ├── Dog.java │ │ │ │ │ └── Pet.java │ │ │ └── twoDepthAbstract │ │ │ │ ├── problem │ │ │ │ ├── BombayCat.java │ │ │ │ ├── BullDog.java │ │ │ │ ├── Cat.java │ │ │ │ ├── Dog.java │ │ │ │ ├── PersianCat.java │ │ │ │ ├── Pet.java │ │ │ │ └── SphynxCat.java │ │ │ │ └── solution │ │ │ │ ├── BombayCat.java │ │ │ │ ├── BullDog.java │ │ │ │ ├── Cat.java │ │ │ │ ├── Dog.java │ │ │ │ ├── IPet.java │ │ │ │ ├── PersianCat.java │ │ │ │ ├── Pet.java │ │ │ │ └── SphynxCat.java │ │ ├── others │ │ │ └── more │ │ │ │ ├── abstractAnimals │ │ │ │ ├── AnimalTest.java │ │ │ │ ├── BombayCat.java │ │ │ │ ├── BullDog.java │ │ │ │ ├── Cat.java │ │ │ │ ├── Dog.java │ │ │ │ └── Pet.java │ │ │ │ └── interfaceAnimal │ │ │ │ ├── AnimalTest.java │ │ │ │ ├── BombayCat.java │ │ │ │ ├── Cat.java │ │ │ │ ├── IPet.java │ │ │ │ └── Pet.java │ │ ├── simple │ │ │ ├── NoMethodChain │ │ │ │ └── Pet.java │ │ │ └── methodChain │ │ │ │ └── Pet.java │ │ └── solution │ │ │ ├── TruckProperties.java │ │ │ ├── VehicleProperties.java │ │ │ └── VehicleTest.java │ └── resources │ │ └── logback.xml │ └── test │ └── java │ ├── complex │ ├── oneDepthAbstract │ │ ├── problem │ │ │ ├── MethodChain │ │ │ │ └── CatTest.java │ │ │ └── NoMethodChain │ │ │ │ └── CatTest.java │ │ └── solution │ │ │ └── CatTest.java │ └── twoDepthAbstract │ │ ├── problem │ │ └── BombayCatTest.java │ │ └── solution │ │ └── BombayCatTest.java │ └── simple │ ├── NoMethodChain │ └── PetTest.java │ └── methodChain │ └── PetTest.java ├── java-optional ├── pom.xml └── src │ ├── main │ └── java │ │ └── com │ │ └── java │ │ └── examples │ │ ├── Address.java │ │ ├── Person.java │ │ └── PersonOpt.java │ └── test │ └── java │ └── com │ └── java │ └── examples │ ├── AddressTest.java │ └── PersonTest.java ├── java-prepost-interface ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── java │ │ │ └── examples │ │ │ ├── Constants.java │ │ │ └── FinalFieldChangeTest.java │ └── resources │ │ └── logback.xml │ └── test │ └── java │ └── com │ └── java │ └── examples │ └── PrePostTest.java ├── java-reflection ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── java │ └── examples │ └── reflection │ ├── Foo.java │ ├── Foo2.java │ ├── ReflectionTest1.java │ ├── ReflectionTest2.java │ ├── ReflectionTest3.java │ └── ReflectionTest4.java ├── java-ssl-keystore-import-test ├── README.md ├── pom.xml └── src │ └── test │ └── java │ └── com │ └── java │ └── examples │ └── JavaKeyStoreHttpsConnectionTest.java ├── java10 ├── pom.xml └── src │ └── test │ ├── java │ └── com │ │ └── java │ │ └── examples │ │ └── JEP286Test.java │ └── resources │ └── com │ └── java │ └── examples │ └── test.txt ├── java11 ├── pom.xml └── src │ └── test │ └── java │ └── com │ └── java │ └── examples │ └── JEPTest.java ├── java8-hashmap ├── pom.xml └── src │ ├── main │ └── resources │ │ └── logback.xml │ └── test │ └── java │ └── com │ └── advenoh │ └── MapTest.java ├── java8 ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── advenoh │ │ │ └── model │ │ │ ├── SchedulerType.java │ │ │ ├── Student.java │ │ │ └── vod │ │ │ ├── VodCollection.java │ │ │ └── enums │ │ │ └── VodCollectionType.java │ └── resources │ │ └── logback.xml │ └── test │ └── java │ └── com │ └── advenoh │ ├── compare │ └── ComparatorTest.java │ ├── streams │ ├── ConvertListToMapTest.java │ ├── IntStreamToListOfObjectTest.java │ ├── JavaPerfTest.java │ ├── MinMaxValueFromListTest.java │ ├── StreamFlatMapTest.java │ ├── StreamReduceTest.java │ └── StreamTest.java │ ├── structure │ └── PriorityQueueTest.java │ └── utils │ └── TestUtil.java ├── java9 ├── pom.xml └── src │ ├── main │ └── java │ │ └── com │ │ └── java │ │ └── examples │ │ └── App.java │ └── test │ └── java │ └── com │ └── java │ └── examples │ └── AppTest.java ├── jayway-jsonpath ├── README.md ├── pom.xml └── src │ ├── main │ └── java │ │ └── com │ │ └── java │ │ └── examples │ │ └── Person.java │ └── test │ ├── java │ └── com │ │ └── java │ │ └── examples │ │ └── JsonPathTest.java │ └── resources │ ├── person.json │ └── sample.json ├── json-jackson ├── README.md ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── java │ │ │ ├── circular │ │ │ ├── problem │ │ │ │ ├── Customer.java │ │ │ │ └── Order.java │ │ │ ├── solution1 │ │ │ │ ├── Customer.java │ │ │ │ ├── CustomerWithoutIdentityReference.java │ │ │ │ └── Order.java │ │ │ ├── solution2 │ │ │ │ ├── Customer.java │ │ │ │ └── Order.java │ │ │ └── solution3 │ │ │ │ ├── Customer.java │ │ │ │ └── Order.java │ │ │ └── examples │ │ │ ├── MyDto.java │ │ │ ├── MyDtoWithoutJsonInclude.java │ │ │ └── Person.java │ └── resources │ │ └── logback.xml │ └── test │ └── java │ └── com │ └── java │ ├── circular │ ├── problem │ │ └── CustomerTest.java │ ├── solution1 │ │ └── CustomerTest.java │ ├── solution2 │ │ └── CustomerTest.java │ └── solution3 │ │ └── CustomerTest.java │ └── examples │ ├── JacksonTest.java │ └── MyDtoTest.java ├── junit-mockito ├── pom.xml └── src │ ├── main │ └── java │ │ ├── com │ │ └── advenoh │ │ │ ├── AbstractClazz.java │ │ │ ├── AbstractClazz2.java │ │ │ ├── AbstractClazz3.java │ │ │ └── ChildClazz3.java │ │ ├── in28minutes │ │ ├── business │ │ │ └── TodoBusinessImpl.java │ │ ├── data │ │ │ ├── api │ │ │ │ └── TodoService.java │ │ │ └── stub │ │ │ │ └── TodoServiceStub.java │ │ ├── exception │ │ │ └── DifferentCurrenciesException.java │ │ ├── junit │ │ │ ├── business │ │ │ │ ├── ClientBO.java │ │ │ │ └── ClientBOImpl.java │ │ │ ├── helper │ │ │ │ └── StringHelper.java │ │ │ └── model │ │ │ │ ├── Amount.java │ │ │ │ ├── AmountImpl.java │ │ │ │ ├── Client.java │ │ │ │ ├── ClientImpl.java │ │ │ │ ├── ClientType.java │ │ │ │ ├── Collateral.java │ │ │ │ ├── CollateralImpl.java │ │ │ │ ├── CollateralType.java │ │ │ │ ├── Currency.java │ │ │ │ ├── Product.java │ │ │ │ ├── ProductImpl.java │ │ │ │ └── ProductType.java │ │ └── powermock │ │ │ ├── SystemUnderTest.java │ │ │ └── UtilityClass.java │ │ └── kr │ │ └── jdm │ │ ├── AuthDao.java │ │ ├── AuthService.java │ │ └── Person.java │ └── test │ └── java │ ├── com │ └── advenoh │ │ ├── AbstractClazzTest.java │ │ ├── AbstractMethodMocker.java │ │ ├── MockitoAnnotationTest.java │ │ ├── MockitoFeatureTest.java │ │ └── MockitoNoAnnotationTest.java │ ├── in28minutes │ ├── business │ │ ├── TodoBusinessImplMockitoInjectMocksTest.java │ │ ├── TodoBusinessImplMockitoRulesTest.java │ │ ├── TodoBusinessImplMockitoTest.java │ │ └── TodoBusinessImplStubTest.java │ ├── junit │ │ ├── business │ │ │ ├── ClientBOTest.java │ │ │ └── ClientBOTestRefactoredTest.java │ │ ├── helper │ │ │ ├── ArraysCompareTest.java │ │ │ ├── ArraysTest.java │ │ │ ├── QuickBeforeAfterTest.java │ │ │ ├── StringHelperParameterizedTest.java │ │ │ └── StringHelperTest.java │ │ └── suite │ │ │ └── DummyTestSuite.java │ ├── mockito │ │ ├── FirstMockitoTest.java │ │ ├── HamcrestMatcherTest.java │ │ ├── ListTest.java │ │ └── SpyTest.java │ └── powermock │ │ ├── PowerMockitoMockingConstructorTest.java │ │ ├── PowerMockitoMockingStaticMethodTest.java │ │ └── PowerMockitoTestingPrivateMethodTest.java │ └── kr │ └── jdm │ ├── PersonMockTest.java │ └── PersonMockitoRuleTest.java ├── junit-powermock ├── pom.xml └── src │ ├── main │ └── java │ │ └── com │ │ └── advenoh │ │ ├── BaseWorker.java │ │ ├── Child.java │ │ ├── MyAbstractClass.java │ │ ├── Parent.java │ │ ├── PhotoWorker.java │ │ ├── PowerMockDemo.java │ │ ├── examples │ │ ├── Article.java │ │ ├── ArticleDao.java │ │ ├── ConsoleLogger.java │ │ ├── IdGenerator.java │ │ ├── Logger.java │ │ ├── MyClass1.java │ │ ├── MyClass2.java │ │ ├── MyClass3.java │ │ └── WriteArticleServiceImpl.java │ │ ├── impl │ │ └── ChildImpl.java │ │ └── model │ │ ├── Photos.java │ │ └── User.java │ └── test │ └── java │ └── com │ └── advenoh │ ├── AbstractTest.java │ ├── MyAbstractClassTestUsingMock.java │ ├── MyAbstractClassTestUsingSpy.java │ ├── PersonMockTest.java │ ├── PhotoWorkerTest.java │ ├── PowerMockDemoTest.java │ └── examples │ ├── ArticleTest.java │ ├── MyClass1Test.java │ ├── MyClass2Test.java │ ├── MyClass3Test.java │ └── WriteArticleServiceImplTest.java ├── junit-rule ├── README.md ├── pom.xml └── src │ ├── main │ └── java │ │ └── com │ │ └── advenoh │ │ └── Person.java │ └── test │ ├── java │ └── com │ │ └── advenoh │ │ ├── CustomRuleTest.java │ │ ├── DisableSSLCertificateCheckRuleTest.java │ │ ├── ErrorCollectorRuleTest.java │ │ ├── ExpectedExceptionRuleTest.java │ │ ├── ExternalResourceClassRuleTest.java │ │ ├── ExternalResourceRuleTest.java │ │ ├── RuleChainTest.java │ │ ├── ScreenshotRule.java │ │ ├── ScreenshotRuleTest.java │ │ ├── Server.java │ │ ├── SpringContextRuleTest.java │ │ ├── TemporaryRuleTest.java │ │ ├── TestFirstServer.java │ │ ├── TestNameRuleTest.java │ │ ├── TestSecondServer.java │ │ ├── TestThirdServer.java │ │ ├── TestWatcherRuleTest.java │ │ ├── TimeoutRuleTest.java │ │ ├── VerifierRuleTest.java │ │ └── rules │ │ ├── DisableSSLCertificateCheckRule.java │ │ ├── LoggingRule.java │ │ └── SpringContextRule.java │ └── resources │ ├── test.txt │ └── testContext.xml ├── junit-unit-test ├── README.md ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── advenoh │ │ │ ├── AddService.java │ │ │ ├── SomeEntity.java │ │ │ └── SomeService.java │ └── resources │ │ └── logback.xml │ └── test │ └── java │ └── com │ └── advenoh │ ├── LogAssertTest.java │ ├── SomeEntityTest.java │ └── util │ └── LoggerTestUtil.java ├── log-commons-logging-log4j ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── logger │ │ └── example │ │ └── HelloWorld.java │ └── resources │ └── log4j.properties ├── log-slf4j-log4j ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── logger │ │ └── example │ │ └── HelloWorld.java │ └── resources │ └── log4j.properties ├── log-slf4j-logback ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── logger │ └── example │ └── HelloWorld.java ├── lombok ├── lombok.config ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── java │ │ └── examples │ │ ├── builder │ │ └── Car.java │ │ ├── contructor │ │ ├── PersonArgs.java │ │ └── PersonNoArgs.java │ │ ├── data │ │ └── Person.java │ │ ├── equalsandhashcode │ │ ├── Person.java │ │ └── PersonExclude.java │ │ ├── gettersetter │ │ ├── Person.java │ │ ├── PersonAccessLevel.java │ │ └── PersonSetterChain.java │ │ ├── log │ │ └── LombokLogger.java │ │ ├── model │ │ └── Person.java │ │ ├── nonnull │ │ ├── NonNullExample.java │ │ └── Something.java │ │ └── tostring │ │ ├── Person.java │ │ └── PersonExclude.java │ └── resources │ └── logback.xml ├── pom.xml ├── rabbitmq-amqp-client ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── rabbitmq │ │ ├── exchange │ │ ├── EmitLogHeader.java │ │ ├── ReceiveLogHeader.java │ │ ├── pubsub │ │ │ ├── EmitLog.java │ │ │ └── ReceiveLogs.java │ │ ├── routing │ │ │ ├── EmitLogDirect.java │ │ │ └── ReceiveLogsDirect.java │ │ └── topics │ │ │ ├── EmitLogTopic.java │ │ │ └── ReceiveLogsTopic.java │ │ ├── queue │ │ ├── simple │ │ │ ├── Recv.java │ │ │ └── Send.java │ │ └── task │ │ │ ├── NewTask.java │ │ │ └── Worker.java │ │ └── rpc │ │ ├── RPCClient.java │ │ └── RPCServer.java │ └── resources │ └── logback.xml ├── retry-exception-handler ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ ├── java │ │ │ └── examples │ │ │ │ ├── NetworkService.java │ │ │ │ └── SocketClient.java │ │ │ └── oracle │ │ │ └── retry │ │ │ ├── RetryOnException.java │ │ │ └── RetryTest.java │ └── resources │ │ └── logback.xml │ └── test │ └── java │ └── com │ ├── java │ └── examples │ │ ├── AppTest.java │ │ └── NetworkServiceTest.java │ └── oracle │ └── retry │ └── RetryOnExceptionTest.java ├── rmi-calculator ├── README.md ├── pom.xml └── src │ └── main │ └── java │ ├── Calculator.java │ ├── CalculatorClient.java │ ├── CalculatorImpl.java │ └── CalculatorServer.java ├── rmi-withoutregistry ├── README.md ├── pom.xml └── src │ └── main │ └── java │ ├── ReceiveMessageInterface.java │ ├── RmiClient.java │ └── RmiServer.java ├── scheduler-quartz-mysql ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── advenoh │ │ ├── QuartzScheduleServer.java │ │ ├── ScheduleJob.java │ │ └── TestJOB.java │ └── resources │ ├── logback.xml │ └── sql │ └── tables_mysql_innodb.sql ├── scheduler-quartz ├── pom.xml └── src │ └── main │ ├── java │ └── quartz │ │ ├── ILatch.java │ │ ├── Job │ │ └── MyJob.java │ │ ├── MySchedulerListener.java │ │ └── main │ │ ├── QuartzSchedulerCronTriggerExample.java │ │ ├── QuartzSchedulerExample.java │ │ └── QuartzSchedulerListenerExample.java │ └── resources │ └── logback.xml ├── scripts └── maintenance.py ├── simple-spring-memcached ├── README.md ├── pom.xml └── src │ ├── main │ ├── java │ │ └── sample │ │ │ ├── ProductSampleRun.java │ │ │ └── di │ │ │ ├── business │ │ │ ├── domain │ │ │ │ └── Product.java │ │ │ └── service │ │ │ │ ├── ProductService.java │ │ │ │ └── ProductServiceImpl.java │ │ │ ├── dataaccess │ │ │ ├── ProductDao.java │ │ │ └── ProductDaoImpl.java │ │ │ └── util │ │ │ └── MemcachedUtil.java │ └── resources │ │ ├── applicationContext-cache.xml │ │ ├── logback.xml │ │ └── simplesm-context.xml │ └── test │ └── java │ └── sample │ └── di │ ├── business │ └── service │ │ └── ProductServiceImplTest.java │ └── util │ └── MemcachedUtilTest.java ├── spring-annotation-order ├── pom.xml └── src │ ├── main │ └── java │ │ └── com │ │ └── advenoh │ │ ├── Average.java │ │ ├── Excellent.java │ │ ├── Good.java │ │ └── Rating.java │ └── test │ └── java │ └── com │ └── advenoh │ └── RatingRetrieverUnitTest.java ├── spring-async ├── pom.xml └── src │ └── main │ └── webapp │ ├── WEB-INF │ └── web.xml │ └── index.jsp ├── spring-di-annotation-javaconfig ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── spring │ │ └── examples │ │ ├── QuoteMain.java │ │ ├── model │ │ └── Quote.java │ │ ├── respository │ │ └── QuoteRepository.java │ │ ├── service │ │ ├── QuoteService.java │ │ └── QuoteServiceImpl.java │ │ └── spring │ │ └── AppConfig.java │ └── resources │ └── logback.xml ├── spring-di-annotation ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── spring │ │ └── examples │ │ ├── QuoteMain.java │ │ ├── model │ │ └── Quote.java │ │ ├── respository │ │ └── QuoteRepository.java │ │ └── service │ │ ├── QuoteService.java │ │ └── QuoteServiceImpl.java │ └── resources │ ├── logback.xml │ └── spring │ └── applicationContext.xml ├── spring-di-javaconfig ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── spring │ │ │ └── examples │ │ │ └── App.java │ └── resources │ │ └── logback.xml │ └── test │ └── java │ └── com │ └── spring │ └── examples │ └── AppTest.java ├── spring-messaging-websocket ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── advenoh │ │ ├── config │ │ ├── WebSocketChatConfig.java │ │ ├── WebSocketGreetingConfig.java │ │ └── WebSocketSendToUserConfig.java │ │ ├── controller │ │ ├── ChatController.java │ │ ├── GreetingController.java │ │ └── WebsocketSendToUserController.java │ │ └── model │ │ ├── Greeting.java │ │ ├── HelloMessage.java │ │ ├── Message.java │ │ └── OutputMessage.java │ ├── resources │ └── logback.xml │ └── webapp │ ├── WEB-INF │ ├── spring-core-config.xml │ ├── spring-mvc-config.xml │ └── web.xml │ └── resources │ ├── app.js │ ├── chat.html │ ├── greeting.html │ ├── main.css │ └── webSocketSendToUserApp.js ├── spring-model-attribute-method ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── logicbig │ │ │ └── example │ │ │ ├── MyViewConfig.java │ │ │ ├── MyWebConfig.java │ │ │ ├── MyWebInitializer.java │ │ │ └── UserController.java │ ├── resources │ │ └── logback.xml │ └── webapp │ │ ├── WEB-INF │ │ ├── views │ │ │ └── my-page.jsp │ │ └── web.xml │ │ └── index.jsp │ └── test │ └── java │ └── com │ └── logicbig │ └── example │ └── UserControllerTest.java ├── spring-model-attribute ├── README.md ├── pom.xml └── src │ └── main │ ├── main │ ├── java │ │ └── com │ │ │ └── logicbig │ │ │ └── example │ │ │ ├── MyViewConfig.java │ │ │ ├── MyWebConfig.java │ │ │ ├── MyWebInitializer.java │ │ │ ├── TestUserService.java │ │ │ ├── User.java │ │ │ ├── UserController.java │ │ │ └── UserService.java │ └── resources │ │ └── logback.xml │ ├── test │ └── java │ │ └── com │ │ └── logicbig │ │ └── example │ │ └── UserControllerTest.java │ └── webapp │ ├── WEB-INF │ └── web.xml │ └── index.jsp ├── spring-mvc-exception-journaldev ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── journaldev │ │ └── spring │ │ ├── controllers │ │ ├── EmployeeController.java │ │ └── GlobalExceptionHandler.java │ │ ├── exceptions │ │ └── EmployeeNotFoundException.java │ │ ├── model │ │ ├── Employee.java │ │ └── ExceptionJSONInfo.java │ │ └── resolver │ │ └── MySimpleMappingExceptionResolver.java │ ├── resources │ └── logback.xml │ └── webapp │ ├── WEB-INF │ ├── spring │ │ ├── root-context.xml │ │ └── spring.xml │ ├── views │ │ ├── database_error.jsp │ │ ├── error.jsp │ │ ├── generic_error.jsp │ │ └── home.jsp │ └── web.xml │ └── resources │ └── 404.jsp ├── spring-mvc-hello-world ├── README.md ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── mkyong │ │ └── helloworld │ │ ├── service │ │ └── HelloWorldService.java │ │ └── web │ │ └── WelcomeController.java │ ├── resources │ └── logback.xml │ └── webapp │ ├── WEB-INF │ ├── spring-core-config.xml │ ├── spring-mvc-config.xml │ ├── views │ │ └── jsp │ │ │ └── index.jsp │ └── web.xml │ └── resources │ └── core │ ├── css │ ├── bootstrap.min.css │ └── hello.css │ └── js │ ├── bootstrap.min.js │ └── hello.js ├── spring-mvc-javaconfig-commons-fileupload-ajax ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── spring │ │ └── examples │ │ ├── config │ │ ├── MyWebAppInitializer.java │ │ └── WebConfig.java │ │ └── controller │ │ └── FileUploadController.java │ ├── resources │ └── logback.xml │ └── webapp │ └── WEB-INF │ ├── views │ └── fileUploadForm.jsp │ └── web.xml ├── spring-mvc-javaconfig-fileupload-form ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── spring │ │ └── examples │ │ ├── config │ │ ├── MyWebAppInitializer.java │ │ └── WebConfig.java │ │ └── controller │ │ └── FileUploadController.java │ ├── resources │ └── logback.xml │ └── webapp │ └── WEB-INF │ └── views │ └── fileUploadForm.jsp ├── spring-mvc-mybatis ├── README.md ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── mybatis │ │ └── sample │ │ ├── constance │ │ └── DaoConst.java │ │ ├── controller │ │ └── CodeController.java │ │ ├── dao │ │ ├── CodeDAO.java │ │ └── impl │ │ │ └── CodeDAOImpl.java │ │ ├── service │ │ ├── CodeService.java │ │ └── impl │ │ │ └── CodeServiceImpl.java │ │ └── vo │ │ └── CodeVO.java │ ├── resources │ ├── config │ │ ├── mybatis │ │ │ └── mybatis-config.xml │ │ └── spring │ │ │ ├── context-datasource.xml │ │ │ ├── context-mapper.xml │ │ │ └── db.properties │ ├── insert_data.sql │ ├── log4j.xml │ ├── mapper │ │ └── code │ │ │ └── code_mapper.xml │ └── sql.ddl │ └── webapp │ └── WEB-INF │ ├── spring │ ├── appServlet │ │ └── servlet-context.xml │ └── root-context.xml │ ├── views │ └── result.jsp │ └── web.xml ├── spring-mvc-unit-test ├── README.md ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── spring │ │ │ └── example │ │ │ ├── controller │ │ │ └── QuoteRestController.java │ │ │ ├── model │ │ │ └── Quote.java │ │ │ ├── service │ │ │ └── QuoteService.java │ │ │ ├── spring │ │ │ └── config │ │ │ │ ├── AppConfig.java │ │ │ │ └── AppInitializer.java │ │ │ └── util │ │ │ └── AutoGenerateId.java │ ├── resources │ │ ├── applicationContext-cache.xml │ │ └── logback.xml │ └── webapp │ │ ├── WEB-INF │ │ └── web.xml │ │ └── index.jsp │ └── test │ └── java │ └── com │ └── spring │ └── example │ ├── controller │ └── QuoteRestControllerTest.java │ └── util │ └── AutoGenerateIdTest.java ├── spring-mvc-xml-fileupload ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── spring │ │ └── examples │ │ ├── controller │ │ ├── Constants.java │ │ └── FileUploadController.java │ │ ├── model │ │ └── MediaVO.java │ │ └── servlet │ │ └── FileUploadListener.java │ ├── resources │ └── logback.xml │ └── webapp │ └── WEB-INF │ ├── spring-core-config.xml │ ├── spring-mvc-config.xml │ ├── views │ └── jsp │ │ └── fileUploadForm.jsp │ └── web.xml ├── spring-mvc-xml-mybatis ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── example │ │ ├── controller │ │ └── HomeController.java │ │ ├── dao │ │ ├── MemberDAO.java │ │ └── MemberDAOImpl.java │ │ ├── dto │ │ └── MemberVO.java │ │ └── service │ │ ├── MemberService.java │ │ └── MemberServiceImpl.java │ ├── resources │ ├── db.properties │ ├── log4j.xml │ ├── logback.xml │ ├── mappers │ │ └── memberMapper.xml │ ├── mybatis-config.xml │ └── mybatis │ │ ├── insert_data.sql │ │ └── sql.ddl │ └── webapp │ └── WEB-INF │ ├── spring │ ├── appServlet │ │ └── servlet-context.xml │ └── root-context.xml │ ├── views │ └── home.jsp │ └── web.xml ├── spring-mybatis-dao ├── pom.xml └── src │ ├── main │ ├── java │ │ ├── controller │ │ │ └── QuoteRestController.java │ │ ├── model │ │ │ └── Quote.java │ │ ├── repository │ │ │ ├── QuoteDao.java │ │ │ └── QuoteRepository.java │ │ └── service │ │ │ ├── QuoteService.java │ │ │ └── impl │ │ │ └── QuoteServiceImpl.java │ ├── resources │ │ └── logback.xml │ └── webapp │ │ ├── WEB-INF │ │ └── web.xml │ │ └── index.jsp │ └── test │ └── java │ └── controller │ └── QuoteRestControllerTest.java ├── spring-mybatis-mapper ├── pom.xml └── src │ └── main │ └── webapp │ ├── WEB-INF │ └── web.xml │ └── index.jsp ├── spring-mybatis-sqlsession-dao-support ├── pom.xml └── src │ └── main │ └── webapp │ ├── WEB-INF │ └── web.xml │ └── index.jsp ├── spring-mybatis-sqlsession-template ├── pom.xml └── src │ └── main │ └── webapp │ ├── WEB-INF │ └── web.xml │ └── index.jsp ├── spring-poi-excel-download ├── pom.xml └── src │ ├── main │ ├── java │ │ └── controller │ │ │ └── ExcelController.java │ ├── resources │ │ └── logback.xml │ └── webapp │ │ ├── WEB-INF │ │ └── web.xml │ │ └── index.jsp │ └── test │ └── java │ └── controller │ └── ExcelControllerTest.java ├── spring-rabbitmq-javaconfig ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── advenoh │ │ │ ├── config │ │ │ └── RabbitMQConfig.java │ │ │ └── queue │ │ │ └── simple │ │ │ ├── Receiver.java │ │ │ └── Sender.java │ └── resources │ │ ├── application.properties │ │ └── logback.xml │ └── test │ └── java │ └── com │ └── advenoh │ └── RabbitMQTest.java ├── spring-rabbitmq-xml ├── README.md ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── advenoh │ │ │ └── queue │ │ │ ├── nonspring │ │ │ ├── Consumer.java │ │ │ └── Producer.java │ │ │ └── simple │ │ │ ├── Receiver.java │ │ │ ├── Sender.java │ │ │ └── TutorialListener.java │ └── resources │ │ ├── application.properties │ │ ├── logback.xml │ │ └── spring-context.xml │ └── test │ └── java │ └── com │ └── advenoh │ └── SimpleSendAndReceiveTest.java ├── spring-resttemplate ├── README.md ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── concretepage │ │ │ ├── config │ │ │ ├── AppConfig.java │ │ │ └── WebAppInitializer.java │ │ │ ├── controller │ │ │ └── PersonController.java │ │ │ └── entity │ │ │ ├── Address.java │ │ │ ├── Company.java │ │ │ └── Person.java │ ├── resources │ │ └── logback.xml │ └── webapp │ │ └── WEB-INF │ │ └── web.xml │ └── test │ └── java │ └── com │ └── concretepage │ └── controller │ └── RestTemplateTest.java ├── spring-websocket-stomp ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── concretepage │ │ ├── config │ │ ├── AppWebConfig.java │ │ └── AppWebSocketConfig.java │ │ ├── controller │ │ └── WebSocketController.java │ │ ├── initializer │ │ └── WebAppInitializer.java │ │ └── vo │ │ ├── CalcInput.java │ │ └── Result.java │ └── webapp │ ├── WEB-INF │ └── web.xml │ ├── js │ ├── sockjs-0.3.4.js │ └── stomp.js │ └── jsp │ └── start.jsp ├── springboot-data-jpa-h2 ├── README.md ├── pom.xml └── src │ └── main │ ├── java │ └── kr │ │ └── pe │ │ └── advenoh │ │ ├── JpaH2Application.java │ │ ├── controller │ │ └── BookController.java │ │ ├── model │ │ └── Book.java │ │ ├── repository │ │ └── BookRepository.java │ │ └── spring │ │ └── config │ │ └── H2ServerConfig.java │ └── resources │ ├── application.properties.old │ ├── application.yml │ └── data.sql ├── springboot-exception-handler ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── main │ ├── java │ │ └── kr │ │ │ └── pe │ │ │ └── advenoh │ │ │ ├── ExceptionHandlerApplication.java │ │ │ ├── controller │ │ │ └── StudentController.java │ │ │ ├── exception │ │ │ ├── ApiException.java │ │ │ ├── ErrorResponse.java │ │ │ ├── ExceptionCode.java │ │ │ ├── GlobalExceptionHandler.java │ │ │ └── StudentExceptionCode.java │ │ │ ├── model │ │ │ ├── audit │ │ │ │ └── DateAudit.java │ │ │ ├── dto │ │ │ │ ├── StudentRequestDto.java │ │ │ │ └── StudentResponseDto.java │ │ │ └── entity │ │ │ │ └── Student.java │ │ │ ├── repository │ │ │ └── StudentRepository.java │ │ │ ├── service │ │ │ └── StudentService.java │ │ │ └── spring │ │ │ └── config │ │ │ ├── AuditingConfig.java │ │ │ └── ModelMapperConfig.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── kr │ └── pe │ └── advenoh │ ├── ExceptionHandlerApplicationTests.java │ ├── controller │ └── StudentControllerTest.java │ └── utils │ └── TestConfig.java ├── springboot-handler-method-argument-resolver ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── mvnw ├── mvnw.cmd ├── pom.xml ├── rest │ └── controller.http └── src │ ├── main │ ├── java │ │ └── kr │ │ │ └── pe │ │ │ └── advenoh │ │ │ ├── HandlerMethodArgumentResolverApplication.java │ │ │ ├── resolver │ │ │ └── ClientIp.java │ │ │ ├── spring │ │ │ ├── config │ │ │ │ └── WebConfig.java │ │ │ └── resolver │ │ │ │ └── ClientIpArgumentResolver.java │ │ │ └── web │ │ │ └── IpController.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── kr │ └── pe │ └── advenoh │ ├── HandlerMethodArgumentResolverApplicationTests.java │ └── web │ └── IpControllerTest.java ├── springboot-jpa-many-to-many ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ └── main │ ├── java │ └── kr │ │ └── pe │ │ └── advenoh │ │ └── JpaManyToManyApplication.java │ └── resources │ └── application.properties ├── springboot-jpa-many-to-one-bidirectional ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── README.md ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── main │ ├── java │ │ └── kr │ │ │ └── pe │ │ │ └── advenoh │ │ │ ├── JpaDirectionalManyToOneApplication.java │ │ │ ├── controller │ │ │ ├── CommentController.java │ │ │ └── PostController.java │ │ │ ├── exception │ │ │ └── ResourceNotFoundException.java │ │ │ ├── model │ │ │ ├── Comment.java │ │ │ ├── Post.java │ │ │ └── audit │ │ │ │ └── DateAudit.java │ │ │ ├── repository │ │ │ ├── CommentRepository.java │ │ │ └── PostRepository.java │ │ │ ├── service │ │ │ └── BlogService.java │ │ │ └── spring │ │ │ └── config │ │ │ └── H2ServerConfig.java │ └── resources │ │ └── application.properties │ └── test │ ├── java │ └── kr │ │ └── pe │ │ └── advenoh │ │ └── repository │ │ ├── PostRepositoryIntegrationTest.java │ │ └── PostRepositoryTest.java │ └── resources │ └── application.properties ├── springboot-jpa-many-to-one-unidirectional ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── README.md ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── main │ ├── java │ │ └── kr │ │ │ └── pe │ │ │ └── advenoh │ │ │ ├── JpaUndirectionalManyToOneApplication.java │ │ │ ├── controller │ │ │ ├── CommentController.java │ │ │ └── PostController.java │ │ │ ├── exception │ │ │ └── ResourceNotFoundException.java │ │ │ ├── model │ │ │ ├── Comment.java │ │ │ ├── Post.java │ │ │ └── audit │ │ │ │ └── DateAudit.java │ │ │ ├── repository │ │ │ ├── CommentRepository.java │ │ │ └── PostRepository.java │ │ │ ├── service │ │ │ └── BlogService.java │ │ │ └── spring │ │ │ └── config │ │ │ └── H2ServerConfig.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── kr │ └── pe │ └── advenoh │ └── repository │ ├── CommentRepositoryTest.java │ ├── PostRepositoryIntegrationTest.java │ └── PostRepositoryTest.java ├── springboot-jpa-n1-problem ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── main │ ├── java │ │ └── kr │ │ │ └── pe │ │ │ └── advenoh │ │ │ ├── JpaN1ProblemApplication.java │ │ │ ├── config │ │ │ └── H2ServerConfig.java │ │ │ ├── controller │ │ │ ├── CommentController.java │ │ │ └── PostController.java │ │ │ ├── exception │ │ │ └── ResourceNotFoundException.java │ │ │ ├── model │ │ │ ├── Comment.java │ │ │ ├── Post.java │ │ │ └── audit │ │ │ │ └── DateAudit.java │ │ │ ├── repository │ │ │ ├── CommentRepository.java │ │ │ └── PostRepository.java │ │ │ └── service │ │ │ └── BlogService.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── kr │ └── pe │ └── advenoh │ ├── JpaN1ProblemApplicationTests.java │ └── repository │ └── PostRepositoryTest.java ├── springboot-jpa-one-to-one-bidirectional-target ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── HELP.md ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── main │ ├── java │ │ └── kr │ │ │ └── pe │ │ │ └── advenoh │ │ │ ├── JpaBidirectionalOneToOneApplication.java │ │ │ ├── controller │ │ │ └── UserController.java │ │ │ ├── exception │ │ │ └── ResourceNotFoundException.java │ │ │ ├── model │ │ │ ├── CellularPhone.java │ │ │ ├── User.java │ │ │ └── audit │ │ │ │ └── DateAudit.java │ │ │ ├── repository │ │ │ ├── PhoneRepository.java │ │ │ └── UserRepository.java │ │ │ ├── service │ │ │ └── UserService.java │ │ │ └── spring │ │ │ └── config │ │ │ └── H2ServerConfig.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── kr │ └── pe │ └── advenoh │ └── repository │ └── UserRepositoryTest.java ├── springboot-jpa-one-to-one-bidirectional ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── HELP.md ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── main │ ├── java │ │ └── kr │ │ │ └── pe │ │ │ └── advenoh │ │ │ ├── JpaBidirectionalOneToOneApplication.java │ │ │ ├── controller │ │ │ └── UserController.java │ │ │ ├── exception │ │ │ └── ResourceNotFoundException.java │ │ │ ├── model │ │ │ ├── CellularPhone.java │ │ │ ├── User.java │ │ │ └── audit │ │ │ │ └── DateAudit.java │ │ │ ├── repository │ │ │ ├── PhoneRepository.java │ │ │ └── UserRepository.java │ │ │ ├── service │ │ │ └── UserService.java │ │ │ └── spring │ │ │ └── config │ │ │ └── H2ServerConfig.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── kr │ └── pe │ └── advenoh │ └── repository │ └── UserRepositoryTest.java ├── springboot-jpa-one-to-one-unidirectional ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── HELP.md ├── mvnw ├── mvnw.cmd ├── pom.xml ├── src │ ├── main │ │ ├── java │ │ │ └── kr │ │ │ │ └── pe │ │ │ │ └── advenoh │ │ │ │ ├── JpaUndirectionalOneToOneApplication.java │ │ │ │ ├── controller │ │ │ │ └── UserController.java │ │ │ │ ├── exception │ │ │ │ └── ResourceNotFoundException.java │ │ │ │ ├── model │ │ │ │ ├── CellularPhone.java │ │ │ │ ├── User.java │ │ │ │ ├── audit │ │ │ │ │ └── DateAudit.java │ │ │ │ └── enums │ │ │ │ │ └── PhoneType.java │ │ │ │ ├── repository │ │ │ │ ├── PhoneRepository.java │ │ │ │ └── UserRepository.java │ │ │ │ ├── service │ │ │ │ └── UserService.java │ │ │ │ └── spring │ │ │ │ └── config │ │ │ │ └── H2ServerConfig.java │ │ └── resources │ │ │ └── application.properties │ └── test │ │ └── java │ │ └── kr │ │ └── pe │ │ └── advenoh │ │ └── repository │ │ └── UserRepositoryTest.java └── target │ ├── classes │ ├── application.properties │ └── kr │ │ └── pe │ │ └── advenoh │ │ └── SpringbootJpaOneToOneUnidirectionalApplication.class │ ├── maven-archiver │ └── pom.properties │ ├── maven-status │ └── maven-compiler-plugin │ │ ├── compile │ │ └── default-compile │ │ │ ├── createdFiles.lst │ │ │ └── inputFiles.lst │ │ └── testCompile │ │ └── default-testCompile │ │ ├── createdFiles.lst │ │ └── inputFiles.lst │ ├── springboot-jpa-one-to-one-unidirectional-0.0.1-SNAPSHOT.jar │ └── test-classes │ └── kr │ └── pe │ └── advenoh │ └── SpringbootJpaOneToOneUnidirectionalApplicationTests.class ├── springboot-jpa-pagination ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── main │ ├── java │ │ └── kr │ │ │ └── pe │ │ │ └── advenoh │ │ │ ├── JpaPaginationApplication.java │ │ │ ├── config │ │ │ └── H2ServerConfig.java │ │ │ ├── controller │ │ │ └── BookController.java │ │ │ ├── exception │ │ │ └── ResourceNotFoundException.java │ │ │ ├── model │ │ │ ├── Book.java │ │ │ └── audit │ │ │ │ └── DateAudit.java │ │ │ ├── repository │ │ │ └── BookRepository.java │ │ │ └── service │ │ │ └── BookService.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── kr │ └── pe │ └── advenoh │ └── JpaPaginationApplicationTests.java ├── springboot-jpa-repeated-columns-problem ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── main │ ├── java │ │ └── kr │ │ │ └── pe │ │ │ └── advenoh │ │ │ ├── JpaApplication.java │ │ │ ├── model │ │ │ ├── audit │ │ │ │ └── DateAudit.java │ │ │ └── entity │ │ │ │ ├── notworking │ │ │ │ ├── Video.java │ │ │ │ ├── VideoCollection.java │ │ │ │ └── VideoCollectionMapping.java │ │ │ │ └── working │ │ │ │ ├── Item.java │ │ │ │ ├── Order.java │ │ │ │ └── OrderItemMapping.java │ │ │ ├── repository │ │ │ ├── ItemRepository.java │ │ │ ├── OrderItemRepository.java │ │ │ ├── OrderRepository.java │ │ │ └── VodCollectionRepository.java │ │ │ └── spring │ │ │ └── AuditingConfig.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── kr │ └── pe │ └── advenoh │ ├── JpaApplicationTests.java │ └── repository │ └── OrderRepositoryTest.java ├── springboot-jpa-unit-test ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── main │ ├── java │ │ └── kr │ │ │ └── pe │ │ │ └── advenoh │ │ │ ├── JpaUnitTestApplication.java │ │ │ ├── controller │ │ │ └── BookController.java │ │ │ ├── model │ │ │ └── Book.java │ │ │ └── repository │ │ │ └── BookRepository.java │ └── resources │ │ └── application.properties │ └── test │ ├── java │ └── kr │ │ └── pe │ │ └── advenoh │ │ └── repository │ │ └── BookRepositoryTest.java │ └── resources │ └── application.properties ├── springboot-messaging-rabbitmq ├── pom.xml └── src │ ├── main │ ├── java │ │ └── hello │ │ │ ├── Application.java │ │ │ ├── Receiver.java │ │ │ └── Runner.java │ └── resources │ │ └── log4j.properties │ └── test │ └── java │ └── hello │ └── ApplicationTest.java ├── springboot-messaging-socketjs-stomp ├── pom.xml └── src │ ├── main │ ├── java │ │ └── hello │ │ │ ├── Application.java │ │ │ ├── Greeting.java │ │ │ ├── GreetingController.java │ │ │ ├── HelloMessage.java │ │ │ └── WebSocketConfig.java │ ├── resources │ │ └── static │ │ │ ├── app.js │ │ │ ├── index.html │ │ │ └── main.css │ └── webapp │ │ ├── WEB-INF │ │ └── web.xml │ │ └── index.jsp │ └── test │ └── java │ └── hello │ └── GreetingIntegrationTests.java ├── springboot-modelmapper ├── .gitignore ├── README.md ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── baeldung │ │ │ ├── SpringBootRestApplication.java │ │ │ ├── modelmapper │ │ │ ├── controller │ │ │ │ └── PostRestController.java │ │ │ ├── dto │ │ │ │ ├── PostDto.java │ │ │ │ └── UserDto.java │ │ │ ├── model │ │ │ │ ├── Post.java │ │ │ │ ├── Preference.java │ │ │ │ └── User.java │ │ │ ├── repository │ │ │ │ └── PostRepository.java │ │ │ └── service │ │ │ │ ├── IPostService.java │ │ │ │ ├── IUserService.java │ │ │ │ ├── PostService.java │ │ │ │ └── UserService.java │ │ │ ├── persistence │ │ │ ├── IOperations.java │ │ │ ├── dao │ │ │ │ └── IFooDao.java │ │ │ ├── model │ │ │ │ ├── Customer.java │ │ │ │ ├── Foo.java │ │ │ │ └── Order.java │ │ │ └── service │ │ │ │ ├── IFooService.java │ │ │ │ ├── common │ │ │ │ └── AbstractService.java │ │ │ │ └── impl │ │ │ │ └── FooService.java │ │ │ ├── services │ │ │ ├── CustomerService.java │ │ │ ├── CustomerServiceImpl.java │ │ │ ├── ExampleService.java │ │ │ ├── OrderService.java │ │ │ └── OrderServiceImpl.java │ │ │ ├── spring │ │ │ ├── PersistenceConfig.java │ │ │ └── WebConfig.java │ │ │ ├── transfer │ │ │ ├── LoginForm.java │ │ │ └── ResponseTransfer.java │ │ │ └── web │ │ │ ├── config │ │ │ ├── MyCustomErrorAttributes.java │ │ │ └── MyErrorController.java │ │ │ ├── controller │ │ │ ├── CustomerController.java │ │ │ ├── ExamplePostController.java │ │ │ ├── FaultyRestController.java │ │ │ ├── FooController.java │ │ │ ├── RootController.java │ │ │ └── students │ │ │ │ ├── Student.java │ │ │ │ ├── StudentController.java │ │ │ │ └── StudentService.java │ │ │ ├── error │ │ │ └── RestResponseEntityExceptionHandler.java │ │ │ ├── exception │ │ │ └── MyResourceNotFoundException.java │ │ │ ├── hateoas │ │ │ ├── event │ │ │ │ ├── PaginatedResultsRetrievedEvent.java │ │ │ │ ├── ResourceCreatedEvent.java │ │ │ │ └── SingleResourceRetrievedEvent.java │ │ │ └── listener │ │ │ │ ├── PaginatedResultsRetrievedDiscoverabilityListener.java │ │ │ │ ├── ResourceCreatedDiscoverabilityListener.java │ │ │ │ └── SingleResourceRetrievedDiscoverabilityListener.java │ │ │ └── util │ │ │ ├── LinkUtil.java │ │ │ └── RestPreconditions.java │ └── resources │ │ ├── WEB-INF │ │ ├── api-servlet.xml │ │ └── web.xml │ │ ├── application.properties │ │ ├── logback.xml │ │ ├── persistence-h2.properties │ │ └── persistence-mysql.properties │ └── test │ ├── java │ └── com │ │ └── baeldung │ │ ├── Consts.java │ │ ├── SpringContextIntegrationTest.java │ │ ├── common │ │ └── web │ │ │ ├── AbstractBasicLiveTest.java │ │ │ ├── AbstractDiscoverabilityLiveTest.java │ │ │ └── AbstractLiveTest.java │ │ ├── controllers │ │ ├── ExamplePostControllerRequestIntegrationTest.java │ │ └── ExamplePostControllerResponseIntegrationTest.java │ │ ├── modelmapper │ │ └── PostDtoUnitTest.java │ │ ├── rest │ │ ├── GitHubUser.java │ │ ├── GithubBasicLiveTest.java │ │ └── RetrieveUtil.java │ │ ├── spring │ │ └── ConfigIntegrationTest.java │ │ ├── springhateoas │ │ └── CustomerControllerIntegrationTest.java │ │ ├── test │ │ ├── IMarshaller.java │ │ ├── JacksonMarshaller.java │ │ ├── TestMarshallerFactory.java │ │ └── XStreamMarshaller.java │ │ └── web │ │ ├── FooControllerAppIntegrationTest.java │ │ ├── FooControllerCustomEtagIntegrationTest.java │ │ ├── FooControllerWebLayerIntegrationTest.java │ │ ├── FooDiscoverabilityLiveTest.java │ │ ├── FooLiveTest.java │ │ ├── FooPageableLiveTest.java │ │ ├── LiveTestSuiteLiveTest.java │ │ ├── StudentControllerIntegrationTest.java │ │ ├── error │ │ └── ErrorHandlingLiveTest.java │ │ └── util │ │ └── HTTPLinkHeaderUtil.java │ └── resources │ ├── foo_API_test.postman_collection.json │ └── logback.xml ├── springboot-quartz-cluster-reactjs ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── README.md ├── app │ ├── .gitignore │ ├── README.md │ ├── config │ │ ├── env.js │ │ ├── getHttpsConfig.js │ │ ├── jest │ │ │ ├── cssTransform.js │ │ │ └── fileTransform.js │ │ ├── modules.js │ │ ├── paths.js │ │ ├── pnpTs.js │ │ ├── webpack.config.js │ │ └── webpackDevServer.config.js │ ├── jsconfig.json │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ ├── manifest.json │ │ └── robots.txt │ ├── scripts │ │ ├── build.js │ │ ├── start.js │ │ └── test.js │ ├── src │ │ ├── components │ │ │ ├── App.js │ │ │ ├── common │ │ │ │ ├── Header │ │ │ │ │ ├── Header.js │ │ │ │ │ ├── Header.scss │ │ │ │ │ └── index.js │ │ │ │ └── PageTemplate │ │ │ │ │ ├── PageTemplate.js │ │ │ │ │ ├── PageTemplate.scss │ │ │ │ │ └── index.js │ │ │ ├── modal │ │ │ │ ├── AddJobModal │ │ │ │ │ ├── AddJobModal.js │ │ │ │ │ ├── AddJobModal.scss │ │ │ │ │ └── index.js │ │ │ │ └── DeleteJobModal │ │ │ │ │ ├── DeleteJobModal.js │ │ │ │ │ ├── DeleteJobModal.scss │ │ │ │ │ └── index.js │ │ │ ├── notification │ │ │ │ └── JobAlert │ │ │ │ │ ├── JobAlert.js │ │ │ │ │ └── index.js │ │ │ └── schedule │ │ │ │ ├── JobItem │ │ │ │ ├── JobItem.js │ │ │ │ ├── JobItem.scss │ │ │ │ └── index.js │ │ │ │ ├── JobList │ │ │ │ ├── JobList.js │ │ │ │ ├── JobList.scss │ │ │ │ └── index.js │ │ │ │ ├── Status │ │ │ │ ├── Status.js │ │ │ │ ├── Status.scss │ │ │ │ └── index.js │ │ │ │ └── StatusList │ │ │ │ ├── StatusList.js │ │ │ │ ├── StatusList.scss │ │ │ │ └── index.js │ │ ├── constants │ │ │ └── index.js │ │ ├── containers │ │ │ ├── common │ │ │ │ └── BaseContainer.js │ │ │ ├── job │ │ │ │ └── JobListContainer.js │ │ │ ├── modal │ │ │ │ ├── AddJobModalContainer.js │ │ │ │ └── DeleteJobModalContainer.js │ │ │ └── schedule │ │ │ │ └── ScheduleContainer.js │ │ ├── index.js │ │ ├── logo.svg │ │ ├── pages │ │ │ ├── ListPage.js │ │ │ ├── NotFoundPage.js │ │ │ └── index.js │ │ ├── serviceWorker.js │ │ ├── setupTests.js │ │ ├── store │ │ │ ├── configure.js │ │ │ ├── index.js │ │ │ └── modules │ │ │ │ ├── base.js │ │ │ │ ├── index.js │ │ │ │ ├── job.js │ │ │ │ └── list.js │ │ ├── styles │ │ │ └── base.scss │ │ └── utils │ │ │ └── api.js │ └── yarn.lock ├── mvnw ├── mvnw.cmd ├── pom.xml ├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── advenoh │ │ │ │ ├── QuartzApplication.java │ │ │ │ ├── controller │ │ │ │ ├── JobHistoryController.java │ │ │ │ └── ScheduleController.java │ │ │ │ ├── dto │ │ │ │ ├── history │ │ │ │ │ └── JobHistoryStatusResponse.java │ │ │ │ └── scheduler │ │ │ │ │ ├── ApiResponse.java │ │ │ │ │ ├── JobRequest.java │ │ │ │ │ ├── JobResponse.java │ │ │ │ │ └── StatusResponse.java │ │ │ │ ├── exception │ │ │ │ ├── ApiException.java │ │ │ │ ├── ExceptionCode.java │ │ │ │ └── ResourceNotFoundException.java │ │ │ │ ├── job │ │ │ │ ├── CronJob.java │ │ │ │ ├── CronJob2.java │ │ │ │ └── SimpleJob.java │ │ │ │ ├── model │ │ │ │ ├── JobHistory.java │ │ │ │ ├── JobStatus.java │ │ │ │ ├── JobType.java │ │ │ │ ├── StateType.java │ │ │ │ └── audit │ │ │ │ │ └── DateAudit.java │ │ │ │ ├── repository │ │ │ │ ├── JobHistoryRepository.java │ │ │ │ └── JobStatusRepository.java │ │ │ │ ├── service │ │ │ │ ├── JobHistoryService.java │ │ │ │ ├── JobsListener.java │ │ │ │ ├── ScheduleService.java │ │ │ │ ├── TriggersListener.java │ │ │ │ └── impl │ │ │ │ │ └── ScheduleServiceImpl.java │ │ │ │ ├── spring │ │ │ │ ├── DataLoader.java │ │ │ │ └── config │ │ │ │ │ ├── AutowiringSpringBeanJobFactory.java │ │ │ │ │ ├── JpaDatabaseConfig.java │ │ │ │ │ └── QuartzConfiguration.java │ │ │ │ └── utils │ │ │ │ ├── DateTimeUtils.java │ │ │ │ └── JobUtils.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── sql.sql │ │ │ └── tables_mysql_innodb.sql │ └── test │ │ └── java │ │ └── com │ │ └── advenoh │ │ ├── QuartzApplicationTests.java │ │ ├── controller │ │ ├── JobHistoryControllerTest.java │ │ └── ScheduleControllerTest.java │ │ ├── dto │ │ └── JobRequestTest.java │ │ ├── job │ │ ├── CronJobTest.java │ │ └── SimpleJobTest.java │ │ ├── repository │ │ └── JobHistoryLogRepositoryTest.java │ │ ├── service │ │ ├── JobHistoryServiceTest.java │ │ └── impl │ │ │ └── ScheduleServiceImplTest.java │ │ ├── spring │ │ └── config │ │ │ └── DataLoaderTest.java │ │ └── utils │ │ ├── JobUtilsTest.java │ │ └── TestUtils.java └── yarn.lock ├── springboot-quartz-cluster ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── README.md ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── advenoh │ │ │ ├── QuartzApplication.java │ │ │ ├── controller │ │ │ ├── JobHistoryController.java │ │ │ └── ScheduleController.java │ │ │ ├── dto │ │ │ ├── history │ │ │ │ └── JobHistoryStatusResponse.java │ │ │ └── scheduler │ │ │ │ ├── ApiResponse.java │ │ │ │ ├── JobRequest.java │ │ │ │ ├── JobResponse.java │ │ │ │ └── StatusResponse.java │ │ │ ├── exception │ │ │ └── ResourceNotFoundException.java │ │ │ ├── job │ │ │ ├── CronJob.java │ │ │ ├── CronJob2.java │ │ │ └── SimpleJob.java │ │ │ ├── model │ │ │ ├── JobHistory.java │ │ │ ├── JobStatus.java │ │ │ ├── JobType.java │ │ │ ├── StateType.java │ │ │ └── audit │ │ │ │ └── DateAudit.java │ │ │ ├── repository │ │ │ ├── JobHistoryRepository.java │ │ │ └── JobStatusRepository.java │ │ │ ├── service │ │ │ ├── JobHistoryService.java │ │ │ ├── JobsListener.java │ │ │ ├── ScheduleService.java │ │ │ ├── TriggersListener.java │ │ │ └── impl │ │ │ │ └── ScheduleServiceImpl.java │ │ │ ├── spring │ │ │ ├── DataLoader.java │ │ │ └── config │ │ │ │ ├── AutowiringSpringBeanJobFactory.java │ │ │ │ ├── JpaDatabaseConfig.java │ │ │ │ └── QuartzConfiguration.java │ │ │ └── utils │ │ │ ├── DateTimeUtils.java │ │ │ └── JobUtils.java │ └── resources │ │ ├── application.properties │ │ ├── sql.sql │ │ └── tables_mysql_innodb.sql │ └── test │ ├── java │ └── com │ │ └── advenoh │ │ ├── QuartzApplicationTests.java │ │ ├── controller │ │ ├── JobHistoryControllerTest.java │ │ └── ScheduleControllerTest.java │ │ ├── dto │ │ └── JobRequestTest.java │ │ ├── job │ │ ├── CronJobTest.java │ │ └── SimpleJobTest.java │ │ ├── repository │ │ └── JobHistoryLogRepositoryTest.java │ │ ├── service │ │ ├── JobHistoryServiceTest.java │ │ └── impl │ │ │ └── ScheduleServiceImplTest.java │ │ ├── spring │ │ └── config │ │ │ └── DataLoaderTest.java │ │ └── utils │ │ ├── JobUtilsTest.java │ │ └── TestUtils.java │ └── resources │ └── 1.json ├── springboot-quartz-in-memory ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── README.md ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── advenoh │ │ │ ├── QuartzApplication.java │ │ │ ├── controller │ │ │ └── ScheduleController.java │ │ │ ├── dto │ │ │ ├── ApiResponse.java │ │ │ ├── JobRequest.java │ │ │ ├── JobResponse.java │ │ │ └── JobStatusResponse.java │ │ │ ├── job │ │ │ ├── CronJob.java │ │ │ ├── CronJob2.java │ │ │ └── SimpleJob.java │ │ │ ├── service │ │ │ ├── JobsListener.java │ │ │ ├── ScheduleService.java │ │ │ ├── TriggersListener.java │ │ │ └── impl │ │ │ │ └── ScheduleServiceImpl.java │ │ │ ├── spring │ │ │ ├── DataLoader.java │ │ │ └── config │ │ │ │ ├── AutowiringSpringBeanJobFactory.java │ │ │ │ └── QuartzConfiguration.java │ │ │ └── utils │ │ │ ├── DateTimeUtils.java │ │ │ └── JobUtils.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── com │ └── advenoh │ ├── QuartzApplicationTests.java │ ├── controller │ └── ScheduleControllerTest.java │ ├── job │ ├── CronJobTest.java │ └── SimpleJobTest.java │ ├── service │ └── impl │ │ └── ScheduleServiceImplTest.java │ └── utils │ ├── JobUtilsTest.java │ └── TestUtils.java ├── springboot-quartz-reactjs-angularjs ├── README.md ├── frontend-app-angular │ ├── .gitignore │ ├── .typingsrc │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── app │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── app.routes.ts │ │ │ └── scheduler │ │ │ │ ├── response.code.constants.ts │ │ │ │ ├── scheduler.component.html │ │ │ │ ├── scheduler.component.ts │ │ │ │ ├── scheduler.model.ts │ │ │ │ ├── scheduler.module.ts │ │ │ │ ├── scheduler.routes.ts │ │ │ │ └── scheduler.service.ts │ │ ├── index.html │ │ ├── main.ts │ │ └── typings.d.ts │ ├── tsconfig.json │ ├── typings.json │ ├── typings │ │ ├── globals │ │ │ ├── bootstrap │ │ │ │ ├── index.d.ts │ │ │ │ └── typings.json │ │ │ └── core-js │ │ │ │ ├── index.d.ts │ │ │ │ └── typings.json │ │ └── index.d.ts │ └── webpack.config.js ├── frontend-app-reactjs │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ └── manifest.json │ ├── src │ │ ├── App.css │ │ ├── App.js │ │ ├── App.test.js │ │ ├── component │ │ │ ├── EditSchedulerComponent.js │ │ │ ├── ListSchedulersComponent.js │ │ │ ├── MenuComponent.js │ │ │ ├── SchedulerApp.js │ │ │ └── SchedulerComponent.js │ │ ├── constants.js │ │ ├── index.css │ │ ├── index.js │ │ ├── logo.svg │ │ ├── service │ │ │ └── SchedulerService.js │ │ └── serviceWorker.js │ └── yarn.lock ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── javabypatel │ │ │ └── demo │ │ │ ├── SpringBootQuartzAppApplication.java │ │ │ ├── config │ │ │ ├── AutowiringSpringBeanJobFactory.java │ │ │ ├── PersistableCronTriggerFactoryBean.java │ │ │ └── QuartzSchedulerConfig.java │ │ │ ├── controller │ │ │ └── JobController.java │ │ │ ├── dto │ │ │ └── ServerResponse.java │ │ │ ├── job │ │ │ ├── CronJob.java │ │ │ └── SimpleJob.java │ │ │ ├── service │ │ │ ├── JobService.java │ │ │ ├── JobServiceImpl.java │ │ │ ├── JobUtil.java │ │ │ ├── JobsListener.java │ │ │ └── TriggerListner.java │ │ │ └── util │ │ │ └── ServerResponseCode.java │ └── resources │ │ ├── application.properties │ │ ├── data-mysql.sql │ │ ├── data-postgresql.sql │ │ ├── logback.xml │ │ ├── quartz.properties │ │ ├── tables_mysql.sql │ │ └── tables_mysql_innodb.sql │ └── test │ └── java │ └── com │ └── example │ └── demo │ └── SpringBootQuartzAppApplicationTests.java ├── springboot-resttemplate ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── README.md ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── advenoh │ │ │ ├── SpringRestTemplateApplication.java │ │ │ ├── config │ │ │ └── WebConfig.java │ │ │ ├── controller │ │ │ └── EmployeeController.java │ │ │ ├── exception │ │ │ ├── EmployeeNotFoundException.java │ │ │ └── handler │ │ │ │ └── RestTemplateResponseErrorHandler.java │ │ │ ├── model │ │ │ ├── Address.java │ │ │ ├── Employee.java │ │ │ └── Gender.java │ │ │ └── util │ │ │ └── ApiCallResponseExtractor.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── com │ └── advenoh │ └── controller │ └── EmployeeControllerTest.java ├── springboot-security ├── pom.xml └── src │ ├── main │ ├── java │ │ └── hello │ │ │ ├── Application.java │ │ │ ├── MvcConfig.java │ │ │ └── WebSecurityConfig.java │ └── resources │ │ └── templates │ │ ├── hello.html │ │ ├── home.html │ │ └── login.html │ └── test │ └── java │ └── hello │ └── ApplicationTests.java ├── springboot-whitelabel-error-page ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── mvnw ├── mvnw.cmd ├── pom.xml ├── rest │ └── error.http └── src │ ├── main │ ├── java │ │ └── kr │ │ │ └── pe │ │ │ └── advenoh │ │ │ ├── SpringbootWhitelabelErrorPageApplication.java │ │ │ ├── controller │ │ │ ├── CustomErrorController.java │ │ │ ├── TestErrorController.java │ │ │ └── ViewMappingController.java │ │ │ └── spring │ │ │ └── config │ │ │ └── WebConfig.java │ └── resources │ │ ├── application.properties │ │ └── templates │ │ ├── error │ │ ├── 404.mustache │ │ └── 5xx.mustache │ │ ├── errors │ │ └── 404-custom.mustache │ │ └── index.mustache │ └── test │ └── java │ └── kr │ └── pe │ └── advenoh │ └── SpringbootWhiltelabelErrorPageApplicationTests.java ├── thread-callable ├── pom.xml └── src │ └── main │ └── java │ └── thread │ ├── CalcuRunner.java │ └── ThreadTestMain.java ├── util-stopwatchaverage ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── java │ └── examples │ └── util │ └── perf │ ├── StopWatchAverage.java │ └── examples │ └── HashsetTreeSetLinkedHashSet.java └── zencoder ├── pom.xml └── src └── test └── java └── com └── java └── examples └── AppTest.java /amazon-s3/README.md: -------------------------------------------------------------------------------- 1 | Amazon S3 2 | ====== 3 | Amazon S3 관련 코드 4 | 5 | ## 블로그 6 | - 아마존 S3 Bucket API 사용법 -------------------------------------------------------------------------------- /amazon-s3/src/main/resources/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/amazon-s3/src/main/resources/image.png -------------------------------------------------------------------------------- /amazon-s3/src/main/resources/text.txt: -------------------------------------------------------------------------------- 1 | this is a test 2 | -------------------------------------------------------------------------------- /amazon-s3/src/main/resources/video.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/amazon-s3/src/main/resources/video.mov -------------------------------------------------------------------------------- /assertj-unit-test/src/main/java/enums/Gender.java: -------------------------------------------------------------------------------- 1 | package enums; 2 | 3 | public enum Gender { 4 | FEMALE, 5 | MALE, 6 | } 7 | -------------------------------------------------------------------------------- /assertj-unit-test/src/main/java/model/Person.java: -------------------------------------------------------------------------------- 1 | package model; 2 | 3 | import enums.Gender; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | import lombok.ToString; 9 | 10 | @Setter 11 | @Getter 12 | @NoArgsConstructor 13 | @AllArgsConstructor 14 | @ToString 15 | public class Person { 16 | private String name; 17 | private Gender gender; 18 | } 19 | -------------------------------------------------------------------------------- /assertj-unit-test/src/test/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /custom-annotation/README.md: -------------------------------------------------------------------------------- 1 | References 2 | - https://jdm.kr/blog/216 3 | - http://tutorials.jenkov.com/java-reflection/annotations.html -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/hochulshin/FamilyBudget.java: -------------------------------------------------------------------------------- 1 | package com.hochulshin; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /* Annotation 선언 */ 9 | @Target(ElementType.METHOD) 10 | @Retention(RetentionPolicy.RUNTIME) 11 | public @interface FamilyBudget { 12 | String userRole() default "GUEST"; 13 | 14 | int budgetLimit() default 100; 15 | } 16 | -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/java/examples/InsertIntData.java: -------------------------------------------------------------------------------- 1 | package com.java.examples; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target(ElementType.FIELD) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface InsertIntData { 11 | int data() default 0; 12 | } 13 | 14 | 15 | -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/java/examples/InsertStringData.java: -------------------------------------------------------------------------------- 1 | package com.java.examples; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target(ElementType.FIELD) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface InsertStringData { 11 | String data() default "default"; 12 | } -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/java/examples/annotationType/AnnotationPlacement.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.annotationType; 2 | 3 | import com.java.examples.annotationType.annotation.MakerAnnotation; 4 | 5 | @MakerAnnotation 6 | public class AnnotationPlacement { 7 | 8 | @MakerAnnotation 9 | String field; 10 | 11 | @MakerAnnotation 12 | public void method1(@MakerAnnotation String str) { 13 | @MakerAnnotation 14 | String test; 15 | } 16 | } -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/java/examples/annotationType/UsingMakerAnnotation.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.annotationType; 2 | 3 | import com.java.examples.annotationType.annotation.MakerAnnotation; 4 | 5 | @MakerAnnotation 6 | public class UsingMakerAnnotation { 7 | } 8 | -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/java/examples/annotationType/UsingMultiValueAnnotation.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.annotationType; 2 | 3 | import com.java.examples.annotationType.annotation.MultiValueAnnotation; 4 | 5 | @MultiValueAnnotation(id = 2, name = "Hello", roles = {"admin", "users"}) 6 | public class UsingMultiValueAnnotation { 7 | 8 | @MultiValueAnnotation(id = 10) 9 | public void testMethod() { 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/java/examples/annotationType/UsingSingleValueAnnotation.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.annotationType; 2 | 3 | import com.java.examples.annotationType.annotation.SingleValueAnnotation; 4 | 5 | @SingleValueAnnotation(id = 1) 6 | public class UsingSingleValueAnnotation { 7 | } 8 | -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/java/examples/annotationType/annotation/MakerAnnotation.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.annotationType.annotation; 2 | 3 | public @interface MakerAnnotation { 4 | } 5 | -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/java/examples/annotationType/annotation/MultiValueAnnotation.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.annotationType.annotation; 2 | 3 | public @interface MultiValueAnnotation { 4 | int id(); 5 | 6 | String name() default "user"; 7 | 8 | String[] roles() default {"anonymous"}; 9 | } 10 | -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/java/examples/annotationType/annotation/SingleValueAnnotation.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.annotationType.annotation; 2 | 3 | public @interface SingleValueAnnotation { 4 | int id(); 5 | } 6 | -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/java/examples/repeatable/Color.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.repeatable; 2 | 3 | import java.lang.annotation.Repeatable; 4 | 5 | @Repeatable(Colors.class) 6 | public @interface Color { 7 | String name(); 8 | } 9 | -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/java/examples/repeatable/Colors.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.repeatable; 2 | 3 | import java.lang.annotation.Retention; 4 | import java.lang.annotation.RetentionPolicy; 5 | 6 | @Retention(RetentionPolicy.RUNTIME) 7 | public @interface Colors { 8 | Color[] value(); 9 | } 10 | -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/java/examples/repeatable/Shirt.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.repeatable; 2 | 3 | @Color(name = "red") 4 | @Color(name = "blue") 5 | @Color(name = "green") 6 | public class Shirt { 7 | } 8 | -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/jenkov/tutorials/classAnnotation/MyAnnotation.java: -------------------------------------------------------------------------------- 1 | package com.jenkov.tutorials.classAnnotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Retention(RetentionPolicy.RUNTIME) 9 | @Target(ElementType.TYPE) 10 | public @interface MyAnnotation { 11 | String name(); 12 | 13 | String value(); 14 | } -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/jenkov/tutorials/classAnnotation/TheClass.java: -------------------------------------------------------------------------------- 1 | package com.jenkov.tutorials.classAnnotation; 2 | 3 | @MyAnnotation(name = "someName", value = "Hello World") 4 | public class TheClass { 5 | } -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/jenkov/tutorials/fieldAnnotation/MyAnnotation.java: -------------------------------------------------------------------------------- 1 | package com.jenkov.tutorials.fieldAnnotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Retention(RetentionPolicy.RUNTIME) 9 | @Target(ElementType.FIELD) 10 | public @interface MyAnnotation { 11 | String name(); 12 | 13 | String value(); 14 | } -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/jenkov/tutorials/fieldAnnotation/TheClass.java: -------------------------------------------------------------------------------- 1 | package com.jenkov.tutorials.fieldAnnotation; 2 | 3 | public class TheClass { 4 | @MyAnnotation(name = "someName", value = "Hello World") 5 | public String myField = null; 6 | } -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/jenkov/tutorials/methodAnnotation/MyAnnotation.java: -------------------------------------------------------------------------------- 1 | package com.jenkov.tutorials.methodAnnotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Retention(RetentionPolicy.RUNTIME) 9 | @Target(ElementType.METHOD) 10 | public @interface MyAnnotation { 11 | String name(); 12 | 13 | String value() default "기본 값"; 14 | } -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/jenkov/tutorials/methodAnnotation/TheClass.java: -------------------------------------------------------------------------------- 1 | package com.jenkov.tutorials.methodAnnotation; 2 | 3 | public class TheClass { 4 | @MyAnnotation(name = "doThisMethod", value = "Hello World") 5 | public void doThis() { 6 | } 7 | 8 | @MyAnnotation(name = "doThatMethod") 9 | public void doThat() { 10 | } 11 | } -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/jenkov/tutorials/parameterAnnotation/MyAnnotation.java: -------------------------------------------------------------------------------- 1 | package com.jenkov.tutorials.parameterAnnotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Retention(RetentionPolicy.RUNTIME) 9 | @Target(ElementType.PARAMETER) 10 | public @interface MyAnnotation { 11 | String name(); 12 | 13 | String value(); 14 | } -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/jenkov/tutorials/parameterAnnotation/TheClass.java: -------------------------------------------------------------------------------- 1 | package com.jenkov.tutorials.parameterAnnotation; 2 | 3 | public class TheClass { 4 | public static void doSomethingElse( 5 | @MyAnnotation(name = "aName", value = "aValue") String parameter) { 6 | } 7 | } -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/keyhole/annotation/AnnotatedClass.java: -------------------------------------------------------------------------------- 1 | package com.keyhole.annotation; 2 | 3 | public interface AnnotatedClass { 4 | public void doWhateverItIs(); 5 | 6 | public void verifyIt(); 7 | 8 | } 9 | -------------------------------------------------------------------------------- /custom-annotation/src/main/java/com/keyhole/annotation/WhiffleBallBat.java: -------------------------------------------------------------------------------- 1 | package com.keyhole.annotation; 2 | 3 | public enum WhiffleBallBat { 4 | 5 | YELLOW_PLASTIC, 6 | BLACK_PLASTIC 7 | } 8 | -------------------------------------------------------------------------------- /docker-cross-build/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /docker-cross-build/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:8-jdk-alpine as build 2 | WORKDIR /app 3 | 4 | COPY mvnw . 5 | COPY .mvn .mvn 6 | COPY pom.xml . 7 | COPY src src 8 | 9 | RUN ./mvnw package -DskipTests 10 | 11 | ARG JAR_FILE=target/*.jar 12 | COPY ${JAR_FILE} app.jar 13 | 14 | FROM openjdk:8-jre-alpine 15 | WORKDIR /app 16 | COPY --from=build /app/app.jar /app 17 | CMD ["java","-jar","/app/app.jar"] 18 | -------------------------------------------------------------------------------- /docker-cross-build/Makefile: -------------------------------------------------------------------------------- 1 | REGISTRY := kenshin579 2 | APP := rasberrypi 3 | TAG := java-multi-arch-hello 4 | IMAGE := $(REGISTRY)/$(APP):$(TAG) 5 | 6 | .PHONY: docker-push 7 | docker-push: 8 | @docker buildx build \ 9 | --platform linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6 \ 10 | -t $(IMAGE) --push -f Dockerfile . 11 | -------------------------------------------------------------------------------- /docker-cross-build/src/main/java/kr/pe/advenoh/App.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh; 2 | 3 | /** 4 | * Hello world! 5 | */ 6 | public class App { 7 | public static void main(String[] args) { 8 | System.out.println("Hello from " + System.getProperty("os.arch") + " architecture"); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /google-guava/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /httpclient/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /interface-callback/src/main/java/com/java/examples/OnMaxNumberCb.java: -------------------------------------------------------------------------------- 1 | package com.java.examples; 2 | 3 | public interface OnMaxNumberCb { 4 | void onMaxNumber(int number, int exceed); 5 | } 6 | -------------------------------------------------------------------------------- /interface-callback/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /java-class-loader/src/main/java/com/jenkov/tutorials/customclassloader/AnInterface2.java: -------------------------------------------------------------------------------- 1 | package com.jenkov.tutorials.customclassloader; 2 | 3 | public interface AnInterface2 { 4 | } 5 | -------------------------------------------------------------------------------- /java-class-loader/src/main/java/com/jenkov/tutorials/customclassloader/MyObjectSuperClass.java: -------------------------------------------------------------------------------- 1 | package com.jenkov.tutorials.customclassloader; 2 | 3 | public class MyObjectSuperClass { 4 | } 5 | -------------------------------------------------------------------------------- /java-class-loader/src/main/java/com/jenkov/tutorials/loader/MyClass.java: -------------------------------------------------------------------------------- 1 | package com.jenkov.tutorials.loader; 2 | 3 | public class MyClass { 4 | } 5 | -------------------------------------------------------------------------------- /java-class-loader/src/main/java/reflection/MyObject.java: -------------------------------------------------------------------------------- 1 | package reflection; 2 | 3 | import com.jenkov.tutorials.customclassloader.AnInterface2; 4 | import com.jenkov.tutorials.customclassloader.MyObjectSuperClass; 5 | 6 | public class MyObject extends MyObjectSuperClass implements AnInterface2 { 7 | //... body of class ... override superclass methods 8 | // or implement interface methods 9 | } 10 | -------------------------------------------------------------------------------- /java-collections/src/test/java/com/advenoh/CollectionTest.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | import org.junit.Test; 4 | 5 | import java.util.ArrayList; 6 | import java.util.HashMap; 7 | import java.util.List; 8 | import java.util.Map; 9 | 10 | public class CollectionTest { 11 | @Test 12 | public void test_list() { 13 | List list = new ArrayList(); 14 | } 15 | 16 | @Test 17 | public void test_map() { 18 | Map map = new HashMap(); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /java-compare/src/main/java/com/advenoh/model/ComparablePlayer.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | @Getter 8 | @Setter 9 | @AllArgsConstructor 10 | public class ComparablePlayer implements Comparable { 11 | private String name; 12 | private int score; 13 | 14 | @Override 15 | public int compareTo(ComparablePlayer o) { 16 | return o.getScore() - this.getScore(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /java-compare/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /java-concurrency-atomic/README.md: -------------------------------------------------------------------------------- 1 | https://winterbe.com/posts/2015/05/22/java8-concurrency-tutorial-atomic-concurrent-map-examples/ -------------------------------------------------------------------------------- /java-enum/src/main/java/EnumTest.java: -------------------------------------------------------------------------------- 1 | 2 | public class EnumTest { 3 | public static void main(String[] args) { 4 | 5 | System.out.println(UserStatus.ACTIVE.getStatusCode()); 6 | 7 | } 8 | 9 | } 10 | -------------------------------------------------------------------------------- /java-enum/src/main/java/UserStatus.java: -------------------------------------------------------------------------------- 1 | public enum UserStatus { 2 | PENDING("P"), ACTIVE("A"), INACTIVE("I"), DELETED("D"); 3 | 4 | private String statusCode; 5 | 6 | private UserStatus(String s) { 7 | statusCode = s; 8 | } 9 | 10 | public String getStatusCode() { 11 | return statusCode; 12 | } 13 | } -------------------------------------------------------------------------------- /java-enum/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /java-eventlistener/src/main/java/com/javaexamples/IEventListener.java: -------------------------------------------------------------------------------- 1 | package com.javaexamples; 2 | 3 | public interface IEventListener { 4 | public void send(String msg); 5 | } 6 | -------------------------------------------------------------------------------- /java-eventlistener/src/main/java/com/javaexamples/MyListenerImpl.java: -------------------------------------------------------------------------------- 1 | package com.javaexamples; 2 | 3 | public class MyListenerImpl implements IEventListener { 4 | public void send(String msg) { 5 | System.out.println("sending " + msg); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /java-eventlistener/src/main/java/com/javaworld/MyEventClass.java: -------------------------------------------------------------------------------- 1 | package com.javaworld; 2 | 3 | public class MyEventClass extends java.util.EventObject { 4 | //here's the constructor 5 | public MyEventClass(Object source) { 6 | super(source); 7 | } 8 | } -------------------------------------------------------------------------------- /java-eventlistener/src/main/java/com/javaworld/MyEventClassListener.java: -------------------------------------------------------------------------------- 1 | package com.javaworld; 2 | 3 | import java.util.EventObject; 4 | 5 | public interface MyEventClassListener { 6 | public void handleMyEventClassEvent(EventObject e); 7 | } -------------------------------------------------------------------------------- /java-eventlistener/src/main/java/com/javaworld/MyEventListener.java: -------------------------------------------------------------------------------- 1 | package com.javaworld; 2 | 3 | import java.util.EventObject; 4 | 5 | public class MyEventListener implements MyEventClassListener { 6 | // ... code here 7 | 8 | //implement the required method(s) of the interface 9 | public void handleMyEventClassEvent(EventObject e) { 10 | // handle the event any way you see fit 11 | } 12 | } -------------------------------------------------------------------------------- /java-file-io/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /java-file-io/src/test/resources/testfile/animation_clip.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/java-file-io/src/test/resources/testfile/animation_clip.mp4 -------------------------------------------------------------------------------- /java-file-io/src/test/resources/testfile/tmon_sample.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/java-file-io/src/test/resources/testfile/tmon_sample.jpg -------------------------------------------------------------------------------- /java-final/src/main/java/com/java/examples/Constants.java: -------------------------------------------------------------------------------- 1 | package com.java.examples; 2 | 3 | public final class Constants { 4 | public static final int SIZE = 10; 5 | } 6 | 7 | //상속할 수 없음 8 | //public class SubConstants extends Constants { 9 | //} -------------------------------------------------------------------------------- /java-final/src/main/java/com/java/examples/finalclass/Dog.java: -------------------------------------------------------------------------------- 1 | //Pet 클래스가 final 클래스로 선언되어 상속할 수 없음 2 | //public class Dog extends Pet { 3 | //} 4 | -------------------------------------------------------------------------------- /java-final/src/main/java/com/java/examples/finalclass/Pet.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.finalclass; 2 | 3 | public final class Pet { 4 | private String name; 5 | 6 | public String getName() { 7 | return name; 8 | } 9 | 10 | public void setName(String name) { 11 | this.name = name; 12 | } 13 | 14 | @Override 15 | public String toString() { 16 | return "Pet{" + 17 | "name='" + name + '\'' + 18 | '}'; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /java-final/src/main/java/com/java/examples/finalfield/Pet.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.finalfield; 2 | 3 | public class Pet { 4 | public Pet() { 5 | System.out.println("super construtor : Pet"); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /java-final/src/main/java/com/java/examples/finalmethod/Dog.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.finalmethod; 2 | 3 | public class Dog extends Pet { 4 | //final로된 메서드는 override할수 없음 5 | // public void makeSound() { 6 | // } 7 | } 8 | -------------------------------------------------------------------------------- /java-final/src/main/java/com/java/examples/finalvariable/Pet.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.finalvariable; 2 | 3 | public class Pet { 4 | int weight; 5 | 6 | public void setWeight(final int weight) { 7 | // weight = 1; //final 인자는 메서드안에서 변경할 수 없음 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /java-final/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /java-final/src/test/java/com/java/examples/finalclass/PetTest.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.finalclass; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.assertEquals; 6 | 7 | public class PetTest { 8 | @Test 9 | public void test_클래스가_final_선언되어도_객체의_필드값은_변경가능하다() { 10 | String petName = "YoYo"; 11 | Pet pet = new Pet(); 12 | pet.setName(petName); 13 | assertEquals(petName, pet.getName()); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /java-generics/src/main/java/Animal.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ykoh on 2016. 1. 26.. 3 | */ 4 | public class Animal { 5 | } 6 | -------------------------------------------------------------------------------- /java-generics/src/main/java/ex2/XmlGenerator.java: -------------------------------------------------------------------------------- 1 | package ex2; 2 | 3 | public interface XmlGenerator { 4 | String getXml(T value); 5 | 6 | String setXml(T value); 7 | } 8 | -------------------------------------------------------------------------------- /java-generics/src/main/java/ex3/Change.java: -------------------------------------------------------------------------------- 1 | package ex3; 2 | 3 | public interface Change { 4 | void accept(Visitator visitator); 5 | } 6 | -------------------------------------------------------------------------------- /java-generics/src/main/java/ex3/ChangeProcessingHandlerRefactored.java: -------------------------------------------------------------------------------- 1 | package ex3; 2 | 3 | public class ChangeProcessingHandlerRefactored { 4 | public void triggerProcessingChangeOf(Code code, Change change) { 5 | verifyChangeOf(code, change); 6 | change.accept(new ChangeProcessor(code)); 7 | } 8 | 9 | private void verifyChangeOf(Code code, Change change) { 10 | 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /java-generics/src/main/java/ex3/Code.java: -------------------------------------------------------------------------------- 1 | package ex3; 2 | 3 | public class Code { 4 | } 5 | -------------------------------------------------------------------------------- /java-generics/src/main/java/ex3/CodeDelta.java: -------------------------------------------------------------------------------- 1 | package ex3; 2 | 3 | public class CodeDelta { 4 | } 5 | -------------------------------------------------------------------------------- /java-generics/src/main/java/ex3/Growth.java: -------------------------------------------------------------------------------- 1 | package ex3; 2 | 3 | public class Growth { 4 | } 5 | -------------------------------------------------------------------------------- /java-generics/src/main/java/ex3/Improvement.java: -------------------------------------------------------------------------------- 1 | package ex3; 2 | 3 | public class Improvement { 4 | } 5 | -------------------------------------------------------------------------------- /java-generics/src/main/java/ex3/Refactoring.java: -------------------------------------------------------------------------------- 1 | package ex3; 2 | 3 | public class Refactoring implements Change { 4 | @Override 5 | public void accept(Visitator visitator) { 6 | visitator.visit(this); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /java-generics/src/main/java/ex3/UnsuportedChangeException.java: -------------------------------------------------------------------------------- 1 | package ex3; 2 | 3 | public class UnsuportedChangeException extends Throwable { 4 | } 5 | -------------------------------------------------------------------------------- /java-generics/src/main/java/ex3/Visitator.java: -------------------------------------------------------------------------------- 1 | package ex3; 2 | 3 | public interface Visitator { 4 | void visit(Refactoring refactoring); 5 | 6 | void visit(Improvement improvement); 7 | 8 | void visit(Growth growth); 9 | } 10 | -------------------------------------------------------------------------------- /java-method-chain/README.md: -------------------------------------------------------------------------------- 1 | Method Chaing with Inheritance 2 | 3 | - https://www.andygibson.net/blog/article/implementing-chained-methods-in-subclasses/ 4 | - https://stackoverflow.com/questions/15054237/oop-in-java-class-inheritance-with-method-chaining 5 | - https://stackoverflow.com/questions/1069528/method-chaining-inheritance-don-t-play-well-together -------------------------------------------------------------------------------- /java-method-chain/src/main/java/complex/oneDepthAbstract/problem/MethodChain/Dog.java: -------------------------------------------------------------------------------- 1 | package complex.oneDepthAbstract.problem.MethodChain; 2 | 3 | public class Dog extends Pet { 4 | 5 | public void catchFrisbee() { 6 | System.out.println("I caught a frisbee!"); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /java-method-chain/src/main/java/complex/oneDepthAbstract/problem/NoMethodChain/Dog.java: -------------------------------------------------------------------------------- 1 | package complex.oneDepthAbstract.problem.NoMethodChain; 2 | 3 | public class Dog extends Pet { 4 | 5 | public void catchFrisbee() { 6 | System.out.println("I caught a frisbee!"); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /java-method-chain/src/main/java/complex/oneDepthAbstract/solution/Dog.java: -------------------------------------------------------------------------------- 1 | package complex.oneDepthAbstract.solution; 2 | 3 | public class Dog extends Pet { 4 | @Override 5 | protected Dog getThis() { 6 | return this; 7 | } 8 | 9 | public void catchFrisbee() { 10 | System.out.println("I caught a frisbee!"); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /java-method-chain/src/main/java/complex/twoDepthAbstract/problem/BombayCat.java: -------------------------------------------------------------------------------- 1 | package complex.twoDepthAbstract.problem; 2 | 3 | public class BombayCat extends Cat { 4 | 5 | public BombayCat() { 6 | this.setName("BombayCat"); 7 | } 8 | 9 | @Override 10 | protected BombayCat getThis() { 11 | return this; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /java-method-chain/src/main/java/complex/twoDepthAbstract/problem/BullDog.java: -------------------------------------------------------------------------------- 1 | package complex.twoDepthAbstract.problem; 2 | 3 | public class BullDog extends Dog { 4 | 5 | public BullDog() { 6 | this.setName("BullDog"); 7 | } 8 | 9 | @Override 10 | protected BullDog getThis() { 11 | return this; 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /java-method-chain/src/main/java/complex/twoDepthAbstract/problem/PersianCat.java: -------------------------------------------------------------------------------- 1 | package complex.twoDepthAbstract.problem; 2 | 3 | public class PersianCat extends Cat { 4 | 5 | public PersianCat() { 6 | this.setName("PersianCat"); 7 | } 8 | 9 | @Override 10 | protected PersianCat getThis() { 11 | return this; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /java-method-chain/src/main/java/complex/twoDepthAbstract/problem/SphynxCat.java: -------------------------------------------------------------------------------- 1 | package complex.twoDepthAbstract.problem; 2 | 3 | public class SphynxCat extends Cat { 4 | 5 | public SphynxCat() { 6 | this.setName("SphynxCat"); 7 | } 8 | 9 | @Override 10 | protected SphynxCat getThis() { 11 | return this; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /java-method-chain/src/main/java/complex/twoDepthAbstract/solution/BombayCat.java: -------------------------------------------------------------------------------- 1 | package complex.twoDepthAbstract.solution; 2 | 3 | public class BombayCat extends Cat { 4 | 5 | public BombayCat() { 6 | this.setName("BombayCat"); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /java-method-chain/src/main/java/complex/twoDepthAbstract/solution/BullDog.java: -------------------------------------------------------------------------------- 1 | package complex.twoDepthAbstract.solution; 2 | 3 | public class BullDog extends Dog { 4 | 5 | public BullDog() { 6 | this.setName("BullDog"); 7 | } 8 | } 9 | 10 | -------------------------------------------------------------------------------- /java-method-chain/src/main/java/complex/twoDepthAbstract/solution/IPet.java: -------------------------------------------------------------------------------- 1 | package complex.twoDepthAbstract.solution; 2 | 3 | public interface IPet { 4 | 5 | @SuppressWarnings("unchecked") 6 | default T getThis() { 7 | return (T) this; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /java-method-chain/src/main/java/complex/twoDepthAbstract/solution/PersianCat.java: -------------------------------------------------------------------------------- 1 | package complex.twoDepthAbstract.solution; 2 | 3 | public class PersianCat extends Cat { 4 | 5 | public PersianCat() { 6 | this.setName("PersianCat"); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /java-method-chain/src/main/java/complex/twoDepthAbstract/solution/SphynxCat.java: -------------------------------------------------------------------------------- 1 | package complex.twoDepthAbstract.solution; 2 | 3 | public class SphynxCat extends Cat { 4 | 5 | public SphynxCat() { 6 | this.setName("SphynxCat"); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /java-method-chain/src/main/java/others/more/abstractAnimals/BombayCat.java: -------------------------------------------------------------------------------- 1 | package others.more.abstractAnimals; 2 | 3 | public class BombayCat extends Cat { 4 | 5 | public BombayCat() { 6 | this.setName("BombayCat"); 7 | } 8 | 9 | @Override 10 | protected BombayCat getThis() { 11 | return this; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /java-method-chain/src/main/java/others/more/abstractAnimals/BullDog.java: -------------------------------------------------------------------------------- 1 | package others.more.abstractAnimals; 2 | 3 | public class BullDog extends Dog { 4 | 5 | public BullDog() { 6 | this.setName("BullDog"); 7 | } 8 | 9 | @Override 10 | protected BullDog getThis() { 11 | return this; 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /java-method-chain/src/main/java/others/more/interfaceAnimal/BombayCat.java: -------------------------------------------------------------------------------- 1 | package others.more.interfaceAnimal; 2 | 3 | public class BombayCat extends Cat { 4 | 5 | public BombayCat() { 6 | this.setName("BombayCat"); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /java-method-chain/src/main/java/others/more/interfaceAnimal/IPet.java: -------------------------------------------------------------------------------- 1 | package others.more.interfaceAnimal; 2 | 3 | public interface IPet { 4 | default T getThis() { 5 | return (T) this; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /java-method-chain/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /java-optional/src/test/java/com/java/examples/AddressTest.java: -------------------------------------------------------------------------------- 1 | package com.java.examples; 2 | 3 | import org.junit.Test; 4 | 5 | public class AddressTest { 6 | 7 | @Test 8 | public void name() { 9 | 10 | } 11 | } -------------------------------------------------------------------------------- /java-prepost-interface/src/main/java/com/java/examples/Constants.java: -------------------------------------------------------------------------------- 1 | package com.java.examples; 2 | 3 | public class Constants { 4 | public static final Integer SIZE = 10; 5 | 6 | public int getSize() { 7 | return SIZE; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /java-prepost-interface/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /java-reflection/src/main/java/com/java/examples/reflection/Foo.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.reflection; 2 | 3 | class Foo { 4 | public void print() { 5 | System.out.println("abc"); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /java-reflection/src/main/java/com/java/examples/reflection/Foo2.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.reflection; 2 | 3 | /** 4 | * Created by ykoh on 2014. 7. 19.. 5 | */ 6 | class Foo2 { 7 | String s; 8 | 9 | public Foo2() { 10 | } 11 | 12 | public Foo2(String s) { 13 | this.s = s; 14 | } 15 | 16 | public void print() { 17 | System.out.println(s); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /java-ssl-keystore-import-test/README.md: -------------------------------------------------------------------------------- 1 | Java SSL Keystore Import 2 | ====== 3 | Java SSL Keystore Import 관련 코드 4 | 5 | ## 블로그 6 | - 자바 keystore에 SSL 인증서 import 하기 -------------------------------------------------------------------------------- /java10/src/test/resources/com/java/examples/test.txt: -------------------------------------------------------------------------------- 1 | Some pregnancy tests are more sensitive than others and can accurately 2 | detect a pregnancy several days before a missed period. But after taking 3 | a home test, your excitement may turn to confusion as you notice a faint 4 | positive line. -------------------------------------------------------------------------------- /java8-hashmap/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /java8/src/main/java/com/advenoh/model/SchedulerType.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.model; 2 | 3 | public enum SchedulerType { 4 | ALL, 5 | LIVE_ID3, 6 | LIVE_SENDBIRD_STATS, 7 | LIVE_DEAL_PURCHASE, 8 | LIVE_METACOUNTER 9 | } 10 | -------------------------------------------------------------------------------- /java8/src/main/java/com/advenoh/model/Student.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.model; 2 | 3 | import lombok.Builder; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | import lombok.ToString; 7 | 8 | @Getter 9 | @Setter 10 | @ToString 11 | public class Student { 12 | private String name; 13 | private int age; 14 | 15 | @Builder 16 | public Student(String name, int age) { 17 | this.name = name; 18 | this.age = age; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /java8/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /java9/src/main/java/com/java/examples/App.java: -------------------------------------------------------------------------------- 1 | package com.java.examples; 2 | 3 | /** 4 | * Hello world! 5 | * 6 | */ 7 | public class App 8 | { 9 | public static void main( String[] args ) 10 | { 11 | System.out.println( "Hello World!" ); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /java9/src/test/java/com/java/examples/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.java.examples; 2 | 3 | import static org.junit.Assert.assertTrue; 4 | 5 | import org.junit.Test; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | { 12 | /** 13 | * Rigorous Test :-) 14 | */ 15 | @Test 16 | public void shouldAnswerWithTrue() 17 | { 18 | assertTrue( true ); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /jayway-jsonpath/README.md: -------------------------------------------------------------------------------- 1 | Jayway JsonPath 2 | ====== 3 | Jayway JsonPath 관련 코드 4 | 5 | ## 블로그 6 | - Java Jayway JsonPath 사용법 -------------------------------------------------------------------------------- /jayway-jsonpath/src/main/java/com/java/examples/Person.java: -------------------------------------------------------------------------------- 1 | package com.java.examples; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Person { 7 | String name; 8 | int age; 9 | } 10 | -------------------------------------------------------------------------------- /jayway-jsonpath/src/test/resources/person.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Frank Oh", 3 | "age": 26 4 | } -------------------------------------------------------------------------------- /json-jackson/README.md: -------------------------------------------------------------------------------- 1 | Json Jackson 2 | ====== 3 | Jackson library 관련 코드 4 | 5 | ## 블로그 6 | - Jackson에서 Infinite Recursion 이슈 해결방법 -------------------------------------------------------------------------------- /json-jackson/src/main/java/com/java/circular/problem/Customer.java: -------------------------------------------------------------------------------- 1 | package com.java.circular.problem; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import lombok.ToString; 6 | 7 | @Setter 8 | @Getter 9 | @ToString 10 | public class Customer { 11 | private int id; 12 | private String name; 13 | private Order order; 14 | } -------------------------------------------------------------------------------- /json-jackson/src/main/java/com/java/circular/problem/Order.java: -------------------------------------------------------------------------------- 1 | package com.java.circular.problem; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import lombok.ToString; 6 | 7 | import java.util.List; 8 | 9 | @Setter 10 | @Getter 11 | @ToString(exclude = "customer") 12 | public class Order { 13 | private int orderId; 14 | private List itemIds; 15 | private Customer customer; 16 | } -------------------------------------------------------------------------------- /json-jackson/src/main/java/com/java/circular/solution1/Order.java: -------------------------------------------------------------------------------- 1 | package com.java.circular.solution1; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import lombok.ToString; 6 | 7 | import java.util.List; 8 | 9 | @Setter 10 | @Getter 11 | @ToString(exclude = "customer") 12 | public class Order { 13 | private int orderId; 14 | private List itemIds; 15 | private Customer customer; 16 | } -------------------------------------------------------------------------------- /json-jackson/src/main/java/com/java/circular/solution2/Customer.java: -------------------------------------------------------------------------------- 1 | package com.java.circular.solution2; 2 | 3 | import com.fasterxml.jackson.annotation.JsonManagedReference; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | import lombok.ToString; 7 | 8 | @Setter 9 | @Getter 10 | @ToString 11 | public class Customer { 12 | private int id; 13 | private String name; 14 | @JsonManagedReference //serialized될 때 포함됨 15 | private Order order; 16 | } -------------------------------------------------------------------------------- /json-jackson/src/main/java/com/java/circular/solution3/Customer.java: -------------------------------------------------------------------------------- 1 | package com.java.circular.solution3; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import lombok.ToString; 6 | 7 | @Setter 8 | @Getter 9 | @ToString 10 | public class Customer { 11 | private int id; 12 | private String name; 13 | private Order order; 14 | } -------------------------------------------------------------------------------- /json-jackson/src/main/java/com/java/circular/solution3/Order.java: -------------------------------------------------------------------------------- 1 | package com.java.circular.solution3; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnore; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | import lombok.ToString; 7 | 8 | import java.util.List; 9 | 10 | @Setter 11 | @Getter 12 | @ToString(exclude = "customer") 13 | public class Order { 14 | private int orderId; 15 | private List itemIds; 16 | @JsonIgnore 17 | private Customer customer; //직렬화시 무시됨 18 | } -------------------------------------------------------------------------------- /json-jackson/src/main/java/com/java/examples/MyDto.java: -------------------------------------------------------------------------------- 1 | package com.java.examples; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Data; 5 | 6 | @Data 7 | @JsonInclude(JsonInclude.Include.NON_NULL) 8 | public class MyDto { 9 | // @JsonInclude(JsonInclude.Include.NON_NULL) 10 | private String stringValue; 11 | 12 | private int intValue; 13 | 14 | boolean booleanValue; 15 | } 16 | -------------------------------------------------------------------------------- /json-jackson/src/main/java/com/java/examples/MyDtoWithoutJsonInclude.java: -------------------------------------------------------------------------------- 1 | package com.java.examples; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Data; 5 | 6 | @Data 7 | public class MyDtoWithoutJsonInclude { 8 | private String stringValue; 9 | 10 | private int intValue; 11 | 12 | boolean booleanValue; 13 | } 14 | -------------------------------------------------------------------------------- /json-jackson/src/main/java/com/java/examples/Person.java: -------------------------------------------------------------------------------- 1 | package com.java.examples; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Person { 7 | Integer id; 8 | String name; 9 | } 10 | -------------------------------------------------------------------------------- /json-jackson/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /junit-mockito/src/main/java/com/advenoh/AbstractClazz.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | public abstract class AbstractClazz { 4 | public String sayHello() { 5 | return "Hello " + fetchName() + "!"; 6 | } 7 | 8 | protected abstract String fetchName(); 9 | } 10 | -------------------------------------------------------------------------------- /junit-mockito/src/main/java/com/advenoh/AbstractClazz2.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | public abstract class AbstractClazz2 { 4 | public String sayHello() { 5 | return "Hello " + fetchName() + closingSymbol(); 6 | } 7 | 8 | private String closingSymbol() { 9 | return "!"; 10 | } 11 | 12 | protected abstract String fetchName(); 13 | } 14 | -------------------------------------------------------------------------------- /junit-mockito/src/main/java/com/advenoh/AbstractClazz3.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | public abstract class AbstractClazz3 { 4 | String test = null; 5 | 6 | public String sayHello() { 7 | return "Hello !"; 8 | } 9 | 10 | protected String getParentName() { 11 | //null이 될수밖에 없음... 12 | return test.substring(3) + " " + sayHello(); 13 | } 14 | 15 | public abstract String testMethod(); 16 | } 17 | -------------------------------------------------------------------------------- /junit-mockito/src/main/java/com/advenoh/ChildClazz3.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | public class ChildClazz3 extends AbstractClazz3 { 4 | @Override public String testMethod() { 5 | return getParentName(); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /junit-mockito/src/main/java/in28minutes/data/api/TodoService.java: -------------------------------------------------------------------------------- 1 | package in28minutes.data.api; 2 | 3 | import java.util.List; 4 | 5 | public interface TodoService { 6 | List retrieveTodos(String user); 7 | 8 | void deleteTodo(String todo); 9 | } -------------------------------------------------------------------------------- /junit-mockito/src/main/java/in28minutes/exception/DifferentCurrenciesException.java: -------------------------------------------------------------------------------- 1 | package in28minutes.exception; 2 | 3 | public class DifferentCurrenciesException extends Exception { 4 | private static final long serialVersionUID = -2698366853625315072L; 5 | } 6 | -------------------------------------------------------------------------------- /junit-mockito/src/main/java/in28minutes/junit/business/ClientBO.java: -------------------------------------------------------------------------------- 1 | package in28minutes.junit.business; 2 | 3 | import in28minutes.exception.DifferentCurrenciesException; 4 | import in28minutes.junit.model.Amount; 5 | import in28minutes.junit.model.Product; 6 | 7 | import java.util.List; 8 | 9 | public interface ClientBO { 10 | Amount getClientProductsSum(List products) throws DifferentCurrenciesException; 11 | 12 | } -------------------------------------------------------------------------------- /junit-mockito/src/main/java/in28minutes/junit/model/Amount.java: -------------------------------------------------------------------------------- 1 | package in28minutes.junit.model; 2 | 3 | import java.math.BigDecimal; 4 | 5 | public interface Amount { 6 | BigDecimal getValue(); 7 | 8 | Currency getCurrency(); 9 | } 10 | -------------------------------------------------------------------------------- /junit-mockito/src/main/java/in28minutes/junit/model/Collateral.java: -------------------------------------------------------------------------------- 1 | package in28minutes.junit.model; 2 | 3 | /** 4 | * Collateral Model API. 5 | */ 6 | public interface Collateral { 7 | 8 | long getId(); 9 | 10 | String getName(); 11 | 12 | CollateralType getType(); 13 | } -------------------------------------------------------------------------------- /junit-mockito/src/main/java/in28minutes/junit/model/Currency.java: -------------------------------------------------------------------------------- 1 | package in28minutes.junit.model; 2 | 3 | public enum Currency { 4 | 5 | EURO("EUR"), 6 | UNITED_STATES_DOLLAR("USD"), 7 | INDIAN_RUPEE("INR"); 8 | 9 | private final String textValue; 10 | 11 | Currency(final String textValue) { 12 | this.textValue = textValue; 13 | } 14 | 15 | @Override 16 | public String toString() { 17 | return textValue; 18 | } 19 | } -------------------------------------------------------------------------------- /junit-mockito/src/main/java/in28minutes/junit/model/Product.java: -------------------------------------------------------------------------------- 1 | package in28minutes.junit.model; 2 | 3 | /** 4 | * Product Model API. 5 | */ 6 | public interface Product { 7 | 8 | long getId(); 9 | 10 | String getName(); 11 | 12 | ProductType getType(); 13 | 14 | Amount getAmount(); 15 | } -------------------------------------------------------------------------------- /junit-mockito/src/main/java/in28minutes/junit/model/ProductType.java: -------------------------------------------------------------------------------- 1 | package in28minutes.junit.model; 2 | 3 | /** 4 | * Available types of customers 5 | */ 6 | public enum ProductType { 7 | LOAN("LN"), 8 | KREDIT("KRD"), 9 | BANK_GUARANTEE("BG"); 10 | 11 | private final String textValue; 12 | 13 | ProductType(final String textValue) { 14 | this.textValue = textValue; 15 | } 16 | 17 | @Override 18 | public String toString() { 19 | return textValue; 20 | } 21 | } -------------------------------------------------------------------------------- /junit-mockito/src/main/java/in28minutes/powermock/UtilityClass.java: -------------------------------------------------------------------------------- 1 | package in28minutes.powermock; 2 | 3 | public class UtilityClass { 4 | static int staticMethod(long value) { 5 | // Some complex logic is done here... 6 | throw new RuntimeException( 7 | "I dont want to be executed. I will anyway be mocked out."); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /junit-mockito/src/main/java/kr/jdm/AuthDao.java: -------------------------------------------------------------------------------- 1 | package kr.jdm; 2 | 3 | public class AuthDao { 4 | public boolean isLogin(String id) { 5 | return id.equals("frankyoh"); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /junit-mockito/src/main/java/kr/jdm/AuthService.java: -------------------------------------------------------------------------------- 1 | package kr.jdm; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | 5 | @Slf4j 6 | public class AuthService { 7 | private AuthDao dao; 8 | 9 | public boolean isLogin(String id) { 10 | boolean isLogin = dao.isLogin(id); 11 | if (isLogin) { 12 | log.info("isLogin: id: {}", id); 13 | } 14 | return isLogin; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /junit-mockito/src/test/java/in28minutes/junit/helper/ArraysTest.java: -------------------------------------------------------------------------------- 1 | package in28minutes.junit.helper; 2 | 3 | import org.junit.Test; 4 | 5 | import java.util.Arrays; 6 | 7 | public class ArraysTest { 8 | @Test(timeout = 100) 9 | public void testPerformance() { 10 | for (int i = 0; i < 1000000; i++) { 11 | Arrays.sort(new int[] { i, i - 1, i + 1 }); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /junit-mockito/src/test/java/in28minutes/junit/suite/DummyTestSuite.java: -------------------------------------------------------------------------------- 1 | package in28minutes.junit.suite; 2 | 3 | import in28minutes.junit.helper.ArraysTest; 4 | import in28minutes.junit.helper.StringHelperTest; 5 | import org.junit.runner.RunWith; 6 | import org.junit.runners.Suite; 7 | 8 | @RunWith(Suite.class) 9 | @Suite.SuiteClasses({ ArraysTest.class, StringHelperTest.class }) 10 | public class DummyTestSuite { 11 | 12 | } -------------------------------------------------------------------------------- /junit-mockito/src/test/java/in28minutes/mockito/FirstMockitoTest.java: -------------------------------------------------------------------------------- 1 | package in28minutes.mockito; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.assertTrue; 6 | 7 | public class FirstMockitoTest { 8 | @Test 9 | public void test() { 10 | assertTrue(true); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /junit-powermock/src/main/java/com/advenoh/Child.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | 5 | @Slf4j 6 | public class Child extends Parent { 7 | 8 | public void methodToTest() { 9 | //code 10 | log.info("methodToTest"); 11 | badMethod(); 12 | //code 13 | } 14 | 15 | @Override public int anotherMethod(int x) { 16 | return 0; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /junit-powermock/src/main/java/com/advenoh/Parent.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | 5 | @Slf4j 6 | public abstract class Parent { 7 | 8 | public Parent() { 9 | } 10 | 11 | protected void badMethod() { 12 | //code 13 | log.info("badMethod"); 14 | } 15 | 16 | // public methods 17 | public abstract int anotherMethod(int x); 18 | 19 | } -------------------------------------------------------------------------------- /junit-powermock/src/main/java/com/advenoh/PowerMockDemo.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | public class PowerMockDemo { 4 | private int privateMethod(int x, int y) { 5 | return x + y; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /junit-powermock/src/main/java/com/advenoh/examples/Article.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.examples; 2 | 3 | public class Article { 4 | int id; 5 | 6 | public void setId(int id) { 7 | this.id = id; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /junit-powermock/src/main/java/com/advenoh/examples/ArticleDao.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.examples; 2 | 3 | public class ArticleDao { 4 | private static int staticInt; 5 | 6 | public static String setStaticInt(int num) { 7 | staticInt = num; 8 | 9 | return Integer.toString(staticInt); 10 | } 11 | 12 | public void insert(Article article) { 13 | 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /junit-powermock/src/main/java/com/advenoh/examples/ConsoleLogger.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.examples; 2 | 3 | public class ConsoleLogger { 4 | 5 | public static void print(String arg) { 6 | System.out.println("Method called with arg: " + arg); 7 | } 8 | 9 | } 10 | -------------------------------------------------------------------------------- /junit-powermock/src/main/java/com/advenoh/examples/IdGenerator.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.examples; 2 | 3 | public class IdGenerator { 4 | public Integer getNextId() { 5 | return new Integer(0); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /junit-powermock/src/main/java/com/advenoh/examples/Logger.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.examples; 2 | 3 | public class Logger { 4 | public static void debug(String arg) { 5 | System.out.println("DEUBG: Method called with arg: " + arg); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /junit-powermock/src/main/java/com/advenoh/examples/MyClass2.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.examples; 2 | 3 | public class MyClass2 { 4 | private String str; 5 | 6 | MyClass2() { 7 | // System.load("some.dll"); 8 | str = "loaded"; 9 | } 10 | 11 | MyClass2(String str) { 12 | this.str = str; 13 | } 14 | 15 | public String getStr() { 16 | return str; 17 | } 18 | 19 | static String hello(String arg) { 20 | return "Hello " + arg; 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /junit-powermock/src/main/java/com/advenoh/examples/MyClass3.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.examples; 2 | 3 | public class MyClass3 { 4 | 5 | static String hello(String arg) { 6 | Logger.debug("Calling method hello with: " + arg); 7 | return "Hello " + arg; 8 | } 9 | 10 | } -------------------------------------------------------------------------------- /junit-powermock/src/main/java/com/advenoh/impl/ChildImpl.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.impl; 2 | 3 | import com.advenoh.Parent; 4 | import lombok.extern.slf4j.Slf4j; 5 | 6 | @Slf4j 7 | public class ChildImpl extends Parent { 8 | 9 | public int anotherMethod(int x) { 10 | log.info("anotherMethod..."); 11 | return x; 12 | } 13 | 14 | public int callingParentMethod(int x) { 15 | log.info("callingParentMethod..."); 16 | badMethod(); 17 | return x; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /junit-powermock/src/main/java/com/advenoh/model/Photos.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.model; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Photos { 7 | int width; 8 | int height; 9 | } 10 | -------------------------------------------------------------------------------- /junit-powermock/src/main/java/com/advenoh/model/User.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.model; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | 7 | @Data 8 | public class User { 9 | String name; 10 | String address; 11 | List photos; 12 | 13 | // public List getPhotos() { 14 | // return photos; 15 | // } 16 | // 17 | // public void setPhotos(List photos) { 18 | // this.photos = photos; 19 | // } 20 | } 21 | -------------------------------------------------------------------------------- /junit-powermock/src/test/java/com/advenoh/PersonMockTest.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | import org.assertj.core.api.Assertions; 4 | import org.junit.Test; 5 | 6 | import static org.mockito.Mockito.mock; 7 | 8 | public class PersonMockTest { 9 | 10 | @Test 11 | public void name() { 12 | Child p = mock(Child.class); 13 | Assertions.assertThat(p).isNotNull(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /junit-rule/README.md: -------------------------------------------------------------------------------- 1 | JUnit Rule 2 | ====== 3 | JUnit Rule 관련 코드 4 | 5 | ## 블로그 6 | - JUnit Rules이란 -------------------------------------------------------------------------------- /junit-rule/src/main/java/com/advenoh/Person.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class Person { 9 | String name; 10 | int age; 11 | String address; 12 | String email; 13 | } 14 | -------------------------------------------------------------------------------- /junit-rule/src/test/java/com/advenoh/CustomRuleTest.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | import com.advenoh.rules.LoggingRule; 4 | import org.junit.Rule; 5 | import org.junit.Test; 6 | 7 | public class CustomRuleTest { 8 | 9 | @Rule 10 | public LoggingRule rule = new LoggingRule("custom rule"); 11 | 12 | @Test 13 | public void test() { 14 | System.out.println("test 실행"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /junit-rule/src/test/java/com/advenoh/Server.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | 5 | @Slf4j 6 | public class Server { 7 | public void connect() { 8 | log.info("서버 연결 시작..."); 9 | } 10 | 11 | public void disconnect() { 12 | log.info("서버 연결 끊기..."); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /junit-rule/src/test/java/com/advenoh/TestFirstServer.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | import org.junit.Test; 5 | 6 | @Slf4j 7 | public class TestFirstServer { 8 | @Test 9 | public void test() throws Exception { 10 | log.info("{}", this.getClass().getSimpleName()); 11 | } 12 | } -------------------------------------------------------------------------------- /junit-rule/src/test/java/com/advenoh/TestSecondServer.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | import org.junit.Test; 5 | 6 | @Slf4j 7 | public class TestSecondServer { 8 | @Test 9 | public void test() throws Exception { 10 | log.info("{}", this.getClass().getSimpleName()); 11 | } 12 | } -------------------------------------------------------------------------------- /junit-rule/src/test/java/com/advenoh/TestThirdServer.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | import org.junit.Test; 5 | 6 | @Slf4j 7 | public class TestThirdServer { 8 | @Test 9 | public void test() throws Exception { 10 | log.info("{}", this.getClass().getSimpleName()); 11 | } 12 | } -------------------------------------------------------------------------------- /junit-rule/src/test/resources/test.txt: -------------------------------------------------------------------------------- 1 | hello world -------------------------------------------------------------------------------- /junit-unit-test/README.md: -------------------------------------------------------------------------------- 1 | 2 | 블로그 목록 3 | 4 | 5 | https://stackoverflow.com/questions/28758883/best-practice-setting-a-field-without-setters-in-a-unit-test 6 | -------------------------------------------------------------------------------- /junit-unit-test/src/main/java/com/advenoh/AddService.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | public class AddService { 4 | 5 | public int add(int x, int y) { 6 | return x + y; 7 | } 8 | 9 | public void print(int x, int y) { 10 | System.out.println("result = " + add(x, y)); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /junit-unit-test/src/main/java/com/advenoh/SomeEntity.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | public class SomeEntity { 4 | String someProperty; 5 | 6 | public String getSomeProperty() { 7 | return this.someProperty; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lombok/lombok.config: -------------------------------------------------------------------------------- 1 | #lombok.nonNull.flagUsage=error -------------------------------------------------------------------------------- /lombok/src/main/java/com/java/examples/builder/Car.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.builder; 2 | 3 | import lombok.Builder; 4 | import lombok.ToString; 5 | 6 | @Builder 7 | @ToString 8 | public class Car { 9 | private int wheels; 10 | private String color; 11 | 12 | public static void main(String[] args) { 13 | System.out.println(Car.builder().color("red").wheels(2).build()); 14 | 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /lombok/src/main/java/com/java/examples/contructor/PersonArgs.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.contructor; 2 | 3 | import lombok.AllArgsConstructor; 4 | 5 | @AllArgsConstructor 6 | public class PersonArgs { 7 | String name; 8 | int age; 9 | } 10 | -------------------------------------------------------------------------------- /lombok/src/main/java/com/java/examples/contructor/PersonNoArgs.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.contructor; 2 | 3 | import lombok.NoArgsConstructor; 4 | 5 | @NoArgsConstructor 6 | public class PersonNoArgs { 7 | String name; 8 | int age; 9 | } 10 | -------------------------------------------------------------------------------- /lombok/src/main/java/com/java/examples/data/Person.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.data; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Person { 7 | String name; 8 | int age; 9 | } 10 | -------------------------------------------------------------------------------- /lombok/src/main/java/com/java/examples/equalsandhashcode/Person.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.equalsandhashcode; 2 | 3 | import lombok.EqualsAndHashCode; 4 | 5 | @EqualsAndHashCode 6 | public class Person { 7 | String name; 8 | int age; 9 | } 10 | -------------------------------------------------------------------------------- /lombok/src/main/java/com/java/examples/equalsandhashcode/PersonExclude.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.equalsandhashcode; 2 | 3 | import lombok.EqualsAndHashCode; 4 | 5 | @EqualsAndHashCode 6 | public class PersonExclude { 7 | String name; 8 | @EqualsAndHashCode.Exclude 9 | int age; 10 | } 11 | -------------------------------------------------------------------------------- /lombok/src/main/java/com/java/examples/gettersetter/Person.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.gettersetter; 2 | 3 | import lombok.AccessLevel; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | 8 | public class Person { 9 | @Getter 10 | @Setter 11 | String name; 12 | 13 | @Getter 14 | @Setter(AccessLevel.PROTECTED) 15 | int age; 16 | } 17 | -------------------------------------------------------------------------------- /lombok/src/main/java/com/java/examples/gettersetter/PersonAccessLevel.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.gettersetter; 2 | 3 | import lombok.AccessLevel; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | public class PersonAccessLevel { 8 | @Getter 9 | @Setter 10 | String name; 11 | 12 | @Setter(AccessLevel.PROTECTED) 13 | int age; 14 | } 15 | -------------------------------------------------------------------------------- /lombok/src/main/java/com/java/examples/gettersetter/PersonSetterChain.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.gettersetter; 2 | 3 | import lombok.Setter; 4 | import lombok.experimental.Accessors; 5 | 6 | @Setter 7 | @Accessors(chain = true) 8 | public class PersonSetterChain { 9 | String name; 10 | 11 | int age; 12 | } 13 | -------------------------------------------------------------------------------- /lombok/src/main/java/com/java/examples/log/LombokLogger.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.log; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | 5 | @Slf4j 6 | public class LombokLogger { 7 | public static void main(String[] args) { 8 | log.info("test"); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lombok/src/main/java/com/java/examples/model/Person.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.model; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Person { 7 | String name; 8 | } 9 | -------------------------------------------------------------------------------- /lombok/src/main/java/com/java/examples/nonnull/NonNullExample.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.nonnull; 2 | 3 | 4 | import com.java.examples.model.Person; 5 | import lombok.NonNull; 6 | 7 | public class NonNullExample extends Something { 8 | private String name; 9 | 10 | public NonNullExample(@NonNull Person person) { 11 | super("Hello"); 12 | this.name = person.getName(); 13 | } 14 | } -------------------------------------------------------------------------------- /lombok/src/main/java/com/java/examples/nonnull/Something.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.nonnull; 2 | 3 | public class Something { 4 | public Something(String hello) { 5 | 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /lombok/src/main/java/com/java/examples/tostring/Person.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.tostring; 2 | 3 | import lombok.ToString; 4 | 5 | @ToString 6 | public class Person { 7 | String name; 8 | int age; 9 | } 10 | 11 | -------------------------------------------------------------------------------- /lombok/src/main/java/com/java/examples/tostring/PersonExclude.java: -------------------------------------------------------------------------------- 1 | package com.java.examples.tostring; 2 | 3 | import lombok.ToString; 4 | 5 | @ToString 6 | public class PersonExclude { 7 | @ToString.Include 8 | String name; 9 | 10 | @ToString.Exclude 11 | int age; 12 | } 13 | 14 | -------------------------------------------------------------------------------- /lombok/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /rabbitmq-amqp-client/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /retry-exception-handler/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /retry-exception-handler/src/test/java/com/java/examples/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.java.examples; 2 | 3 | import static org.junit.Assert.assertTrue; 4 | 5 | import org.junit.Test; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | { 12 | /** 13 | * Rigorous Test :-) 14 | */ 15 | @Test 16 | public void shouldAnswerWithTrue() 17 | { 18 | assertTrue( true ); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /retry-exception-handler/src/test/java/com/oracle/retry/RetryOnExceptionTest.java: -------------------------------------------------------------------------------- 1 | package com.oracle.retry; 2 | 3 | public class RetryOnExceptionTest { 4 | public void name() { 5 | } 6 | } -------------------------------------------------------------------------------- /rmi-calculator/README.md: -------------------------------------------------------------------------------- 1 | To compile 2 | javac RmiServer.java 3 | rmic RmiServer 4 | javac RmiClient.java 5 | 6 | To execute 7 | java RmiServer 8 | java RmiClient localhost 3232 "hello" 9 | -------------------------------------------------------------------------------- /rmi-calculator/src/main/java/Calculator.java: -------------------------------------------------------------------------------- 1 | public interface Calculator extends java.rmi.Remote { 2 | public long add(long a, long b) 3 | throws java.rmi.RemoteException; 4 | 5 | public long sub(long a, long b) 6 | throws java.rmi.RemoteException; 7 | 8 | public long mul(long a, long b) 9 | throws java.rmi.RemoteException; 10 | 11 | public long div(long a, long b) 12 | throws java.rmi.RemoteException; 13 | } 14 | -------------------------------------------------------------------------------- /rmi-withoutregistry/README.md: -------------------------------------------------------------------------------- 1 | To compile 2 | javac RmiServer.java 3 | rmic RmiServer 4 | javac RmiClient.java 5 | 6 | To execute 7 | java RmiServer 8 | java RmiClient localhost 3232 "hello" 9 | -------------------------------------------------------------------------------- /rmi-withoutregistry/src/main/java/ReceiveMessageInterface.java: -------------------------------------------------------------------------------- 1 | import java.rmi.Remote; 2 | import java.rmi.RemoteException; 3 | 4 | public interface ReceiveMessageInterface extends Remote { 5 | void receiveMessage(String x) throws RemoteException; 6 | } 7 | -------------------------------------------------------------------------------- /scheduler-quartz-mysql/src/main/java/com/advenoh/TestJOB.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | import org.quartz.Job; 4 | import org.quartz.JobExecutionContext; 5 | 6 | public class TestJOB implements Job { 7 | public void execute(JobExecutionContext context) { 8 | System.out.println("I am JOB, schdule me with Quartz"); 9 | System.out.println("Send SMS here"); 10 | } 11 | } -------------------------------------------------------------------------------- /scheduler-quartz-mysql/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /scheduler-quartz/src/main/java/quartz/ILatch.java: -------------------------------------------------------------------------------- 1 | package quartz; 2 | 3 | public interface ILatch { 4 | void countDown(); 5 | } 6 | -------------------------------------------------------------------------------- /scheduler-quartz/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /simple-spring-memcached/README.md: -------------------------------------------------------------------------------- 1 | Simple Spring Memcached (SSM) 2 | ====== 3 | Simple Spring Memcached (SSM) 관련 코드 4 | 5 | ## 블로그 6 | - Simple Spring Memcached(SSM)란 -------------------------------------------------------------------------------- /spring-annotation-order/src/main/java/com/advenoh/Average.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | import org.springframework.core.Ordered; 4 | import org.springframework.core.annotation.Order; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | @Order(Ordered.LOWEST_PRECEDENCE) 9 | public class Average implements Rating { 10 | 11 | @Override 12 | public int getRating() { 13 | return 3; 14 | } 15 | } -------------------------------------------------------------------------------- /spring-annotation-order/src/main/java/com/advenoh/Excellent.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | import org.springframework.core.annotation.Order; 4 | import org.springframework.stereotype.Component; 5 | 6 | @Component 7 | @Order(1) 8 | public class Excellent implements Rating { 9 | 10 | @Override 11 | public int getRating() { 12 | return 1; 13 | } 14 | } -------------------------------------------------------------------------------- /spring-annotation-order/src/main/java/com/advenoh/Good.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | import org.springframework.core.annotation.Order; 4 | import org.springframework.stereotype.Component; 5 | 6 | @Component 7 | @Order(2) 8 | public class Good implements Rating { 9 | 10 | @Override 11 | public int getRating() { 12 | return 2; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-annotation-order/src/main/java/com/advenoh/Rating.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | public interface Rating { 4 | int getRating(); 5 | } 6 | -------------------------------------------------------------------------------- /spring-async/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /spring-async/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello World!

4 | 5 | 6 | -------------------------------------------------------------------------------- /spring-di-annotation-javaconfig/src/main/java/com/spring/examples/service/QuoteService.java: -------------------------------------------------------------------------------- 1 | package com.spring.examples.service; 2 | 3 | import com.spring.examples.model.Quote; 4 | 5 | import java.util.List; 6 | 7 | public interface QuoteService { 8 | List findQuotesByAuthor(String author); 9 | 10 | void deleteQuote(Quote quote); 11 | 12 | void addQuote(Quote quote); 13 | } 14 | -------------------------------------------------------------------------------- /spring-di-annotation-javaconfig/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /spring-di-annotation/src/main/java/com/spring/examples/service/QuoteService.java: -------------------------------------------------------------------------------- 1 | package com.spring.examples.service; 2 | 3 | import com.spring.examples.model.Quote; 4 | 5 | import java.util.List; 6 | 7 | public interface QuoteService { 8 | List findQuotesByAuthor(String author); 9 | 10 | void deleteQuote(Quote quote); 11 | 12 | void addQuote(Quote quote); 13 | } 14 | -------------------------------------------------------------------------------- /spring-di-annotation/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /spring-di-javaconfig/src/main/java/com/spring/examples/App.java: -------------------------------------------------------------------------------- 1 | package com.spring.examples; 2 | 3 | /** 4 | * Hello world! 5 | * 6 | */ 7 | public class App 8 | { 9 | public static void main( String[] args ) 10 | { 11 | System.out.println( "Hello World!" ); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /spring-di-javaconfig/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /spring-di-javaconfig/src/test/java/com/spring/examples/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.spring.examples; 2 | 3 | import static org.junit.Assert.assertTrue; 4 | 5 | import org.junit.Test; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | { 12 | /** 13 | * Rigorous Test :-) 14 | */ 15 | @Test 16 | public void shouldAnswerWithTrue() 17 | { 18 | assertTrue( true ); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /spring-messaging-websocket/src/main/java/com/advenoh/model/Greeting.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class Greeting { 9 | 10 | private String content; 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /spring-messaging-websocket/src/main/java/com/advenoh/model/HelloMessage.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.model; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class HelloMessage { 7 | 8 | private String name; 9 | 10 | } 11 | -------------------------------------------------------------------------------- /spring-messaging-websocket/src/main/java/com/advenoh/model/Message.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.model; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Message { 7 | 8 | private String from; 9 | private String text; 10 | } 11 | -------------------------------------------------------------------------------- /spring-messaging-websocket/src/main/java/com/advenoh/model/OutputMessage.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class OutputMessage { 9 | 10 | private String from; 11 | private String text; 12 | private String time; 13 | 14 | } -------------------------------------------------------------------------------- /spring-messaging-websocket/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /spring-messaging-websocket/src/main/webapp/resources/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #f5f5f5; 3 | } 4 | 5 | #main-content { 6 | max-width: 940px; 7 | padding: 2em 3em; 8 | margin: 0 auto 20px; 9 | background-color: #fff; 10 | border: 1px solid #e5e5e5; 11 | -webkit-border-radius: 5px; 12 | -moz-border-radius: 5px; 13 | border-radius: 5px; 14 | } -------------------------------------------------------------------------------- /spring-model-attribute-method/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /spring-model-attribute-method/src/main/webapp/WEB-INF/views/my-page.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" 2 | contentType="text/html; charset=ISO-8859-1" 3 | pageEncoding="ISO-8859-1" %> 4 | 5 | 6 |

Message : ${msg} 7 |

8 |

Time: ${time}

9 |

Total Visits: ${visits}

10 |
11 |

Requested by : ${querier}

12 | 13 | -------------------------------------------------------------------------------- /spring-model-attribute-method/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /spring-model-attribute-method/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello World!

4 | 5 | 6 | -------------------------------------------------------------------------------- /spring-model-attribute/README.md: -------------------------------------------------------------------------------- 1 | https://www.logicbig.com/tutorials/spring-framework/spring-web-mvc/spring-model-attribute-handler-param.html -------------------------------------------------------------------------------- /spring-model-attribute/src/main/main/java/com/logicbig/example/UserService.java: -------------------------------------------------------------------------------- 1 | package com.logicbig.example; 2 | 3 | public interface UserService { 4 | 5 | User getUserById(long id); 6 | } -------------------------------------------------------------------------------- /spring-model-attribute/src/main/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /spring-model-attribute/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /spring-model-attribute/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello World!

4 | 5 | 6 | -------------------------------------------------------------------------------- /spring-mvc-exception-journaldev/src/main/java/com/journaldev/spring/model/Employee.java: -------------------------------------------------------------------------------- 1 | package com.journaldev.spring.model; 2 | 3 | public class Employee { 4 | 5 | private String name; 6 | private int id; 7 | 8 | public String getName() { 9 | return name; 10 | } 11 | 12 | public void setName(String name) { 13 | this.name = name; 14 | } 15 | 16 | public int getId() { 17 | return id; 18 | } 19 | 20 | public void setId(int id) { 21 | this.id = id; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /spring-mvc-exception-journaldev/src/main/webapp/WEB-INF/spring/root-context.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /spring-mvc-exception-journaldev/src/main/webapp/WEB-INF/views/home.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 2 | <%@ page session="false" %> 3 | 4 | 5 | Home 6 | 7 | 8 |

Hello ${employee.name}!


9 |

Your ID is ${employee.id}

10 | 11 | 12 | -------------------------------------------------------------------------------- /spring-mvc-hello-world/README.md: -------------------------------------------------------------------------------- 1 | http://www.mkyong.com/spring-mvc/gradle-spring-mvc-web-project-example/ -------------------------------------------------------------------------------- /spring-mvc-hello-world/src/main/webapp/resources/core/css/hello.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/spring-mvc-hello-world/src/main/webapp/resources/core/css/hello.css -------------------------------------------------------------------------------- /spring-mvc-hello-world/src/main/webapp/resources/core/js/hello.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/spring-mvc-hello-world/src/main/webapp/resources/core/js/hello.js -------------------------------------------------------------------------------- /spring-mvc-javaconfig-commons-fileupload-ajax/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /spring-mvc-mybatis/README.md: -------------------------------------------------------------------------------- 1 | http://pmingdiary.tistory.com/19 -------------------------------------------------------------------------------- /spring-mvc-mybatis/src/main/java/com/mybatis/sample/constance/DaoConst.java: -------------------------------------------------------------------------------- 1 | package com.mybatis.sample.constance; 2 | 3 | public class DaoConst { 4 | 5 | public static final String NAMESPACE_CODE = "com.mybatis.sample.code_mapper"; 6 | 7 | } 8 | -------------------------------------------------------------------------------- /spring-mvc-mybatis/src/main/java/com/mybatis/sample/dao/CodeDAO.java: -------------------------------------------------------------------------------- 1 | package com.mybatis.sample.dao; 2 | 3 | import com.mybatis.sample.vo.CodeVO; 4 | 5 | import java.util.List; 6 | import java.util.Map; 7 | 8 | public interface CodeDAO { 9 | 10 | public List> selectCodeList(CodeVO vo); 11 | 12 | public int insertCode(CodeVO vo); 13 | 14 | public int deleteCode(CodeVO vo); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /spring-mvc-mybatis/src/main/java/com/mybatis/sample/service/CodeService.java: -------------------------------------------------------------------------------- 1 | package com.mybatis.sample.service; 2 | 3 | import com.mybatis.sample.vo.CodeVO; 4 | 5 | import java.util.List; 6 | import java.util.Map; 7 | 8 | public interface CodeService { 9 | 10 | List> getCodeList(CodeVO vo); 11 | 12 | int saveCode(CodeVO vo); 13 | 14 | int removeCode(CodeVO vo); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /spring-mvc-mybatis/src/main/resources/config/mybatis/mybatis-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /spring-mvc-mybatis/src/main/resources/config/spring/db.properties: -------------------------------------------------------------------------------- 1 | jdbc.driver=com.mysql.jdbc.Driver 2 | jdbc.url=jdbc:mysql://localhost:3306/mybatis 3 | jdbc.username=mybatis 4 | jdbc.password=mybatis$ -------------------------------------------------------------------------------- /spring-mvc-mybatis/src/main/resources/insert_data.sql: -------------------------------------------------------------------------------- 1 | use mybatis; 2 | INSERT INTO 고객 VALUES ('apple', '정소화', 20, 'gold', '학생', 1000); -------------------------------------------------------------------------------- /spring-mvc-mybatis/src/main/webapp/WEB-INF/spring/root-context.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /spring-mvc-unit-test/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | http://websystique.com/springmvc/spring-4-mvc-helloworld-tutorial-annotation-javaconfig-full-example/ 4 | 5 | https://viralpatel.net/blogs/spring-4-mvc-rest-example-json/ -------------------------------------------------------------------------------- /spring-mvc-unit-test/src/main/java/com/spring/example/model/Quote.java: -------------------------------------------------------------------------------- 1 | package com.spring.example.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NonNull; 6 | import lombok.experimental.Accessors; 7 | 8 | @Data 9 | @AllArgsConstructor 10 | @Accessors(chain = true) 11 | public class Quote { 12 | @NonNull Long id; 13 | @NonNull String author; 14 | @NonNull String quote; 15 | } 16 | -------------------------------------------------------------------------------- /spring-mvc-unit-test/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /spring-mvc-unit-test/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello World!

4 | 5 | 6 | -------------------------------------------------------------------------------- /spring-mvc-unit-test/src/test/java/com/spring/example/util/AutoGenerateIdTest.java: -------------------------------------------------------------------------------- 1 | package com.spring.example.util; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.assertEquals; 6 | 7 | public class AutoGenerateIdTest { 8 | 9 | @Test 10 | public void incrementAndGet() { 11 | assertEquals(1, AutoGenerateId.incrementAndGet()); 12 | assertEquals(2, AutoGenerateId.incrementAndGet()); 13 | assertEquals(3, AutoGenerateId.incrementAndGet()); 14 | } 15 | } -------------------------------------------------------------------------------- /spring-mvc-xml-fileupload/src/main/java/com/spring/examples/model/MediaVO.java: -------------------------------------------------------------------------------- 1 | package com.spring.examples.model; 2 | 3 | import lombok.Data; 4 | import org.springframework.web.multipart.MultipartFile; 5 | 6 | @Data 7 | public class MediaVO { 8 | private String creator; 9 | private String callbackUrl; 10 | private MultipartFile mediaFile; 11 | } 12 | -------------------------------------------------------------------------------- /spring-mvc-xml-mybatis/src/main/java/com/example/dao/MemberDAO.java: -------------------------------------------------------------------------------- 1 | package com.example.dao; 2 | 3 | import java.util.List; 4 | 5 | import com.example.dto.MemberVO; 6 | 7 | public interface MemberDAO { 8 | 9 | public List selectMember() throws Exception; 10 | } 11 | -------------------------------------------------------------------------------- /spring-mvc-xml-mybatis/src/main/java/com/example/service/MemberService.java: -------------------------------------------------------------------------------- 1 | package com.example.service; 2 | 3 | import java.util.List; 4 | 5 | import com.example.dto.MemberVO; 6 | 7 | public interface MemberService { 8 | 9 | public List selectMember() throws Exception; 10 | } 11 | -------------------------------------------------------------------------------- /spring-mvc-xml-mybatis/src/main/resources/db.properties: -------------------------------------------------------------------------------- 1 | jdbc.driver=com.mysql.jdbc.Driver 2 | jdbc.url=jdbc:mysql://localhost:3306/mybatis 3 | jdbc.username=mybatis 4 | jdbc.password=mybatis$ -------------------------------------------------------------------------------- /spring-mvc-xml-mybatis/src/main/resources/mybatis-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /spring-mvc-xml-mybatis/src/main/resources/mybatis/insert_data.sql: -------------------------------------------------------------------------------- 1 | use mybatis; 2 | 3 | INSERT INTO mybatis.members VALUES ('1234', '정소화'); 4 | INSERT INTO mybatis.members VALUES ('1234', '임정수'); 5 | INSERT INTO mybatis.members VALUES ('1234', '오서호'); 6 | INSERT INTO mybatis.members VALUES ('1234', '암수정'); -------------------------------------------------------------------------------- /spring-mvc-xml-mybatis/src/main/resources/mybatis/sql.ddl: -------------------------------------------------------------------------------- 1 | use mybatis; 2 | 3 | CREATE TABLE `members` ( 4 | id bigint(20) unsigned auto_increment COMMENT 'id' PRIMARY KEY, 5 | pwd VARCHAR(20) NOT NULL COMMENT '암호', 6 | name VARCHAR(50) NOT NULL COMMENT 'name' 7 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Member 정보';; -------------------------------------------------------------------------------- /spring-mybatis-dao/src/main/java/model/Quote.java: -------------------------------------------------------------------------------- 1 | package model; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class Quote implements Serializable { 9 | int quoteNo; 10 | String author; 11 | String quote; 12 | } 13 | -------------------------------------------------------------------------------- /spring-mybatis-dao/src/main/java/repository/QuoteDao.java: -------------------------------------------------------------------------------- 1 | package repository; 2 | 3 | import model.Quote; 4 | 5 | import java.util.List; 6 | 7 | public interface QuoteDao { 8 | List getQuoteList(Quote quote); 9 | 10 | void insertQuote(Quote quote); 11 | 12 | Quote selectQuote(String quoteNo); 13 | 14 | void updateQuote(Quote quote); 15 | 16 | void deleteQuote(String quoteNo); 17 | } 18 | -------------------------------------------------------------------------------- /spring-mybatis-dao/src/main/java/service/QuoteService.java: -------------------------------------------------------------------------------- 1 | package service; 2 | 3 | import model.Quote; 4 | 5 | import java.util.List; 6 | 7 | public interface QuoteService { 8 | List find(Quote quote); 9 | 10 | void add(Quote quote); 11 | 12 | Quote view(String quoteNo); 13 | 14 | void edit(Quote quote); 15 | 16 | void remove(String quoteNo); 17 | } 18 | -------------------------------------------------------------------------------- /spring-mybatis-dao/src/main/java/service/impl/QuoteServiceImpl.java: -------------------------------------------------------------------------------- 1 | package service.impl; 2 | 3 | public class QuoteServiceImpl { 4 | } 5 | -------------------------------------------------------------------------------- /spring-mybatis-dao/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /spring-mybatis-dao/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /spring-mybatis-dao/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello World!

4 | 5 | 6 | -------------------------------------------------------------------------------- /spring-mybatis-dao/src/test/java/controller/QuoteRestControllerTest.java: -------------------------------------------------------------------------------- 1 | package controller; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | public class QuoteRestControllerTest { 8 | 9 | @Test 10 | public void list() { 11 | } 12 | } -------------------------------------------------------------------------------- /spring-mybatis-mapper/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /spring-mybatis-mapper/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello World!

4 | 5 | 6 | -------------------------------------------------------------------------------- /spring-mybatis-sqlsession-dao-support/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /spring-mybatis-sqlsession-dao-support/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello World!

4 | 5 | 6 | -------------------------------------------------------------------------------- /spring-mybatis-sqlsession-template/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /spring-mybatis-sqlsession-template/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello World!

4 | 5 | 6 | -------------------------------------------------------------------------------- /spring-poi-excel-download/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /spring-poi-excel-download/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /spring-poi-excel-download/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello World!

4 | 5 | 6 | -------------------------------------------------------------------------------- /spring-poi-excel-download/src/test/java/controller/ExcelControllerTest.java: -------------------------------------------------------------------------------- 1 | package controller; 2 | 3 | import org.junit.Test; 4 | 5 | public class ExcelControllerTest { 6 | 7 | @Test 8 | public void list() { 9 | } 10 | } -------------------------------------------------------------------------------- /spring-rabbitmq-javaconfig/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | #rabbitmq 2 | rabbitmq.queue.name=test.queue 3 | rabbitmq.exchange.name=test.exchange 4 | rabbitmq.host=localhost 5 | rabbitmq.port=5672 6 | rabbitmq.username=guest 7 | rabbitmq.password=guest -------------------------------------------------------------------------------- /spring-rabbitmq-xml/README.md: -------------------------------------------------------------------------------- 1 | https://pamlesleylu.wordpress.com/2013/02/02/hello-world-for-spring-amqp-and-rabbitmq/ 2 | 3 | https://skibis.tistory.com/309 -------------------------------------------------------------------------------- /spring-rabbitmq-xml/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | #rabbitmq 2 | rabbitmq.queue.name=test.queue 3 | rabbitmq.exchange.name=test.exchange 4 | rabbitmq.host=localhost 5 | rabbitmq.port=5672 -------------------------------------------------------------------------------- /spring-resttemplate/README.md: -------------------------------------------------------------------------------- 1 | Spring RestTemplate 2 | ====== 3 | Spring RestTemplate 관련 코드 4 | 5 | ## 블로그 6 | - 스프링 RestTemplate -------------------------------------------------------------------------------- /spring-resttemplate/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /spring-websocket-stomp/src/main/java/com/concretepage/vo/CalcInput.java: -------------------------------------------------------------------------------- 1 | package com.concretepage.vo; 2 | 3 | public class CalcInput { 4 | private int num1; 5 | private int num2; 6 | public int getNum1() { 7 | return num1; 8 | } 9 | public void setNum1(int num1) { 10 | this.num1 = num1; 11 | } 12 | public int getNum2() { 13 | return num2; 14 | } 15 | public void setNum2(int num2) { 16 | this.num2 = num2; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /spring-websocket-stomp/src/main/java/com/concretepage/vo/Result.java: -------------------------------------------------------------------------------- 1 | package com.concretepage.vo; 2 | 3 | public class Result { 4 | 5 | private String result; 6 | 7 | public Result(String result) { 8 | this.result = result; 9 | } 10 | 11 | public String getResult() { 12 | return result; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-websocket-stomp/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /springboot-data-jpa-h2/README.md: -------------------------------------------------------------------------------- 1 | H2 데이터베이스 사용법 및 Intellij에서 Database 연동 2 | ====== 3 | Spring Boot Data JPA H2 관련 코드 4 | 5 | ## 블로그 6 | - H2 데이터베이스 사용법 및 Intellij에서 Database 연동 -------------------------------------------------------------------------------- /springboot-data-jpa-h2/src/main/java/kr/pe/advenoh/JpaH2Application.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class JpaH2Application { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(JpaH2Application.class, args); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /springboot-data-jpa-h2/src/main/java/kr/pe/advenoh/repository/BookRepository.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.repository; 2 | 3 | import kr.pe.advenoh.model.Book; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | 6 | public interface BookRepository extends JpaRepository { 7 | } -------------------------------------------------------------------------------- /springboot-data-jpa-h2/src/main/resources/data.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO book (`title`, `author`, `price`) VALUES ('지금 이대로 좋다', '법류 저', 9330); 2 | INSERT INTO book (`title`, `author`, `price`) VALUES ('여행할 땐 책', '채김남', 12150); 3 | INSERT INTO book (`title`, `author`, `price`) VALUES ('기차 타고 부산에서 런던까지', '정은주', 12150); -------------------------------------------------------------------------------- /springboot-exception-handler/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-exception-handler/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /springboot-exception-handler/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /springboot-exception-handler/src/main/java/kr/pe/advenoh/ExceptionHandlerApplication.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class ExceptionHandlerApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(ExceptionHandlerApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /springboot-exception-handler/src/main/java/kr/pe/advenoh/exception/ExceptionCode.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.exception; 2 | 3 | public interface ExceptionCode { 4 | String getCode(); 5 | 6 | String getMessage(String... args); 7 | } 8 | -------------------------------------------------------------------------------- /springboot-exception-handler/src/main/java/kr/pe/advenoh/model/dto/StudentRequestDto.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.model.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import javax.validation.constraints.NotNull; 7 | 8 | @Getter 9 | @Setter 10 | public class StudentRequestDto { 11 | @NotNull 12 | private String name; 13 | 14 | @NotNull 15 | private String mobileNumber; 16 | 17 | @NotNull 18 | private String address; 19 | } 20 | -------------------------------------------------------------------------------- /springboot-exception-handler/src/main/java/kr/pe/advenoh/model/dto/StudentResponseDto.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.model.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | @Getter 7 | @Setter 8 | public class StudentResponseDto { 9 | private Long id; 10 | private String name; 11 | private String mobileNumber; 12 | private String address; 13 | } 14 | -------------------------------------------------------------------------------- /springboot-exception-handler/src/main/java/kr/pe/advenoh/repository/StudentRepository.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.repository; 2 | 3 | import kr.pe.advenoh.model.entity.Student; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | 6 | public interface StudentRepository extends JpaRepository { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /springboot-exception-handler/src/main/java/kr/pe/advenoh/spring/config/AuditingConfig.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.spring.config; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.data.jpa.repository.config.EnableJpaAuditing; 5 | 6 | @Configuration 7 | @EnableJpaAuditing 8 | public class AuditingConfig { 9 | } 10 | -------------------------------------------------------------------------------- /springboot-exception-handler/src/test/java/kr/pe/advenoh/ExceptionHandlerApplicationTests.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class ExceptionHandlerApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /springboot-exception-handler/src/test/java/kr/pe/advenoh/utils/TestConfig.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.utils; 2 | 3 | public interface TestConfig { 4 | String name = "frank oh"; 5 | String mobileNumber = "010-0000-0000"; 6 | String address = "Seoul"; 7 | 8 | } 9 | -------------------------------------------------------------------------------- /springboot-handler-method-argument-resolver/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-handler-method-argument-resolver/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /springboot-handler-method-argument-resolver/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /springboot-handler-method-argument-resolver/rest/controller.http: -------------------------------------------------------------------------------- 1 | ### 2 | GET http://localhost:8080/test -------------------------------------------------------------------------------- /springboot-handler-method-argument-resolver/src/main/java/kr/pe/advenoh/resolver/ClientIp.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.resolver; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target(ElementType.PARAMETER) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface ClientIp { 11 | } 12 | -------------------------------------------------------------------------------- /springboot-handler-method-argument-resolver/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # Server Properties 2 | server.port=8080 3 | server.compression.enabled=true 4 | 5 | #Log 6 | spring.output.ansi.enabled=always 7 | logging.level.root=DEBUG 8 | logging.level.org.springframework.web=DEBUG 9 | logging.level.org.hibernate=DEBUG -------------------------------------------------------------------------------- /springboot-handler-method-argument-resolver/src/test/java/kr/pe/advenoh/HandlerMethodArgumentResolverApplicationTests.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class HandlerMethodArgumentResolverApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /springboot-jpa-many-to-many/.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 | -------------------------------------------------------------------------------- /springboot-jpa-many-to-many/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-jpa-many-to-many/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /springboot-jpa-many-to-many/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip 2 | -------------------------------------------------------------------------------- /springboot-jpa-many-to-many/src/main/java/kr/pe/advenoh/JpaManyToManyApplication.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class JpaManyToManyApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(JpaManyToManyApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /springboot-jpa-many-to-many/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /springboot-jpa-many-to-one-bidirectional/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-jpa-many-to-one-bidirectional/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /springboot-jpa-many-to-one-bidirectional/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip 2 | -------------------------------------------------------------------------------- /springboot-jpa-many-to-one-bidirectional/README.md: -------------------------------------------------------------------------------- 1 | Spring Boot JPA - JPA 다대일(N:1)+일대다(1:N) @ManyToOne, @OneToMany 연관관계 2 | ====== 3 | 4 | ## 블로그 5 | - JPA 다대일(N:1)+일대다(1:N) @ManyToOne, @OneToMany 연관관계 -------------------------------------------------------------------------------- /springboot-jpa-many-to-one-bidirectional/src/main/java/kr/pe/advenoh/repository/CommentRepository.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.repository; 2 | 3 | import kr.pe.advenoh.model.Comment; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface CommentRepository extends JpaRepository { 9 | Comment findByAuthor(String author); 10 | } -------------------------------------------------------------------------------- /springboot-jpa-many-to-one-bidirectional/src/main/java/kr/pe/advenoh/repository/PostRepository.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.repository; 2 | 3 | import kr.pe.advenoh.model.Post; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface PostRepository extends JpaRepository { 9 | } -------------------------------------------------------------------------------- /springboot-jpa-many-to-one-unidirectional/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-jpa-many-to-one-unidirectional/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /springboot-jpa-many-to-one-unidirectional/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip 2 | -------------------------------------------------------------------------------- /springboot-jpa-many-to-one-unidirectional/README.md: -------------------------------------------------------------------------------- 1 | Spring Boot JPA - JPA 다대일(N:1)+일대다(1:N) @ManyToOne, @OneToMany 연관관계 2 | ====== 3 | 4 | ## 블로그 5 | - JPA 다대일(N:1)+일대다(1:N) @ManyToOne, @OneToMany 연관관계 -------------------------------------------------------------------------------- /springboot-jpa-many-to-one-unidirectional/src/main/java/kr/pe/advenoh/repository/CommentRepository.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.repository; 2 | 3 | import kr.pe.advenoh.model.Comment; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface CommentRepository extends JpaRepository { 9 | Comment findByAuthor(String author); 10 | } -------------------------------------------------------------------------------- /springboot-jpa-many-to-one-unidirectional/src/main/java/kr/pe/advenoh/repository/PostRepository.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.repository; 2 | 3 | import kr.pe.advenoh.model.Post; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface PostRepository extends JpaRepository { 9 | } -------------------------------------------------------------------------------- /springboot-jpa-n1-problem/.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 | -------------------------------------------------------------------------------- /springboot-jpa-n1-problem/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-jpa-n1-problem/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /springboot-jpa-n1-problem/.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 | -------------------------------------------------------------------------------- /springboot-jpa-n1-problem/src/main/java/kr/pe/advenoh/repository/CommentRepository.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.repository; 2 | 3 | import kr.pe.advenoh.model.Comment; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface CommentRepository extends JpaRepository { 9 | Comment findByAuthor(String author); 10 | } -------------------------------------------------------------------------------- /springboot-jpa-n1-problem/src/test/java/kr/pe/advenoh/JpaN1ProblemApplicationTests.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh; 2 | 3 | import org.junit.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class JpaN1ProblemApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-bidirectional-target/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-jpa-one-to-one-bidirectional-target/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-bidirectional-target/.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 | -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-bidirectional-target/src/main/java/kr/pe/advenoh/repository/PhoneRepository.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.repository; 2 | 3 | import kr.pe.advenoh.model.CellularPhone; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface PhoneRepository extends JpaRepository { 9 | } -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-bidirectional-target/src/main/java/kr/pe/advenoh/repository/UserRepository.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.repository; 2 | 3 | import kr.pe.advenoh.model.User; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface UserRepository extends JpaRepository { 9 | } -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-bidirectional/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-jpa-one-to-one-bidirectional/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-bidirectional/.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 | -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-bidirectional/src/main/java/kr/pe/advenoh/repository/PhoneRepository.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.repository; 2 | 3 | import kr.pe.advenoh.model.CellularPhone; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface PhoneRepository extends JpaRepository { 9 | } -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-bidirectional/src/main/java/kr/pe/advenoh/repository/UserRepository.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.repository; 2 | 3 | import kr.pe.advenoh.model.User; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface UserRepository extends JpaRepository { 9 | } -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-unidirectional/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-jpa-one-to-one-unidirectional/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-unidirectional/.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 | -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-unidirectional/src/main/java/kr/pe/advenoh/model/enums/PhoneType.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.model.enums; 2 | 3 | public enum PhoneType { 4 | HOME_PHONE, 5 | CELLULAR_PHONE 6 | } 7 | -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-unidirectional/src/main/java/kr/pe/advenoh/repository/PhoneRepository.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.repository; 2 | 3 | import kr.pe.advenoh.model.CellularPhone; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface PhoneRepository extends JpaRepository { 9 | } -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-unidirectional/src/main/java/kr/pe/advenoh/repository/UserRepository.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.repository; 2 | 3 | import kr.pe.advenoh.model.User; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface UserRepository extends JpaRepository { 9 | } -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-unidirectional/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-unidirectional/target/classes/kr/pe/advenoh/SpringbootJpaOneToOneUnidirectionalApplication.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-jpa-one-to-one-unidirectional/target/classes/kr/pe/advenoh/SpringbootJpaOneToOneUnidirectionalApplication.class -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-unidirectional/target/maven-archiver/pom.properties: -------------------------------------------------------------------------------- 1 | groupId=kr.pe.advenoh 2 | artifactId=springboot-jpa-one-to-one-unidirectional 3 | version=0.0.1-SNAPSHOT 4 | -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-unidirectional/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst: -------------------------------------------------------------------------------- 1 | kr/pe/advenoh/SpringbootJpaOneToOneUnidirectionalApplication.class 2 | -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-unidirectional/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst: -------------------------------------------------------------------------------- 1 | /Users/ykoh/IdeaProjects/tutorials-java/springboot-jpa-one-to-one-unidirectional/src/main/java/kr/pe/advenoh/SpringbootJpaOneToOneUnidirectionalApplication.java 2 | -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-unidirectional/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst: -------------------------------------------------------------------------------- 1 | kr/pe/advenoh/SpringbootJpaOneToOneUnidirectionalApplicationTests.class 2 | -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-unidirectional/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst: -------------------------------------------------------------------------------- 1 | /Users/ykoh/IdeaProjects/tutorials-java/springboot-jpa-one-to-one-unidirectional/src/test/java/kr/pe/advenoh/SpringbootJpaOneToOneUnidirectionalApplicationTests.java 2 | -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-unidirectional/target/springboot-jpa-one-to-one-unidirectional-0.0.1-SNAPSHOT.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-jpa-one-to-one-unidirectional/target/springboot-jpa-one-to-one-unidirectional-0.0.1-SNAPSHOT.jar -------------------------------------------------------------------------------- /springboot-jpa-one-to-one-unidirectional/target/test-classes/kr/pe/advenoh/SpringbootJpaOneToOneUnidirectionalApplicationTests.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-jpa-one-to-one-unidirectional/target/test-classes/kr/pe/advenoh/SpringbootJpaOneToOneUnidirectionalApplicationTests.class -------------------------------------------------------------------------------- /springboot-jpa-pagination/.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 | -------------------------------------------------------------------------------- /springboot-jpa-pagination/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-jpa-pagination/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /springboot-jpa-pagination/.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 | -------------------------------------------------------------------------------- /springboot-jpa-pagination/src/main/java/kr/pe/advenoh/repository/BookRepository.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.repository; 2 | 3 | import kr.pe.advenoh.model.Book; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface BookRepository extends JpaRepository { 9 | } -------------------------------------------------------------------------------- /springboot-jpa-pagination/src/test/java/kr/pe/advenoh/JpaPaginationApplicationTests.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class JpaPaginationApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /springboot-jpa-repeated-columns-problem/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-jpa-repeated-columns-problem/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /springboot-jpa-repeated-columns-problem/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /springboot-jpa-repeated-columns-problem/src/main/java/kr/pe/advenoh/JpaApplication.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class JpaApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(JpaApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /springboot-jpa-repeated-columns-problem/src/main/java/kr/pe/advenoh/repository/ItemRepository.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.repository; 2 | 3 | import kr.pe.advenoh.model.entity.working.Item; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface ItemRepository extends JpaRepository { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /springboot-jpa-repeated-columns-problem/src/main/java/kr/pe/advenoh/repository/OrderItemRepository.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.repository; 2 | 3 | import kr.pe.advenoh.model.entity.working.OrderItemMapping; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface OrderItemRepository extends JpaRepository { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /springboot-jpa-repeated-columns-problem/src/main/java/kr/pe/advenoh/repository/OrderRepository.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.repository; 2 | 3 | import kr.pe.advenoh.model.entity.working.Order; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface OrderRepository extends JpaRepository { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /springboot-jpa-repeated-columns-problem/src/main/java/kr/pe/advenoh/repository/VodCollectionRepository.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.repository; 2 | 3 | public interface VodCollectionRepository { 4 | } 5 | -------------------------------------------------------------------------------- /springboot-jpa-repeated-columns-problem/src/main/java/kr/pe/advenoh/spring/AuditingConfig.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.spring; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.data.jpa.repository.config.EnableJpaAuditing; 5 | 6 | @Configuration 7 | @EnableJpaAuditing 8 | public class AuditingConfig { 9 | } -------------------------------------------------------------------------------- /springboot-jpa-repeated-columns-problem/src/test/java/kr/pe/advenoh/JpaApplicationTests.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class JpaApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /springboot-jpa-unit-test/.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 | -------------------------------------------------------------------------------- /springboot-jpa-unit-test/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-jpa-unit-test/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /springboot-jpa-unit-test/.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 | -------------------------------------------------------------------------------- /springboot-jpa-unit-test/src/main/java/kr/pe/advenoh/JpaUnitTestApplication.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class JpaUnitTestApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(JpaUnitTestApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /springboot-jpa-unit-test/src/main/java/kr/pe/advenoh/repository/BookRepository.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh.repository; 2 | 3 | import kr.pe.advenoh.model.Book; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface BookRepository extends JpaRepository { 9 | public Book findByTitle(String title); 10 | public Book findByAuthor(String author); 11 | } -------------------------------------------------------------------------------- /springboot-messaging-rabbitmq/src/main/resources/log4j.properties: -------------------------------------------------------------------------------- 1 | # Set root logger level to DEBUG and its only appender to A1. 2 | log4j.rootLogger=WARN, A1 3 | # A1 is set to be a ConsoleAppender. 4 | log4j.appender.A1=org.apache.log4j.ConsoleAppender 5 | # A1 uses PatternLayout. 6 | log4j.appender.A1.layout=org.apache.log4j.PatternLayout 7 | log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n 8 | log4j.category.org.springframework=INFO 9 | -------------------------------------------------------------------------------- /springboot-messaging-socketjs-stomp/src/main/java/hello/Application.java: -------------------------------------------------------------------------------- 1 | package hello; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class Application { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(Application.class, args); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /springboot-messaging-socketjs-stomp/src/main/java/hello/Greeting.java: -------------------------------------------------------------------------------- 1 | package hello; 2 | 3 | public class Greeting { 4 | 5 | private String content; 6 | 7 | public Greeting() { 8 | } 9 | 10 | public Greeting(String content) { 11 | this.content = content; 12 | } 13 | 14 | public String getContent() { 15 | return content; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /springboot-messaging-socketjs-stomp/src/main/java/hello/HelloMessage.java: -------------------------------------------------------------------------------- 1 | package hello; 2 | 3 | public class HelloMessage { 4 | 5 | private String name; 6 | 7 | public HelloMessage() { 8 | } 9 | 10 | public HelloMessage(String name) { 11 | this.name = name; 12 | } 13 | 14 | public String getName() { 15 | return name; 16 | } 17 | 18 | public void setName(String name) { 19 | this.name = name; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /springboot-messaging-socketjs-stomp/src/main/resources/static/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #f5f5f5; 3 | } 4 | 5 | #main-content { 6 | max-width: 940px; 7 | padding: 2em 3em; 8 | margin: 0 auto 20px; 9 | background-color: #fff; 10 | border: 1px solid #e5e5e5; 11 | -webkit-border-radius: 5px; 12 | -moz-border-radius: 5px; 13 | border-radius: 5px; 14 | } -------------------------------------------------------------------------------- /springboot-messaging-socketjs-stomp/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | Archetype Created Web Application 7 | 8 | -------------------------------------------------------------------------------- /springboot-messaging-socketjs-stomp/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Hello World!

4 | 5 | 6 | -------------------------------------------------------------------------------- /springboot-modelmapper/.gitignore: -------------------------------------------------------------------------------- 1 | HELP.md 2 | /target/ 3 | !.mvn/wrapper/maven-wrapper.jar 4 | 5 | ### STS ### 6 | .apt_generated 7 | .classpath 8 | .factorypath 9 | .project 10 | .settings 11 | .springBeans 12 | .sts4-cache 13 | 14 | ### IntelliJ IDEA ### 15 | .idea 16 | *.iws 17 | *.iml 18 | *.ipr 19 | 20 | ### NetBeans ### 21 | /nbproject/private/ 22 | /nbbuild/ 23 | /dist/ 24 | /nbdist/ 25 | /.nb-gradle/ 26 | /build/ 27 | -------------------------------------------------------------------------------- /springboot-modelmapper/src/main/java/com/baeldung/modelmapper/dto/UserDto.java: -------------------------------------------------------------------------------- 1 | package com.baeldung.modelmapper.dto; 2 | 3 | public class UserDto { 4 | 5 | private String name; 6 | 7 | public String getName() { 8 | return name; 9 | } 10 | 11 | public void setName(String name) { 12 | this.name = name; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /springboot-modelmapper/src/main/java/com/baeldung/modelmapper/service/IPostService.java: -------------------------------------------------------------------------------- 1 | package com.baeldung.modelmapper.service; 2 | 3 | import java.util.List; 4 | 5 | import com.baeldung.modelmapper.model.Post; 6 | 7 | public interface IPostService { 8 | 9 | List getPostsList(int page, int size, String sortDir, String sort); 10 | 11 | void updatePost(Post post); 12 | 13 | Post createPost(Post post); 14 | 15 | Post getPostById(Long id); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /springboot-modelmapper/src/main/java/com/baeldung/modelmapper/service/IUserService.java: -------------------------------------------------------------------------------- 1 | package com.baeldung.modelmapper.service; 2 | 3 | import com.baeldung.modelmapper.model.User; 4 | 5 | public interface IUserService { 6 | 7 | User getCurrentUser(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /springboot-modelmapper/src/main/java/com/baeldung/persistence/dao/IFooDao.java: -------------------------------------------------------------------------------- 1 | package com.baeldung.persistence.dao; 2 | 3 | import org.springframework.data.jpa.repository.JpaRepository; 4 | 5 | import com.baeldung.persistence.model.Foo; 6 | 7 | public interface IFooDao extends JpaRepository { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /springboot-modelmapper/src/main/java/com/baeldung/persistence/service/IFooService.java: -------------------------------------------------------------------------------- 1 | package com.baeldung.persistence.service; 2 | 3 | import org.springframework.data.domain.Page; 4 | import org.springframework.data.domain.Pageable; 5 | 6 | import com.baeldung.persistence.IOperations; 7 | import com.baeldung.persistence.model.Foo; 8 | 9 | public interface IFooService extends IOperations { 10 | 11 | Page findPaginated(Pageable pageable); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /springboot-modelmapper/src/main/java/com/baeldung/services/CustomerService.java: -------------------------------------------------------------------------------- 1 | package com.baeldung.services; 2 | 3 | import java.util.List; 4 | 5 | import com.baeldung.persistence.model.Customer; 6 | 7 | public interface CustomerService { 8 | 9 | List allCustomers(); 10 | 11 | Customer getCustomerDetail(final String id); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /springboot-modelmapper/src/main/java/com/baeldung/services/ExampleService.java: -------------------------------------------------------------------------------- 1 | package com.baeldung.services; 2 | 3 | import com.baeldung.transfer.LoginForm; 4 | import org.springframework.stereotype.Service; 5 | 6 | @Service 7 | public class ExampleService { 8 | 9 | public boolean fakeAuthenticate(LoginForm lf) { 10 | return true; 11 | } 12 | } -------------------------------------------------------------------------------- /springboot-modelmapper/src/main/java/com/baeldung/services/OrderService.java: -------------------------------------------------------------------------------- 1 | package com.baeldung.services; 2 | 3 | import java.util.List; 4 | 5 | import com.baeldung.persistence.model.Order; 6 | 7 | public interface OrderService { 8 | 9 | List getAllOrdersForCustomer(String customerId); 10 | 11 | Order getOrderByIdForCustomer(String customerId, String orderId); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /springboot-modelmapper/src/main/java/com/baeldung/transfer/ResponseTransfer.java: -------------------------------------------------------------------------------- 1 | package com.baeldung.transfer; 2 | 3 | public class ResponseTransfer { 4 | 5 | private String text; 6 | 7 | public ResponseTransfer(String text) { 8 | this.setText(text); 9 | } 10 | 11 | public String getText() { 12 | return text; 13 | } 14 | 15 | public void setText(String text) { 16 | this.text = text; 17 | } 18 | } -------------------------------------------------------------------------------- /springboot-modelmapper/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | server.servlet.context-path=/spring-boot-rest 2 | 3 | ### Spring Boot default error handling configurations 4 | #server.error.whitelabel.enabled=false 5 | #server.error.include-stacktrace=always 6 | -------------------------------------------------------------------------------- /springboot-modelmapper/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /springboot-modelmapper/src/main/resources/persistence-mysql.properties: -------------------------------------------------------------------------------- 1 | # jdbc.X 2 | jdbc.driverClassName=com.mysql.jdbc.Driver 3 | jdbc.url=jdbc:mysql://localhost:3306/spring_hibernate4_01?createDatabaseIfNotExist=true 4 | jdbc.user=tutorialuser 5 | jdbc.pass=tutorialmy5ql 6 | 7 | # hibernate.X 8 | hibernate.dialect=org.hibernate.dialect.MySQL5Dialect 9 | hibernate.show_sql=false 10 | hibernate.hbm2ddl.auto=create-drop 11 | -------------------------------------------------------------------------------- /springboot-modelmapper/src/test/java/com/baeldung/Consts.java: -------------------------------------------------------------------------------- 1 | package com.baeldung; 2 | 3 | public interface Consts { 4 | int APPLICATION_PORT = 8080; 5 | } 6 | -------------------------------------------------------------------------------- /springboot-modelmapper/src/test/java/com/baeldung/rest/GitHubUser.java: -------------------------------------------------------------------------------- 1 | package com.baeldung.rest; 2 | 3 | public class GitHubUser { 4 | 5 | private String login; 6 | 7 | public GitHubUser() { 8 | super(); 9 | } 10 | 11 | // API 12 | 13 | public String getLogin() { 14 | return login; 15 | } 16 | 17 | public void setLogin(final String login) { 18 | this.login = login; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /springboot-modelmapper/src/test/java/com/baeldung/test/IMarshaller.java: -------------------------------------------------------------------------------- 1 | package com.baeldung.test; 2 | 3 | import java.util.List; 4 | 5 | public interface IMarshaller { 6 | 7 | String encode(final T entity); 8 | 9 | T decode(final String entityAsString, final Class clazz); 10 | 11 | List decodeList(final String entitiesAsString, final Class clazz); 12 | 13 | String getMime(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /springboot-modelmapper/src/test/java/com/baeldung/web/LiveTestSuiteLiveTest.java: -------------------------------------------------------------------------------- 1 | package com.baeldung.web; 2 | 3 | import com.baeldung.web.FooDiscoverabilityLiveTest; 4 | import org.junit.runner.RunWith; 5 | import org.junit.runners.Suite; 6 | 7 | @RunWith(Suite.class) 8 | @Suite.SuiteClasses({ 9 | // @formatter:off 10 | FooDiscoverabilityLiveTest.class, 11 | FooLiveTest.class, 12 | FooPageableLiveTest.class 13 | }) // 14 | public class LiveTestSuiteLiveTest { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /springboot-modelmapper/src/test/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | %5p <%d{yyyy-MM-dd HH:mm:ss}>[%C:%L] [%thread] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/.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 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-quartz-cluster-reactjs/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip 2 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/README.md: -------------------------------------------------------------------------------- 1 | Spring Boot Quartz Cluster 2 | ====== 3 | Spring Boot Quartz Cluster 관련 코드 4 | 5 | ## 블로그 6 | - Spring Boot + Quartz을 이용한 Job Scheduler 구현 (In-memory) -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/config/jest/cssTransform.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | // This is a custom Jest transformer turning style imports into empty objects. 4 | // http://facebook.github.io/jest/docs/en/webpack.html 5 | 6 | module.exports = { 7 | process() { 8 | return 'module.exports = {};'; 9 | }, 10 | getCacheKey() { 11 | // The output is always the same. 12 | return 'cssTransform'; 13 | }, 14 | }; 15 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": "src" 4 | }, 5 | "include": [ 6 | "src" 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-quartz-cluster-reactjs/app/public/favicon.ico -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-quartz-cluster-reactjs/app/public/logo192.png -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-quartz-cluster-reactjs/app/public/logo512.png -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/components/common/Header/index.js: -------------------------------------------------------------------------------- 1 | export {default} from './Header'; 2 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/components/common/PageTemplate/PageTemplate.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import styles from './PageTemplate.scss'; 3 | import classNames from 'classnames/bind'; 4 | import Header from "../Header"; 5 | 6 | const cx = classNames.bind(styles); 7 | 8 | const PageTemplate = ({children}) => ( 9 |
10 |
11 |
12 | {children} 13 |
14 |
15 | ); 16 | 17 | export default PageTemplate; 18 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/components/common/PageTemplate/PageTemplate.scss: -------------------------------------------------------------------------------- 1 | .page-template { 2 | main { 3 | background: gray; 4 | min-height: calc(100vh - 15rem); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/components/common/PageTemplate/index.js: -------------------------------------------------------------------------------- 1 | export {default} from './PageTemplate'; 2 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/components/modal/AddJobModal/AddJobModal.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-quartz-cluster-reactjs/app/src/components/modal/AddJobModal/AddJobModal.scss -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/components/modal/AddJobModal/index.js: -------------------------------------------------------------------------------- 1 | export {default} from './AddJobModal'; 2 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/components/modal/DeleteJobModal/DeleteJobModal.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-quartz-cluster-reactjs/app/src/components/modal/DeleteJobModal/DeleteJobModal.scss -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/components/modal/DeleteJobModal/index.js: -------------------------------------------------------------------------------- 1 | export {default} from './DeleteJobModal'; 2 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/components/notification/JobAlert/JobAlert.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import {Alert} from "react-bootstrap"; 3 | 4 | const JobAlert = ({visibleNotification, message, onCloseClick}) => { 5 | return ( 6 |
7 | {visibleNotification && {message}} 8 |
9 | ) 10 | }; 11 | 12 | export default JobAlert; 13 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/components/notification/JobAlert/index.js: -------------------------------------------------------------------------------- 1 | export {default} from './JobAlert'; 2 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/components/schedule/JobItem/JobItem.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-quartz-cluster-reactjs/app/src/components/schedule/JobItem/JobItem.scss -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/components/schedule/JobItem/index.js: -------------------------------------------------------------------------------- 1 | export {default} from './JobItem'; 2 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/components/schedule/JobList/JobList.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-quartz-cluster-reactjs/app/src/components/schedule/JobList/JobList.scss -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/components/schedule/JobList/index.js: -------------------------------------------------------------------------------- 1 | export {default} from './JobList'; 2 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/components/schedule/Status/Status.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-quartz-cluster-reactjs/app/src/components/schedule/Status/Status.scss -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/components/schedule/Status/index.js: -------------------------------------------------------------------------------- 1 | export {default} from './Status'; 2 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/components/schedule/StatusList/StatusList.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-quartz-cluster-reactjs/app/src/components/schedule/StatusList/StatusList.scss -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/components/schedule/StatusList/index.js: -------------------------------------------------------------------------------- 1 | export {default} from './StatusList'; 2 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/constants/index.js: -------------------------------------------------------------------------------- 1 | export const DATE_TIME_FORMAT = 'YYYY-MM-DD h:mm:ss'; 2 | export const MAX_INTERVAL_SECONDS = 15000; 3 | export const DELAY_TIME_FOR_MESSAGE = 5000; 4 | 5 | export const STATUS_KEY_TITLE = { 6 | 'numOfAllJobs': '모든 JOB', 7 | 'numOfRunningJobs': '실행중인 JOB', 8 | 'numOfGroups': 'Job 그룹' 9 | }; -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/pages/ListPage.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import PageTemplate from "components/common/PageTemplate"; 3 | import ScheduleContainer from "../containers/schedule/ScheduleContainer"; 4 | 5 | const ListPage = () => { 6 | return ( 7 | 8 | 9 | 10 | ); 11 | }; 12 | 13 | export default ListPage; 14 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/pages/NotFoundPage.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const NotFoundPage = () => { 4 | return ( 5 |
6 | NotFound 7 |
8 | ); 9 | }; 10 | 11 | export default NotFoundPage; 12 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/pages/index.js: -------------------------------------------------------------------------------- 1 | export {default as ListPage} from './ListPage'; 2 | export {default as NotFoundPage} from './NotFoundPage'; -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/store/index.js: -------------------------------------------------------------------------------- 1 | import configure from './configure'; 2 | 3 | export default configure(); -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/store/modules/index.js: -------------------------------------------------------------------------------- 1 | import {combineReducers} from 'redux'; 2 | import list from './list' 3 | import job from './job' 4 | import base from './base' 5 | import {penderReducer} from 'redux-pender'; 6 | 7 | export default combineReducers({ 8 | base, 9 | list, 10 | job, 11 | pender: penderReducer 12 | }); -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/styles/base.scss: -------------------------------------------------------------------------------- 1 | @import url(https://unpkg.com/bootstrap@4.1.0/dist/css/bootstrap.min.css); 2 | 3 | body { 4 | margin: 0; 5 | padding: 0; 6 | font-family: sans-serif; 7 | } 8 | 9 | .container { 10 | max-width: 1000px; 11 | margin-left: auto; 12 | margin-right: auto; 13 | padding-left: 15px; 14 | padding-right: 15px; 15 | } -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/app/src/utils/api.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | export const addJob = (formData) => { 4 | return axios.post(`/api/scheduler/job`, formData); 5 | }; 6 | 7 | export const deleteJob = ({jobName, groupName}) => { 8 | let params = {jobName: jobName, groupName: groupName}; 9 | return axios.delete(`/api/scheduler/job`, {params: params}) 10 | }; 11 | export const getScheduleInfo = () => axios.get(`/api/scheduler/jobs`); -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/src/main/java/com/advenoh/QuartzApplication.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.data.jpa.repository.config.EnableJpaAuditing; 6 | 7 | @SpringBootApplication 8 | public class QuartzApplication { 9 | public static void main(String[] args) { 10 | SpringApplication.run(QuartzApplication.class, args); 11 | } 12 | } -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/src/main/java/com/advenoh/dto/scheduler/ApiResponse.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.dto.scheduler; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | @Setter 7 | @Getter 8 | public class ApiResponse { 9 | private Boolean success; 10 | private String message; 11 | 12 | public ApiResponse(Boolean success, String message) { 13 | this.success = success; 14 | this.message = message; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/src/main/java/com/advenoh/dto/scheduler/JobResponse.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.dto.scheduler; 2 | 3 | import lombok.Builder; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | @Getter 8 | @Setter 9 | @Builder 10 | public class JobResponse { 11 | private String jobName; 12 | private String groupName; 13 | private String jobStatus; 14 | private String scheduleTime; 15 | private String lastFiredTime; 16 | private String nextFireTime; 17 | } 18 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/src/main/java/com/advenoh/dto/scheduler/StatusResponse.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.dto.scheduler; 2 | 3 | import lombok.Builder; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | import lombok.ToString; 7 | 8 | import java.util.List; 9 | 10 | @Getter 11 | @Setter 12 | @ToString 13 | @Builder 14 | public class StatusResponse { 15 | private int numOfAllJobs; 16 | private int numOfGroups; 17 | private int numOfRunningJobs; 18 | private List jobs; 19 | } 20 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/src/main/java/com/advenoh/model/JobType.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.model; 2 | 3 | public enum JobType { 4 | SIMPLE, 5 | CRON 6 | } 7 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/src/main/java/com/advenoh/model/StateType.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.model; 2 | 3 | public enum StateType { 4 | CREATE, 5 | DELETE, 6 | UPDATE, 7 | PAUSE, 8 | RESUME, 9 | STOP 10 | } -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/src/main/java/com/advenoh/repository/JobStatusRepository.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.repository; 2 | 3 | import com.advenoh.model.JobStatus; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface JobStatusRepository extends JpaRepository { 9 | } 10 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/src/main/java/com/advenoh/spring/config/JpaDatabaseConfig.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.spring.config; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.data.jpa.repository.config.EnableJpaAuditing; 5 | 6 | /** 7 | * https://stackoverflow.com/questions/51467132/spring-webmvctest-with-enablejpa-annotation 8 | */ 9 | @Configuration 10 | @EnableJpaAuditing 11 | public class JpaDatabaseConfig { 12 | } 13 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/src/test/java/com/advenoh/QuartzApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | import org.junit.Test; 4 | import org.junit.runner.RunWith; 5 | import org.springframework.boot.test.context.SpringBootTest; 6 | import org.springframework.test.context.junit4.SpringRunner; 7 | 8 | @RunWith(SpringRunner.class) 9 | @SpringBootTest 10 | public class QuartzApplicationTests { 11 | 12 | @Test 13 | public void contextLoads() { 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /springboot-quartz-cluster-reactjs/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | -------------------------------------------------------------------------------- /springboot-quartz-cluster/.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 | -------------------------------------------------------------------------------- /springboot-quartz-cluster/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-quartz-cluster/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /springboot-quartz-cluster/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip 2 | -------------------------------------------------------------------------------- /springboot-quartz-cluster/README.md: -------------------------------------------------------------------------------- 1 | Spring Boot Quartz Cluster 2 | ====== 3 | Spring Boot Quartz Cluster 관련 코드 4 | 5 | ## 블로그 6 | - Multi WAS 환경을 위한 Cluster 환경의 Quartz Job Scheduler 구현 -------------------------------------------------------------------------------- /springboot-quartz-cluster/src/main/java/com/advenoh/QuartzApplication.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.data.jpa.repository.config.EnableJpaAuditing; 6 | 7 | @SpringBootApplication 8 | public class QuartzApplication { 9 | public static void main(String[] args) { 10 | SpringApplication.run(QuartzApplication.class, args); 11 | } 12 | } -------------------------------------------------------------------------------- /springboot-quartz-cluster/src/main/java/com/advenoh/dto/scheduler/ApiResponse.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.dto.scheduler; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | @Setter 7 | @Getter 8 | public class ApiResponse { 9 | private Boolean success; 10 | private String message; 11 | 12 | public ApiResponse(Boolean success, String message) { 13 | this.success = success; 14 | this.message = message; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /springboot-quartz-cluster/src/main/java/com/advenoh/dto/scheduler/JobResponse.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.dto.scheduler; 2 | 3 | import lombok.Builder; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | @Getter 8 | @Setter 9 | @Builder 10 | public class JobResponse { 11 | private String jobName; 12 | private String groupName; 13 | private String jobStatus; 14 | private String scheduleTime; 15 | private String lastFiredTime; 16 | private String nextFireTime; 17 | } 18 | -------------------------------------------------------------------------------- /springboot-quartz-cluster/src/main/java/com/advenoh/dto/scheduler/StatusResponse.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.dto.scheduler; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import lombok.ToString; 6 | 7 | import java.util.List; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | public class StatusResponse { 13 | private int numOfAllJobs; 14 | private int numOfGroups; 15 | private int numOfRunningJobs; 16 | private List jobs; 17 | } 18 | -------------------------------------------------------------------------------- /springboot-quartz-cluster/src/main/java/com/advenoh/model/JobType.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.model; 2 | 3 | public enum JobType { 4 | SIMPLE, 5 | CRON 6 | } 7 | -------------------------------------------------------------------------------- /springboot-quartz-cluster/src/main/java/com/advenoh/model/StateType.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.model; 2 | 3 | public enum StateType { 4 | CREATE, 5 | DELETE, 6 | UPDATE, 7 | PAUSE, 8 | RESUME, 9 | STOP 10 | } -------------------------------------------------------------------------------- /springboot-quartz-cluster/src/main/java/com/advenoh/repository/JobStatusRepository.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.repository; 2 | 3 | import com.advenoh.model.JobStatus; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface JobStatusRepository extends JpaRepository { 9 | } 10 | -------------------------------------------------------------------------------- /springboot-quartz-cluster/src/main/java/com/advenoh/spring/config/JpaDatabaseConfig.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.spring.config; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.data.jpa.repository.config.EnableJpaAuditing; 5 | 6 | /** 7 | * https://stackoverflow.com/questions/51467132/spring-webmvctest-with-enablejpa-annotation 8 | */ 9 | @Configuration 10 | @EnableJpaAuditing 11 | public class JpaDatabaseConfig { 12 | } 13 | -------------------------------------------------------------------------------- /springboot-quartz-cluster/src/test/java/com/advenoh/QuartzApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | import org.junit.Test; 4 | import org.junit.runner.RunWith; 5 | import org.springframework.boot.test.context.SpringBootTest; 6 | import org.springframework.test.context.junit4.SpringRunner; 7 | 8 | @RunWith(SpringRunner.class) 9 | @SpringBootTest 10 | public class QuartzApplicationTests { 11 | 12 | @Test 13 | public void contextLoads() { 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /springboot-quartz-in-memory/.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 | -------------------------------------------------------------------------------- /springboot-quartz-in-memory/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-quartz-in-memory/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /springboot-quartz-in-memory/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip 2 | -------------------------------------------------------------------------------- /springboot-quartz-in-memory/README.md: -------------------------------------------------------------------------------- 1 | Spring Boot Quartz - 메모리기반 2 | ====== 3 | Spring Boot Quartz 관련 코드 4 | 5 | ## 블로그 6 | - Spring Boot + Quartz을 이용한 Job Scheduler 구현 (In-memory) -------------------------------------------------------------------------------- /springboot-quartz-in-memory/src/main/java/com/advenoh/QuartzApplication.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class QuartzApplication { 8 | public static void main(String[] args) { 9 | SpringApplication.run(QuartzApplication.class, args); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /springboot-quartz-in-memory/src/main/java/com/advenoh/dto/ApiResponse.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | @Setter 7 | @Getter 8 | public class ApiResponse { 9 | private Boolean success; 10 | private String message; 11 | 12 | public ApiResponse(Boolean success, String message) { 13 | this.success = success; 14 | this.message = message; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /springboot-quartz-in-memory/src/main/java/com/advenoh/dto/JobResponse.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.dto; 2 | 3 | import lombok.Builder; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | 7 | @Getter 8 | @Setter 9 | @Builder 10 | public class JobResponse { 11 | private String jobName; 12 | private String groupName; 13 | private String jobStatus; 14 | private String scheduleTime; 15 | private String lastFiredTime; 16 | private String nextFireTime; 17 | } 18 | -------------------------------------------------------------------------------- /springboot-quartz-in-memory/src/main/java/com/advenoh/dto/JobStatusResponse.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import lombok.ToString; 6 | 7 | import java.util.List; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | public class JobStatusResponse { 13 | private int numOfAllJobs; 14 | private int numOfGroups; 15 | private int numOfRunningJobs; 16 | private List jobs; 17 | } 18 | -------------------------------------------------------------------------------- /springboot-quartz-in-memory/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # Server Properties 2 | server.port=8080 3 | server.compression.enabled=true 4 | spring.application.name=JobScheduler 5 | 6 | #Quartz 7 | spring.quartz.scheduler-name=QuartzScheduler 8 | spring.quartz.job-store-type=memory 9 | spring.quartz.properties.org.quartz.threadPool.threadCount = 5 10 | 11 | #Log 12 | spring.output.ansi.enabled=always 13 | logging.level.root=DEBUG 14 | logging.level.org.springframework=INFO 15 | -------------------------------------------------------------------------------- /springboot-quartz-in-memory/src/test/java/com/advenoh/QuartzApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | import org.junit.Test; 4 | import org.junit.runner.RunWith; 5 | import org.springframework.boot.test.context.SpringBootTest; 6 | import org.springframework.test.context.junit4.SpringRunner; 7 | 8 | @RunWith(SpringRunner.class) 9 | @SpringBootTest 10 | public class QuartzApplicationTests { 11 | 12 | @Test 13 | public void contextLoads() { 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/README.md: -------------------------------------------------------------------------------- 1 | http://javabypatel.blogspot.sg/2017/10/quartz-scheduler-spring-boot-example.html -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/frontend-app-angular/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/frontend-app-angular/.typingsrc: -------------------------------------------------------------------------------- 1 | { 2 | "rejectUnauthorized": false 3 | } -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/frontend-app-angular/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, OnInit} from '@angular/core'; 2 | import { Router, ActivatedRoute } from '@angular/router'; 3 | 4 | @Component({ 5 | selector: "app", 6 | template: `` 7 | }) 8 | export class AppComponent implements OnInit { 9 | constructor(private _route: ActivatedRoute) {} 10 | ngOnInit() {} 11 | } 12 | 13 | -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/frontend-app-angular/src/app/app.routes.ts: -------------------------------------------------------------------------------- 1 | import { Routes, RouterModule } from '@angular/router'; 2 | 3 | import { SchedulerComponent } from './scheduler/scheduler.component'; 4 | 5 | export const appRoutes: Routes = [ 6 | { 7 | path: '', 8 | component: SchedulerComponent, 9 | } 10 | ]; 11 | -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/frontend-app-angular/src/app/scheduler/scheduler.model.ts: -------------------------------------------------------------------------------- 1 | 2 | export class Job{ 3 | id: number 4 | name: string; 5 | startDate: string; 6 | } 7 | 8 | -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/frontend-app-angular/src/app/scheduler/scheduler.routes.ts: -------------------------------------------------------------------------------- 1 | import { Routes, RouterModule } from '@angular/router'; 2 | import { ModuleWithProviders } from '@angular/core'; 3 | import { SchedulerComponent } from './scheduler.component'; 4 | 5 | const routes: Routes = [ 6 | { 7 | path: '', 8 | component: SchedulerComponent 9 | } 10 | ]; 11 | export const SchedulerRoutes: ModuleWithProviders = RouterModule.forChild(routes); -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/frontend-app-angular/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | declare var app: { 2 | environment: string; 3 | }; 4 | 5 | declare function require(id: string): any; 6 | -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/frontend-app-angular/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "experimentalDecorators": true, 5 | "emitDecoratorMetadata": true, 6 | "outDir": "dist" 7 | }, 8 | "compileOnSave": false 9 | } 10 | -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/frontend-app-angular/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "bootstrap": "registry:dt/bootstrap#3.3.5+20160726204056", 4 | "core-js": "registry:dt/core-js#0.0.0+20160914114559" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/frontend-app-angular/typings/globals/bootstrap/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "resolution": "main", 3 | "tree": { 4 | "src": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/e94e9a86308b7306bb74a973c4e18f37895f7298/bootstrap/index.d.ts", 5 | "raw": "registry:dt/bootstrap#3.3.5+20160726204056", 6 | "typings": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/e94e9a86308b7306bb74a973c4e18f37895f7298/bootstrap/index.d.ts" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/frontend-app-angular/typings/globals/core-js/typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "resolution": "main", 3 | "tree": { 4 | "src": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/be0ba281b67575b3b626a6bbb15b152add97244e/core-js/core-js.d.ts", 5 | "raw": "registry:dt/core-js#0.0.0+20160914114559", 6 | "typings": "https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/be0ba281b67575b3b626a6bbb15b152add97244e/core-js/core-js.d.ts" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/frontend-app-angular/typings/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/frontend-app-reactjs/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/frontend-app-reactjs/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-quartz-reactjs-angularjs/frontend-app-reactjs/public/favicon.ico -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/frontend-app-reactjs/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | } 10 | ], 11 | "start_url": ".", 12 | "display": "standalone", 13 | "theme_color": "#000000", 14 | "background_color": "#ffffff" 15 | } 16 | -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/frontend-app-reactjs/src/App.js: -------------------------------------------------------------------------------- 1 | import React, {Component} from 'react'; 2 | import './App.css'; 3 | import SchedulerApp from "./component/SchedulerApp"; 4 | 5 | class App extends Component { 6 | render() { 7 | return ( 8 |
9 | 10 |
11 | ); 12 | } 13 | } 14 | 15 | export default App; 16 | -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/frontend-app-reactjs/src/App.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './App'; 4 | 5 | it('renders without crashing', () => { 6 | const div = document.createElement('div'); 7 | ReactDOM.render(, div); 8 | ReactDOM.unmountComponentAtNode(div); 9 | }); 10 | -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/frontend-app-reactjs/src/component/SchedulerComponent.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-quartz-reactjs-angularjs/frontend-app-reactjs/src/component/SchedulerComponent.js -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/frontend-app-reactjs/src/constants.js: -------------------------------------------------------------------------------- 1 | export const SCHEDULER_API_URL = 'http://localhost:7080/scheduler'; 2 | export const DATE_TIME_FORMAT = 'YYYY-MM-DD h:mm:ss'; -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/frontend-app-reactjs/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | padding: 0; 4 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", 5 | "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", 6 | sans-serif; 7 | -webkit-font-smoothing: antialiased; 8 | -moz-osx-font-smoothing: grayscale; 9 | } 10 | 11 | code { 12 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", 13 | monospace; 14 | } 15 | -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/src/main/java/com/javabypatel/demo/SpringBootQuartzAppApplication.java: -------------------------------------------------------------------------------- 1 | package com.javabypatel.demo; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class SpringBootQuartzAppApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(SpringBootQuartzAppApplication.class, args); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /springboot-quartz-reactjs-angularjs/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.out 5 | 6 | [%d{yyyy-MM-dd HH:mm:ss}] [%-5p] %C{1}.%M[%L] %m%n 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /springboot-resttemplate/.gitignore: -------------------------------------------------------------------------------- 1 | HELP.md 2 | /target/ 3 | !.mvn/wrapper/maven-wrapper.jar 4 | 5 | ### STS ### 6 | .apt_generated 7 | .classpath 8 | .factorypath 9 | .project 10 | .settings 11 | .springBeans 12 | .sts4-cache 13 | 14 | ### IntelliJ IDEA ### 15 | .idea 16 | *.iws 17 | *.iml 18 | *.ipr 19 | 20 | ### NetBeans ### 21 | /nbproject/private/ 22 | /nbbuild/ 23 | /dist/ 24 | /nbdist/ 25 | /.nb-gradle/ 26 | /build/ 27 | -------------------------------------------------------------------------------- /springboot-resttemplate/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-resttemplate/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /springboot-resttemplate/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip 2 | -------------------------------------------------------------------------------- /springboot-resttemplate/README.md: -------------------------------------------------------------------------------- 1 | https://jinhokwon.tistory.com/7 -------------------------------------------------------------------------------- /springboot-resttemplate/src/main/java/com/advenoh/SpringRestTemplateApplication.java: -------------------------------------------------------------------------------- 1 | package com.advenoh; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class SpringRestTemplateApplication { 8 | public static void main(String[] args) { 9 | SpringApplication.run(SpringRestTemplateApplication.class, args); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /springboot-resttemplate/src/main/java/com/advenoh/exception/EmployeeNotFoundException.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.exception; 2 | 3 | public class EmployeeNotFoundException extends RuntimeException { 4 | private static final long serialVersionUID = 5664296823995347411L; 5 | 6 | public EmployeeNotFoundException(String message, Throwable cause) { 7 | super(message, cause); 8 | } 9 | 10 | public EmployeeNotFoundException(String message) { 11 | super(message); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /springboot-resttemplate/src/main/java/com/advenoh/model/Address.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | @Data 9 | @Builder 10 | @AllArgsConstructor 11 | @NoArgsConstructor 12 | public class Address { 13 | private String street; 14 | private String city; 15 | private String country; 16 | private String postalCode; 17 | } 18 | -------------------------------------------------------------------------------- /springboot-resttemplate/src/main/java/com/advenoh/model/Gender.java: -------------------------------------------------------------------------------- 1 | package com.advenoh.model; 2 | 3 | public enum Gender { 4 | FEMALE, MALE; 5 | } -------------------------------------------------------------------------------- /springboot-resttemplate/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # Server Properties 2 | server.port=8080 3 | server.compression.enabled=true 4 | 5 | #Log 6 | spring.output.ansi.enabled=always 7 | logging.level.root=DEBUG 8 | logging.level.org.springframework=INFO 9 | -------------------------------------------------------------------------------- /springboot-security/src/main/java/hello/Application.java: -------------------------------------------------------------------------------- 1 | package hello; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class Application { 8 | 9 | public static void main(String[] args) throws Throwable { 10 | SpringApplication.run(Application.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /springboot-security/src/main/resources/templates/home.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Spring Security Example 5 | 6 | 7 |

Welcome!

8 | 9 |

Click here to see a greeting.

10 | 11 | -------------------------------------------------------------------------------- /springboot-whitelabel-error-page/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenshin579/tutorials-java/783bdf228142fe1a0dc7c06b0d0d20d3101dead5/springboot-whitelabel-error-page/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /springboot-whitelabel-error-page/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /springboot-whitelabel-error-page/rest/error.http: -------------------------------------------------------------------------------- 1 | ### whitelabel error page 2 | GET http://localhost:8080/notfound 3 | Accept: text/html 4 | 5 | ### 404 response 6 | GET http://localhost:8080/notfound 7 | Accept: application/json 8 | 9 | ### 5xx 10 | GET http://localhost:8080/test/5xx 11 | Accept: application/json -------------------------------------------------------------------------------- /springboot-whitelabel-error-page/src/main/java/kr/pe/advenoh/SpringbootWhitelabelErrorPageApplication.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class SpringbootWhitelabelErrorPageApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(SpringbootWhitelabelErrorPageApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /springboot-whitelabel-error-page/src/main/resources/templates/error/404.mustache: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 404 6 | 7 | 8 | 404 error page 9 |

timestamp : {{timestamp}}

10 |

status : {{status}}

11 |

error : {{error}}

12 |

message : {{message}}

13 |

path : {{path}}

14 | 15 | -------------------------------------------------------------------------------- /springboot-whitelabel-error-page/src/main/resources/templates/error/5xx.mustache: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 5xx 6 | 7 | 8 | 5xx error page 9 |

timestamp : {{timestamp}}

10 |

status : {{status}}

11 |

error : {{error}}

12 |

message : {{message}}

13 |

path : {{path}}

14 | 15 | -------------------------------------------------------------------------------- /springboot-whitelabel-error-page/src/main/resources/templates/errors/404-custom.mustache: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 404 6 | 7 | 8 | 404 custom error page 9 | 10 | -------------------------------------------------------------------------------- /springboot-whitelabel-error-page/src/main/resources/templates/index.mustache: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Home 6 | 7 | 8 | {{name}}'s Home Page 9 | 10 | -------------------------------------------------------------------------------- /springboot-whitelabel-error-page/src/test/java/kr/pe/advenoh/SpringbootWhiltelabelErrorPageApplicationTests.java: -------------------------------------------------------------------------------- 1 | package kr.pe.advenoh; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class SpringbootWhiltelabelErrorPageApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /zencoder/src/test/java/com/java/examples/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.java.examples; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.assertTrue; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest { 11 | /** 12 | * Rigorous Test :-) 13 | */ 14 | @Test 15 | public void shouldAnswerWithTrue() { 16 | assertTrue(true); 17 | } 18 | } 19 | --------------------------------------------------------------------------------