├── .gitignore ├── 01-ToolJavaCoreCleanCode ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── ApartmentSelling │ ├── .DS_Store │ ├── .gitignore │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ ├── ReadMe.md │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ │ ├── .DS_Store │ │ ├── main │ │ ├── .DS_Store │ │ ├── java │ │ │ ├── .DS_Store │ │ │ └── com │ │ │ │ ├── .DS_Store │ │ │ │ └── onemount │ │ │ │ ├── .DS_Store │ │ │ │ └── ApartmentSelling │ │ │ │ ├── .DS_Store │ │ │ │ ├── ApartmentSellingApplication.java │ │ │ │ ├── controller │ │ │ │ ├── APIController.java │ │ │ │ └── DemoController.java │ │ │ │ ├── model │ │ │ │ ├── .DS_Store │ │ │ │ ├── Apartment.java │ │ │ │ ├── District.java │ │ │ │ └── Project.java │ │ │ │ └── repository │ │ │ │ └── DistrictRepository.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── com │ │ └── onemount │ │ └── ApartmentSelling │ │ └── ApartmentSellingApplicationTests.java ├── Barcelona │ └── barcelonateam │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── onemount │ │ │ │ └── barcelonateam │ │ │ │ ├── BarcelonateamApplication.java │ │ │ │ ├── controller │ │ │ │ └── APIController.java │ │ │ │ ├── model │ │ │ │ ├── Coach.java │ │ │ │ └── Player.java │ │ │ │ ├── repository │ │ │ │ └── PlayerRepository.java │ │ │ │ └── service │ │ │ │ └── CoachService.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── com │ │ └── onemount │ │ └── barcelonateam │ │ └── BarcelonateamApplicationTests.java ├── HomeWork01.md ├── HomeWork02.md ├── ReadMe.md ├── carlist │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── onemount │ │ │ │ └── carlist │ │ │ │ └── CarlistApplication.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── com │ │ └── onemount │ │ └── carlist │ │ └── CarlistApplicationTests.java └── tourlisting │ ├── .gitignore │ ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── onemount │ │ │ └── tourlisting │ │ │ └── TourlistingApplication.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── com │ └── onemount │ └── tourlisting │ └── TourlistingApplicationTests.java ├── 02-Collection_QueryParam ├── Barcelona │ └── 01 │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── onemount │ │ │ │ └── barcelonateam │ │ │ │ ├── BarcelonateamApplication.java │ │ │ │ ├── controller │ │ │ │ └── APIController.java │ │ │ │ ├── exception │ │ │ │ └── TeamException.java │ │ │ │ ├── model │ │ │ │ ├── Coach.java │ │ │ │ ├── Player.java │ │ │ │ ├── Position.java │ │ │ │ ├── Substitute.java │ │ │ │ └── TeamAndSubstitute.java │ │ │ │ ├── repository │ │ │ │ └── PlayerRepository.java │ │ │ │ └── service │ │ │ │ └── CoachService.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── com │ │ └── onemount │ │ └── barcelonateam │ │ └── BarcelonateamApplicationTests.java └── ReadMe.md ├── 04-Cinema ├── 01-Modelling │ └── cinema │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── images │ │ └── vincinema.webp │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── cinema │ │ │ │ ├── CinemaApplication.java │ │ │ │ └── model │ │ │ │ ├── Cinema.java │ │ │ │ ├── Customer.java │ │ │ │ ├── Film.java │ │ │ │ ├── Order.java │ │ │ │ ├── OrderLine.java │ │ │ │ ├── Reservation.java │ │ │ │ ├── Room.java │ │ │ │ ├── Seat.java │ │ │ │ ├── Staff.java │ │ │ │ └── Ticket.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── cinema │ │ └── CinemaApplicationTests.java ├── BMI │ ├── .gitignore │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ ├── OpenClose.md │ ├── ReadMe.md │ ├── images │ │ ├── BMI_Calculator.jpg │ │ ├── duplicate_logic.jpg │ │ ├── loose_coupling.jpg │ │ ├── photoshop.jpg │ │ ├── postman.jpg │ │ ├── share_service.jpg │ │ └── tigh_coupling.jpg │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── solid │ │ │ │ ├── SolidApplication.java │ │ │ │ ├── controller │ │ │ │ ├── BMIController.java │ │ │ │ ├── BMIController2.java │ │ │ │ ├── BMIController3.java │ │ │ │ └── PostMapping.java │ │ │ │ ├── request │ │ │ │ └── BMIRequest.java │ │ │ │ ├── response │ │ │ │ └── BMIResult.java │ │ │ │ ├── rest │ │ │ │ └── BMIRest.java │ │ │ │ └── service │ │ │ │ └── HealthService.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── lang │ │ │ └── message.properties │ │ │ └── templates │ │ │ ├── bmi.html │ │ │ ├── bmi2.html │ │ │ ├── bmi3.html │ │ │ └── layout.html │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── solid │ │ └── SolidApplicationTests.java ├── Schedule │ ├── 01Basic │ │ └── demoschedule │ │ │ ├── .gitignore │ │ │ ├── .mvn │ │ │ └── wrapper │ │ │ │ ├── MavenWrapperDownloader.java │ │ │ │ ├── maven-wrapper.jar │ │ │ │ └── maven-wrapper.properties │ │ │ ├── ReadMe.md │ │ │ ├── images │ │ │ ├── asyn_task.jpg │ │ │ ├── fixdelay.jpg │ │ │ └── fixed_rate_vs_fixed_delay.jpg │ │ │ ├── mvnw │ │ │ ├── mvnw.cmd │ │ │ ├── pom.xml │ │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── vn │ │ │ │ │ └── techmaster │ │ │ │ │ └── demoschedule │ │ │ │ │ ├── DemoscheduleApplication.java │ │ │ │ │ └── schedule │ │ │ │ │ ├── AsyncTasks.java │ │ │ │ │ ├── CronJob.java │ │ │ │ │ ├── FixedDelayTasks.java │ │ │ │ │ └── FixedRateTasks.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── vn │ │ │ └── techmaster │ │ │ └── demoschedule │ │ │ └── DemoscheduleApplicationTests.java │ └── 02WebClientIOT │ │ └── iot │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── images │ │ ├── iot.jpg │ │ ├── linechart.jpg │ │ └── localhost_8080_mono.jpg │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── iot │ │ │ │ ├── IotApplication.java │ │ │ │ ├── controller │ │ │ │ ├── HomeController.java │ │ │ │ ├── IOTController.java │ │ │ │ └── reponse │ │ │ │ │ └── IOTMeasure.java │ │ │ │ └── service │ │ │ │ └── IOTService.java │ │ └── resources │ │ │ ├── application.properties │ │ │ └── templates │ │ │ └── index.html │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── iot │ │ └── IotApplicationTests.java └── bmiservice │ ├── .gitignore │ ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── vn │ │ │ └── techmaster │ │ │ └── bmiservice │ │ │ ├── BmiserviceApplication.java │ │ │ ├── controller │ │ │ └── BMIController.java │ │ │ ├── request │ │ │ └── BMIRequest.java │ │ │ ├── response │ │ │ └── BMIResult.java │ │ │ └── service │ │ │ └── HealthService.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── vn │ └── techmaster │ └── bmiservice │ └── BmiserviceApplicationTests.java ├── 05-ExceptionHandling ├── 01-CheckVsUncheck │ ├── Building.java │ ├── CheckExcept.java │ ├── ChernobylDisaster.java │ ├── FireException.java │ ├── Main.java │ ├── ReadMe.md │ ├── SnakeBiteException.java │ └── UncheckExcept.java ├── 02-ExceptionHandler │ └── bmiservice │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── bmiservice │ │ │ │ ├── BmiserviceApplication.java │ │ │ │ ├── controller │ │ │ │ ├── BMIController.java │ │ │ │ ├── CustomExceptionHandler.java │ │ │ │ └── DoctorController.java │ │ │ │ ├── exception │ │ │ │ ├── APIError.java │ │ │ │ ├── BMIException.java │ │ │ │ ├── BMILogicException.java │ │ │ │ └── RecordNotFoundException.java │ │ │ │ ├── model │ │ │ │ └── Doctor.java │ │ │ │ ├── repository │ │ │ │ └── DoctorRepository.java │ │ │ │ ├── request │ │ │ │ └── BMIRequest.java │ │ │ │ ├── response │ │ │ │ └── BMIResult.java │ │ │ │ └── service │ │ │ │ └── HealthService.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── bmiservice │ │ └── BmiserviceApplicationTests.java └── ReadMe.md ├── 06-UnitTestBarcelona ├── .gitignore ├── ReadMe.md ├── barcelonateam │ ├── .gitignore │ ├── ReadMe.md │ ├── UnitTestRest.md │ ├── gitignore │ ├── images │ │ ├── bad_error.jpg │ │ ├── better_error.jpg │ │ ├── nice_error.jpg │ │ └── rest_controller_advice.jpg │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── onemount │ │ │ │ └── barcelonateam │ │ │ │ ├── BarcelonateamApplication.java │ │ │ │ ├── controller │ │ │ │ ├── APIController.java │ │ │ │ └── CustomExceptionHandler.java │ │ │ │ ├── exceptions │ │ │ │ ├── APIError.java │ │ │ │ ├── APIException.java │ │ │ │ └── TeamException.java │ │ │ │ ├── model │ │ │ │ ├── Coach.java │ │ │ │ ├── Player.java │ │ │ │ ├── Position.java │ │ │ │ ├── Substitute.java │ │ │ │ └── TeamStatus.java │ │ │ │ ├── repository │ │ │ │ └── PlayerRepository.java │ │ │ │ └── service │ │ │ │ └── CoachService.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── com │ │ └── onemount │ │ └── barcelonateam │ │ └── BarcelonateamApplicationTests.java ├── images │ ├── choose_team.jpg │ └── team_group.jpg ├── samples │ ├── APIError.java │ ├── APIException.java │ ├── CustomExceptionHandler.java │ └── TeamException.java └── team.json ├── 07-OpenFeign ├── ReadMe.md ├── barcelonateam │ ├── .gitignore │ ├── ReadMe.md │ ├── gitignore │ ├── images │ │ ├── bad_error.jpg │ │ ├── better_error.jpg │ │ ├── nice_error.jpg │ │ └── rest_controller_advice.jpg │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── onemount │ │ │ │ └── barcelonateam │ │ │ │ ├── BarcelonateamApplication.java │ │ │ │ ├── controller │ │ │ │ ├── APIController.java │ │ │ │ └── CustomExceptionHandler.java │ │ │ │ ├── exceptions │ │ │ │ ├── APIError.java │ │ │ │ ├── APIException.java │ │ │ │ └── TeamException.java │ │ │ │ ├── model │ │ │ │ ├── Coach.java │ │ │ │ ├── Player.java │ │ │ │ ├── Position.java │ │ │ │ ├── Substitute.java │ │ │ │ └── TeamStatus.java │ │ │ │ ├── repository │ │ │ │ └── PlayerRepository.java │ │ │ │ ├── restclient │ │ │ │ ├── APIErrorDecoder.java │ │ │ │ └── BarcaRequest.java │ │ │ │ └── service │ │ │ │ └── CoachService.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── com │ │ └── onemount │ │ └── barcelonateam │ │ ├── FeignTest.java │ │ └── WebFluxClientTest.java └── openfeign │ ├── demofeign │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── vn │ │ │ └── techmaster │ │ │ └── GitHubExample.java │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── AppTest.java │ └── simplefeign │ ├── pom.xml │ └── src │ ├── main │ └── java │ │ └── vn │ │ └── techmaster │ │ ├── App.java │ │ ├── Contributor.java │ │ └── Issue.java │ └── test │ └── java │ └── vn │ └── techmaster │ └── AppTest.java ├── 08-RestCRUD ├── 01-CRUD │ └── bookstore │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── images │ │ ├── DELETE.jpg │ │ ├── GET.jpg │ │ ├── GET_by_Id.jpg │ │ ├── H2_Console.jpg │ │ ├── H2_Select.jpg │ │ ├── PATCH.jpg │ │ ├── POST.jpg │ │ └── PUT.jpg │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── bookstore │ │ │ │ ├── BookstoreApplication.java │ │ │ │ ├── controller │ │ │ │ └── APIController.java │ │ │ │ ├── model │ │ │ │ ├── Book.java │ │ │ │ └── BookPOJO.java │ │ │ │ ├── repository │ │ │ │ └── BookRespository.java │ │ │ │ └── service │ │ │ │ ├── BookService.java │ │ │ │ └── IBookService.java │ │ └── resources │ │ │ ├── application.properties │ │ │ └── book.sql │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── bookstore │ │ └── BookstoreApplicationTests.java ├── 02-CRUD-Feign │ └── bookstore │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── BuildProject.md │ │ ├── CRUD_REST.md │ │ ├── Faker.md │ │ ├── Hibernate_Validator.md │ │ ├── Logging.md │ │ ├── OpenFeign.md │ │ ├── ReadMe.md │ │ ├── Retry.md │ │ ├── images │ │ ├── DELETE.jpg │ │ ├── GET.jpg │ │ ├── GET_by_Id.jpg │ │ ├── H2_Console.jpg │ │ ├── H2_Select.jpg │ │ ├── PATCH.jpg │ │ ├── POST.jpg │ │ └── PUT.jpg │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── bookstore │ │ │ │ ├── BookstoreApplication.java │ │ │ │ ├── config │ │ │ │ └── AppConfig.java │ │ │ │ ├── controller │ │ │ │ ├── APIController.java │ │ │ │ ├── APIError.java │ │ │ │ └── CustomExceptionHandler.java │ │ │ │ ├── exception │ │ │ │ ├── APIException.java │ │ │ │ └── BookStoreException.java │ │ │ │ ├── model │ │ │ │ ├── Book.java │ │ │ │ └── BookPOJO.java │ │ │ │ ├── repository │ │ │ │ └── BookRespository.java │ │ │ │ ├── restclient │ │ │ │ ├── APIErrorDecoder.java │ │ │ │ ├── BaseRequest.java │ │ │ │ └── BookRequest.java │ │ │ │ └── service │ │ │ │ ├── BookService.java │ │ │ │ └── IBookService.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── book.sql │ │ │ └── log4j2.xml │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── bookstore │ │ └── FeignTest.java └── 03-CRM │ └── crm │ ├── .gitignore │ ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties │ ├── ReadMe.md │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── vn │ │ │ └── techmaster │ │ │ └── crm │ │ │ ├── CrmApplication.java │ │ │ ├── controller │ │ │ ├── CustomExceptionHandler.java │ │ │ └── CustomerController.java │ │ │ ├── exception │ │ │ ├── APIError.java │ │ │ └── CRMException.java │ │ │ ├── mapper │ │ │ └── CustomerMapper.java │ │ │ ├── model │ │ │ ├── Book.java │ │ │ ├── Customer.java │ │ │ └── CustomerPOJO.java │ │ │ ├── repository │ │ │ └── CustomerRepository.java │ │ │ └── service │ │ │ └── CustomerService.java │ └── resources │ │ ├── application.properties │ │ ├── customer.sql │ │ └── log4j2.xml │ └── test │ └── java │ └── vn │ └── techmaster │ └── crm │ └── RestTest.java ├── 09-RespositoryDAOPOJO └── crud │ ├── 01GetAllBooks │ └── bookstore │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── images │ │ └── getAllBooks.jpg │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── bookstore │ │ │ │ ├── BookstoreApplication.java │ │ │ │ ├── config │ │ │ │ └── RepoConfig.java │ │ │ │ ├── controller │ │ │ │ └── BookController.java │ │ │ │ ├── model │ │ │ │ └── Book.java │ │ │ │ └── repository │ │ │ │ ├── BookDao.java │ │ │ │ └── Dao.java │ │ └── resources │ │ │ ├── application.properties │ │ │ └── templates │ │ │ └── allbooks.html │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── bookstore │ │ └── BookstoreApplicationTests.java │ ├── 02LoadCSV │ └── bookstore │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── images │ │ └── getAllBooks.jpg │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── bookstore │ │ │ │ ├── BookstoreApplication.java │ │ │ │ ├── config │ │ │ │ └── RepoConfig.java │ │ │ │ ├── controller │ │ │ │ └── BookController.java │ │ │ │ ├── model │ │ │ │ └── Book.java │ │ │ │ └── repository │ │ │ │ ├── BookDao.java │ │ │ │ └── Dao.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── static │ │ │ └── book.csv │ │ │ └── templates │ │ │ └── allbooks.html │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── bookstore │ │ └── BookstoreApplicationTests.java │ ├── 03ViewDetail │ └── bookstore │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── images │ │ └── getAllBooks.jpg │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── bookstore │ │ │ │ ├── BookstoreApplication.java │ │ │ │ ├── config │ │ │ │ └── RepoConfig.java │ │ │ │ ├── controller │ │ │ │ └── BookController.java │ │ │ │ ├── model │ │ │ │ └── Book.java │ │ │ │ └── repository │ │ │ │ ├── BookDao.java │ │ │ │ └── Dao.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── static │ │ │ └── book.csv │ │ │ └── templates │ │ │ ├── allbooks.html │ │ │ └── book.html │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── bookstore │ │ └── BookstoreApplicationTests.java │ ├── 04AddNew │ └── bookstore │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── images │ │ ├── add_new.jpg │ │ ├── form.jpg │ │ └── link_add_new.jpg │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── bookstore │ │ │ │ ├── BookstoreApplication.java │ │ │ │ ├── config │ │ │ │ └── RepoConfig.java │ │ │ │ ├── controller │ │ │ │ └── BookController.java │ │ │ │ ├── model │ │ │ │ └── Book.java │ │ │ │ └── repository │ │ │ │ ├── BookDao.java │ │ │ │ └── Dao.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── static │ │ │ └── book.csv │ │ │ └── templates │ │ │ ├── allbooks.html │ │ │ ├── book.html │ │ │ └── form.html │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── bookstore │ │ └── BookstoreApplicationTests.java │ ├── 05EditUpdate │ └── bookstore │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── bookstore │ │ │ │ ├── BookstoreApplication.java │ │ │ │ ├── config │ │ │ │ └── RepoConfig.java │ │ │ │ ├── controller │ │ │ │ └── BookController.java │ │ │ │ ├── model │ │ │ │ └── Book.java │ │ │ │ └── repository │ │ │ │ ├── BookDao.java │ │ │ │ └── Dao.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── static │ │ │ └── book.csv │ │ │ └── templates │ │ │ ├── allbooks.html │ │ │ ├── book.html │ │ │ └── form.html │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── bookstore │ │ └── BookstoreApplicationTests.java │ ├── 06Delete │ └── bookstore │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── bookstore │ │ │ │ ├── BookstoreApplication.java │ │ │ │ ├── config │ │ │ │ └── RepoConfig.java │ │ │ │ ├── controller │ │ │ │ └── BookController.java │ │ │ │ ├── model │ │ │ │ └── Book.java │ │ │ │ └── repository │ │ │ │ ├── BookDao.java │ │ │ │ └── Dao.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── static │ │ │ └── book.csv │ │ │ └── templates │ │ │ ├── allbooks.html │ │ │ ├── book.html │ │ │ └── form.html │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── bookstore │ │ └── BookstoreApplicationTests.java │ ├── 07DeleteByPOST │ └── bookstore │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── images │ │ └── deletebutton.jpg │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── bookstore │ │ │ │ ├── BookstoreApplication.java │ │ │ │ ├── config │ │ │ │ └── RepoConfig.java │ │ │ │ ├── controller │ │ │ │ └── BookController.java │ │ │ │ ├── model │ │ │ │ └── Book.java │ │ │ │ ├── repository │ │ │ │ ├── BookDao.java │ │ │ │ └── Dao.java │ │ │ │ └── request │ │ │ │ └── DeleteRequest.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── static │ │ │ └── book.csv │ │ │ └── templates │ │ │ ├── allbooks.html │ │ │ ├── book.html │ │ │ └── form.html │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── bookstore │ │ └── BookstoreApplicationTests.java │ ├── 08Search │ └── bookstore │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── images │ │ └── select_dependencies.jpg │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── bookstore │ │ │ │ ├── BookstoreApplication.java │ │ │ │ ├── config │ │ │ │ └── RepoConfig.java │ │ │ │ ├── controller │ │ │ │ └── BookController.java │ │ │ │ ├── model │ │ │ │ └── Book.java │ │ │ │ ├── repository │ │ │ │ ├── BookDao.java │ │ │ │ └── Dao.java │ │ │ │ └── request │ │ │ │ └── SearchRequest.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── static │ │ │ └── book.csv │ │ │ └── templates │ │ │ ├── allbooks.html │ │ │ ├── book.html │ │ │ ├── form.html │ │ │ └── search.html │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── bookstore │ │ └── BookstoreApplicationTests.java │ └── ReadMe.md ├── 10-RESTBinary ├── ReadMe.md └── simpleupload │ ├── .gitignore │ ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties │ ├── ReadMe.md │ ├── images │ └── Postman.jpg │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ └── main │ ├── java │ └── vn │ │ └── techmaster │ │ └── simpleupload │ │ ├── SimpleuploadApplication.java │ │ ├── controller │ │ ├── APIError.java │ │ ├── CustomExceptionHandler.java │ │ └── UploadController.java │ │ ├── exception │ │ └── RESTException.java │ │ ├── model │ │ └── Photo.java │ │ ├── repository │ │ └── PhotoRepository.java │ │ ├── request │ │ └── PhotoRequest.java │ │ └── service │ │ └── PhotoService.java │ └── resources │ ├── application.properties │ ├── log4j2.xml │ └── static │ └── .gitignore ├── 11-JPADefineEntity ├── 01EntityMapping │ └── demojpa │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── demojpa │ │ │ │ ├── DemojpaApplication.java │ │ │ │ ├── component │ │ │ │ └── LoggedUser.java │ │ │ │ ├── model │ │ │ │ ├── bank │ │ │ │ │ ├── BankAccount.java │ │ │ │ │ └── BankAcitivityException.java │ │ │ │ ├── blog │ │ │ │ │ ├── Audit.java │ │ │ │ │ ├── Comment.java │ │ │ │ │ ├── Post.java │ │ │ │ │ └── Tag.java │ │ │ │ ├── mapping │ │ │ │ │ ├── Animal.java │ │ │ │ │ ├── Car.java │ │ │ │ │ ├── Country.java │ │ │ │ │ ├── Employee.java │ │ │ │ │ ├── Film.java │ │ │ │ │ ├── Person.java │ │ │ │ │ └── Product.java │ │ │ │ └── order │ │ │ │ │ ├── Address.java │ │ │ │ │ ├── LineItem.java │ │ │ │ │ ├── Order.java │ │ │ │ │ └── ShippingMethod.java │ │ │ │ └── repository │ │ │ │ ├── AnimalRepository.java │ │ │ │ ├── CarRepository.java │ │ │ │ ├── CityAvgSalary.java │ │ │ │ ├── CityJobCount.java │ │ │ │ ├── FilmRepository.java │ │ │ │ ├── JobCount.java │ │ │ │ ├── JobSalary.java │ │ │ │ ├── MakerCount.java │ │ │ │ ├── PersonRepository.java │ │ │ │ ├── PersonRepositoryCustom.java │ │ │ │ └── PersonRepositoryImpl.java │ │ └── resources │ │ │ ├── animal.sql │ │ │ ├── application.properties │ │ │ ├── car.sql │ │ │ ├── country.sql │ │ │ ├── employee.sql │ │ │ ├── movie.sql │ │ │ ├── person.sql │ │ │ ├── personsmall.sql │ │ │ └── post.sql │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── demojpa │ │ ├── AnimalRepositoryTests.java │ │ ├── CarRepositoryTests.java │ │ ├── CarTests.java │ │ ├── EmployeeTests.java │ │ ├── FilmRepositoryTests.java │ │ ├── PersonRepositoryTests.java │ │ ├── PostCommentTest.java │ │ ├── PostTagTests.java │ │ └── ProductTests.java ├── JPA.mindnode │ ├── QuickLook │ │ └── Preview.jpg │ ├── contents.xml │ ├── style.mindnodestyle │ │ ├── contents.xml │ │ └── metadata.plist │ └── viewState.plist ├── JPA.pdf └── ReadMe.md ├── 13-JPARelationship ├── blog │ ├── .gitignore │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ ├── ReadMe.md │ ├── Terms.md │ ├── images │ │ ├── fontawesome.jpg │ │ ├── generate_posts.jpg │ │ └── homepage.jpg │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── blog │ │ │ │ ├── BlogAppRunner.java │ │ │ │ ├── BlogApplication.java │ │ │ │ ├── DTO │ │ │ │ ├── PostMapper.java │ │ │ │ ├── PostPOJO.java │ │ │ │ ├── UserInfo.java │ │ │ │ └── UserMapper.java │ │ │ │ ├── controller │ │ │ │ ├── CommentController.java │ │ │ │ ├── HomeController.java │ │ │ │ ├── Paging.java │ │ │ │ ├── PostController.java │ │ │ │ ├── Route.java │ │ │ │ ├── SearchController.java │ │ │ │ └── request │ │ │ │ │ ├── CommentRequest.java │ │ │ │ │ ├── IdRequest.java │ │ │ │ │ ├── LoginRequest.java │ │ │ │ │ ├── PostRequest.java │ │ │ │ │ └── SearchRequest.java │ │ │ │ ├── model │ │ │ │ ├── Comment.java │ │ │ │ ├── Post.java │ │ │ │ ├── Tag.java │ │ │ │ └── User.java │ │ │ │ ├── persistence.xml │ │ │ │ ├── repository │ │ │ │ ├── CommentRepository.java │ │ │ │ ├── PostRepository.java │ │ │ │ ├── TagRepository.java │ │ │ │ └── UserRepository.java │ │ │ │ └── service │ │ │ │ ├── AuthenException.java │ │ │ │ ├── AuthenService.java │ │ │ │ ├── IAuthenService.java │ │ │ │ ├── IPostService.java │ │ │ │ ├── PostException.java │ │ │ │ └── PostService.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── tag.sql │ │ │ ├── templates │ │ │ ├── home.html │ │ │ ├── layout.html │ │ │ ├── layout_post.html │ │ │ ├── login.html │ │ │ ├── post.html │ │ │ ├── post_comment.html │ │ │ ├── posts.html │ │ │ ├── search.html │ │ │ └── searchresult.html │ │ │ └── user.sql │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── blog │ │ ├── PostCommentRepositoryTest.java │ │ ├── PostRepositoryTest.java │ │ ├── PostSearchTest.java │ │ ├── UserRepositoryTest.java │ │ └── testbase │ │ ├── H2TestBase.java │ │ ├── MySQLTestBase.java │ │ ├── PostgresqlTestBase.java │ │ └── h2.properties └── relation │ ├── .gitignore │ ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties │ ├── JPA Relationship.mindnode │ ├── QuickLook │ │ └── Preview.jpg │ ├── contents.xml │ ├── style.mindnodestyle │ │ ├── contents.xml │ │ └── metadata.plist │ └── viewState.plist │ ├── JPA Relationship.pdf │ ├── ReadMe.md │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── vn │ │ │ └── techmaster │ │ │ └── relation │ │ │ ├── AppRunner.java │ │ │ ├── RelationApplication.java │ │ │ ├── controller │ │ │ └── APIController.java │ │ │ ├── model │ │ │ ├── inheritance │ │ │ │ ├── joinedtable │ │ │ │ │ ├── Course.java │ │ │ │ │ ├── OfflineCourse.java │ │ │ │ │ └── OnlineCourse.java │ │ │ │ ├── mappedsuperclass │ │ │ │ │ ├── BaseProduct.java │ │ │ │ │ ├── ClothesSize.java │ │ │ │ │ ├── Color.java │ │ │ │ │ ├── Shirt.java │ │ │ │ │ ├── Shoe.java │ │ │ │ │ └── ShoeSize.java │ │ │ │ ├── singletable │ │ │ │ │ ├── CPUType.java │ │ │ │ │ ├── Electronics.java │ │ │ │ │ ├── Fridge.java │ │ │ │ │ ├── Laptop.java │ │ │ │ │ └── Voltage.java │ │ │ │ └── tableperclass │ │ │ │ │ ├── Animal.java │ │ │ │ │ ├── EatType.java │ │ │ │ │ ├── Fish.java │ │ │ │ │ ├── FishType.java │ │ │ │ │ ├── Mammal.java │ │ │ │ │ ├── Reptile.java │ │ │ │ │ └── ReptileType.java │ │ │ ├── manymany │ │ │ │ ├── noextracolumns │ │ │ │ │ ├── Article.java │ │ │ │ │ └── Tag.java │ │ │ │ └── separate_primary_key │ │ │ │ │ ├── Student.java │ │ │ │ │ ├── StudentSubject.java │ │ │ │ │ └── Subject.java │ │ │ ├── onemany │ │ │ │ ├── bidirection │ │ │ │ │ ├── Address.java │ │ │ │ │ ├── Audit.java │ │ │ │ │ ├── Comment.java │ │ │ │ │ ├── Customer.java │ │ │ │ │ ├── Department.java │ │ │ │ │ ├── Post.java │ │ │ │ │ └── Professor.java │ │ │ │ └── unidirection │ │ │ │ │ ├── Category.java │ │ │ │ │ └── Product.java │ │ │ ├── oneone │ │ │ │ ├── User.java │ │ │ │ └── UserDetail.java │ │ │ └── selfreference │ │ │ │ ├── Employee.java │ │ │ │ └── Person.java │ │ │ ├── repository │ │ │ ├── manymany │ │ │ │ ├── ArticleRepository.java │ │ │ │ └── StudentRepository.java │ │ │ ├── onemany │ │ │ │ ├── bidirection │ │ │ │ │ ├── CustomerRepository.java │ │ │ │ │ └── PostRepository.java │ │ │ │ └── unidirection │ │ │ │ │ └── ProductRepository.java │ │ │ ├── oneone │ │ │ │ └── UserRepository.java │ │ │ └── selfreference │ │ │ │ ├── EmployeeRepository.java │ │ │ │ └── PersonRepository.java │ │ │ └── service │ │ │ ├── inheritance │ │ │ ├── mappedsuperclass │ │ │ │ └── ProductService.java │ │ │ ├── singletable │ │ │ │ └── EletronicsService.java │ │ │ └── tableperclass │ │ │ │ └── AnimalService.java │ │ │ ├── manymany │ │ │ ├── ArticleTagService.java │ │ │ └── StudentSubjectService.java │ │ │ ├── onemany │ │ │ ├── bidirection │ │ │ │ ├── CustomerAddressService.java │ │ │ │ ├── PostService.java │ │ │ │ └── ProfessorDepartmentService.java │ │ │ └── unidirection │ │ │ │ └── ProductCategoryService.java │ │ │ ├── oneone │ │ │ └── UserService.java │ │ │ └── selfreference │ │ │ ├── EmployeeService.java │ │ │ └── FamilyService.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── vn │ └── techmaster │ └── relation │ ├── OneToManyUnidirectionTest.java │ └── OneToOneTest.java ├── 14-JPA Query ├── Exam2.md ├── ReadMe.md ├── demoquery │ ├── .gitignore │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ ├── ReadMe.md │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── demoquery │ │ │ │ ├── DemoqueryApplication.java │ │ │ │ ├── model │ │ │ │ ├── Car.java │ │ │ │ └── Movie.java │ │ │ │ └── repository │ │ │ │ ├── CarRepository.java │ │ │ │ ├── MakerCount.java │ │ │ │ └── MovieRepository.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── car.sql │ │ │ └── movie.sql │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── demoquery │ │ ├── CarRepositoryTest.java │ │ └── MovieRepositoryTest.java ├── exam │ ├── .gitignore │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── exam │ │ │ │ ├── ExamApplication.java │ │ │ │ └── model │ │ │ │ ├── Category.java │ │ │ │ ├── Course.java │ │ │ │ ├── Product.java │ │ │ │ ├── Student.java │ │ │ │ └── Tag.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── exam │ │ └── ExamApplicationTests.java └── person.sql ├── 15-CustomRepository ├── connectdb │ ├── .gitignore │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── connectdb │ │ │ │ ├── ConnectdbApplication.java │ │ │ │ └── model │ │ │ │ └── Person.java │ │ └── resources │ │ │ ├── application-dev.properties │ │ │ ├── application-mysql.properties │ │ │ ├── application-post.properties │ │ │ ├── application.properties │ │ │ ├── person.sql │ │ │ └── person_small.sql │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── connectdb │ │ └── ConnectdbApplicationTests.java ├── custom_repository │ ├── .gitignore │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ ├── ReadMe.md │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── custom_repository │ │ │ │ ├── CustomRepositoryApplication.java │ │ │ │ ├── model │ │ │ │ └── Person.java │ │ │ │ └── repository │ │ │ │ ├── PersonRepository.java │ │ │ │ ├── PersonRepositoryCustom.java │ │ │ │ └── PersonRepositoryImpl.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── custom_repository │ │ └── AnimalRepositoryTest.java ├── custom_repository_generic │ ├── .gitignore │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ ├── ReadMe.md │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── custom_repository │ │ │ │ ├── CustomRepositoryApplication.java │ │ │ │ ├── model │ │ │ │ ├── Car.java │ │ │ │ └── Person.java │ │ │ │ └── repository │ │ │ │ ├── CarRepository.java │ │ │ │ ├── CustomRepo.java │ │ │ │ ├── CustomRepoImpl.java │ │ │ │ └── PersonRepository.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── custom_repository │ │ └── RepositoryTest.java └── relation │ ├── .gitignore │ ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties │ ├── Error.md │ ├── JPA Relationship.mindnode │ ├── QuickLook │ │ └── Preview.jpg │ ├── contents.xml │ ├── style.mindnodestyle │ │ ├── contents.xml │ │ └── metadata.plist │ └── viewState.plist │ ├── JPA Relationship.pdf │ ├── ReadMe.md │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── vn │ │ │ └── techmaster │ │ │ └── relation │ │ │ ├── AppRunner.java │ │ │ ├── RelationApplication.java │ │ │ ├── controller │ │ │ └── APIController.java │ │ │ ├── model │ │ │ ├── inheritance │ │ │ │ ├── joinedtable │ │ │ │ │ ├── Course.java │ │ │ │ │ ├── OfflineCourse.java │ │ │ │ │ └── OnlineCourse.java │ │ │ │ ├── mappedsuperclass │ │ │ │ │ ├── BaseProduct.java │ │ │ │ │ ├── ClothesSize.java │ │ │ │ │ ├── Color.java │ │ │ │ │ ├── Shirt.java │ │ │ │ │ ├── Shoe.java │ │ │ │ │ └── ShoeSize.java │ │ │ │ ├── singletable │ │ │ │ │ ├── CPUType.java │ │ │ │ │ ├── Electronics.java │ │ │ │ │ ├── Fridge.java │ │ │ │ │ ├── Laptop.java │ │ │ │ │ └── Voltage.java │ │ │ │ └── tableperclass │ │ │ │ │ ├── Animal.java │ │ │ │ │ ├── EatType.java │ │ │ │ │ ├── Fish.java │ │ │ │ │ ├── FishType.java │ │ │ │ │ ├── Mammal.java │ │ │ │ │ ├── Reptile.java │ │ │ │ │ └── ReptileType.java │ │ │ ├── manymany │ │ │ │ ├── noextracolumns │ │ │ │ │ ├── Article.java │ │ │ │ │ └── Tag.java │ │ │ │ └── separate_primary_key │ │ │ │ │ ├── Student.java │ │ │ │ │ ├── StudentSubject.java │ │ │ │ │ └── Subject.java │ │ │ ├── onemany │ │ │ │ ├── bidirection │ │ │ │ │ ├── Address.java │ │ │ │ │ ├── Audit.java │ │ │ │ │ ├── Comment.java │ │ │ │ │ ├── Customer.java │ │ │ │ │ ├── Department.java │ │ │ │ │ ├── Post.java │ │ │ │ │ └── Professor.java │ │ │ │ └── unidirection │ │ │ │ │ ├── Category.java │ │ │ │ │ └── Product.java │ │ │ ├── oneone │ │ │ │ ├── UserDetail.java │ │ │ │ └── Users.java │ │ │ ├── sample │ │ │ │ └── Person.java │ │ │ └── selfreference │ │ │ │ ├── Employee.java │ │ │ │ └── Human.java │ │ │ ├── repository │ │ │ ├── manymany │ │ │ │ ├── ArticleRepository.java │ │ │ │ └── StudentRepository.java │ │ │ ├── onemany │ │ │ │ ├── bidirection │ │ │ │ │ ├── CustomerRepository.java │ │ │ │ │ └── PostRepository.java │ │ │ │ └── unidirection │ │ │ │ │ └── ProductRepository.java │ │ │ ├── oneone │ │ │ │ └── UserRepository.java │ │ │ ├── sample │ │ │ │ ├── JobCount.java │ │ │ │ └── PersonRepository.java │ │ │ └── selfreference │ │ │ │ ├── EmployeeRepository.java │ │ │ │ └── HumanRepository.java │ │ │ └── service │ │ │ ├── inheritance │ │ │ ├── mappedsuperclass │ │ │ │ └── ProductService.java │ │ │ ├── singletable │ │ │ │ └── EletronicsService.java │ │ │ └── tableperclass │ │ │ │ └── AnimalService.java │ │ │ ├── manymany │ │ │ ├── ArticleTagService.java │ │ │ └── StudentSubjectService.java │ │ │ ├── onemany │ │ │ ├── bidirection │ │ │ │ ├── CustomerAddressService.java │ │ │ │ ├── PostService.java │ │ │ │ └── ProfessorDepartmentService.java │ │ │ └── unidirection │ │ │ │ └── ProductCategoryService.java │ │ │ ├── oneone │ │ │ └── UserService.java │ │ │ ├── sample │ │ │ └── PersonService.java │ │ │ └── selfreference │ │ │ ├── EmployeeService.java │ │ │ └── FamilyService.java │ └── resources │ │ ├── application-dev.properties │ │ ├── application-mysql.properties │ │ ├── application-post.properties │ │ ├── application.properties │ │ ├── person.sql │ │ └── person_small.sql │ └── test │ └── java │ └── vn │ └── techmaster │ └── relation │ ├── OneToOneTest.java │ └── PersonRepoTest.java ├── 16-SpringCloudGateway ├── 01-SpringCloudBasic │ ├── booklisting │ │ ├── .gitignore │ │ ├── .mvn │ │ │ └── wrapper │ │ │ │ ├── MavenWrapperDownloader.java │ │ │ │ ├── maven-wrapper.jar │ │ │ │ └── maven-wrapper.properties │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── vn │ │ │ │ │ └── techmaster │ │ │ │ │ └── booklisting │ │ │ │ │ ├── BooklistingApplication.java │ │ │ │ │ ├── controller │ │ │ │ │ └── BookController.java │ │ │ │ │ └── model │ │ │ │ │ └── Book.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── vn │ │ │ └── techmaster │ │ │ └── booklisting │ │ │ └── BooklistingApplicationTests.java │ ├── filmlisting │ │ ├── .gitignore │ │ ├── .mvn │ │ │ └── wrapper │ │ │ │ ├── MavenWrapperDownloader.java │ │ │ │ ├── maven-wrapper.jar │ │ │ │ └── maven-wrapper.properties │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── vn │ │ │ │ │ └── techmaster │ │ │ │ │ └── filmlisting │ │ │ │ │ ├── FilmlistingApplication.java │ │ │ │ │ ├── controller │ │ │ │ │ └── FilmController.java │ │ │ │ │ └── model │ │ │ │ │ └── Film.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── vn │ │ │ └── techmaster │ │ │ └── filmlisting │ │ │ └── FilmlistingApplicationTests.java │ ├── gateway │ │ ├── .gitignore │ │ ├── .mvn │ │ │ └── wrapper │ │ │ │ ├── MavenWrapperDownloader.java │ │ │ │ ├── maven-wrapper.jar │ │ │ │ └── maven-wrapper.properties │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── vn │ │ │ │ │ └── techmaster │ │ │ │ │ └── gateway │ │ │ │ │ ├── GatewayApplication.java │ │ │ │ │ └── LoggingFilter.java │ │ │ └── resources │ │ │ │ ├── application.properties │ │ │ │ └── application.yml │ │ │ └── test │ │ │ └── java │ │ │ └── vn │ │ │ └── techmaster │ │ │ └── gateway │ │ │ └── GatewayApplicationTests.java │ └── gwcode │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── gwcode │ │ │ │ ├── GwcodeApplication.java │ │ │ │ └── config │ │ │ │ └── GatewayConfig.java │ │ └── resources │ │ │ └── application.yml │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── gwcode │ │ └── GwcodeApplicationTests.java └── ReadMe.md ├── 18-Scheduling └── schedule │ ├── 01Basic │ └── demoschedule │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── images │ │ ├── asyn_task.jpg │ │ ├── fixdelay.jpg │ │ └── fixed_rate_vs_fixed_delay.jpg │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── demoschedule │ │ │ │ ├── DemoscheduleApplication.java │ │ │ │ └── schedule │ │ │ │ ├── AsyncTasks.java │ │ │ │ ├── CronJob.java │ │ │ │ ├── FixedDelayTasks.java │ │ │ │ └── FixedRateTasks.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── demoschedule │ │ └── DemoscheduleApplicationTests.java │ └── 02WebClientIOT │ └── iot │ ├── .gitignore │ ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties │ ├── ReadMe.md │ ├── images │ ├── iot.jpg │ ├── linechart.jpg │ └── localhost_8080_mono.jpg │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── vn │ │ │ └── techmaster │ │ │ └── iot │ │ │ ├── IotApplication.java │ │ │ ├── controller │ │ │ ├── HomeController.java │ │ │ ├── IOTController.java │ │ │ └── reponse │ │ │ │ └── IOTMeasure.java │ │ │ └── service │ │ │ └── IOTService.java │ └── resources │ │ ├── application.properties │ │ └── templates │ │ └── index.html │ └── test │ └── java │ └── vn │ └── techmaster │ └── iot │ └── IotApplicationTests.java ├── 19-OpenAPI └── 02OpenAPI │ └── bookstore │ ├── .gitignore │ ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties │ ├── ReadMe.md │ ├── images │ ├── FieldCondition.jpg │ ├── GET_by_id_Example.jpg │ ├── HAL_Explorer.jpg │ ├── HAL_Explorer_3Column.jpg │ ├── HAL_Explorer_CreateNewBook.jpg │ ├── HAL_Explorer_GetBook.jpg │ ├── SampleData.jpg │ ├── Swagger_UI.jpg │ ├── api_gateway.jpg │ ├── document_header.jpg │ ├── get_all_books.jpg │ ├── post_new_book.jpg │ └── select_api_group.jpg │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── vn │ │ │ └── techmaster │ │ │ └── bookstore │ │ │ ├── BookstoreApplication.java │ │ │ ├── config │ │ │ └── OpenAPIConfig.java │ │ │ ├── controller │ │ │ ├── BookAPI.java │ │ │ └── ContactAPI.java │ │ │ ├── model │ │ │ ├── Book.java │ │ │ ├── BookPOJO.java │ │ │ └── Contact.java │ │ │ ├── repository │ │ │ ├── BookRespository.java │ │ │ └── ContactRepository.java │ │ │ └── service │ │ │ ├── BookService.java │ │ │ └── IBookService.java │ └── resources │ │ ├── application.properties │ │ └── book.sql │ └── test │ └── java │ └── vn │ └── techmaster │ └── bookstore │ └── BookstoreApplicationTests.java ├── 20-Vincinema └── 01Entity │ └── vincinema │ ├── .gitignore │ ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── vn │ │ │ └── techmaster │ │ │ └── vincinema │ │ │ ├── AppRunner.java │ │ │ ├── VincinemaApplication.java │ │ │ ├── controller │ │ │ ├── BookingController.java │ │ │ ├── CinemaController.java │ │ │ ├── CustomExceptionHandler.java │ │ │ ├── EventController.java │ │ │ ├── FilmController.java │ │ │ ├── HomeController.java │ │ │ ├── RoomController.java │ │ │ └── TicketController.java │ │ │ ├── exception │ │ │ ├── APIError.java │ │ │ └── CustomException.java │ │ │ ├── model │ │ │ ├── Booking.java │ │ │ ├── BookingSeat.java │ │ │ ├── Cinema.java │ │ │ ├── City.java │ │ │ ├── Customer.java │ │ │ ├── Event.java │ │ │ ├── Film.java │ │ │ ├── Genre.java │ │ │ ├── Language.java │ │ │ ├── Rating.java │ │ │ ├── Room.java │ │ │ ├── Seat.java │ │ │ ├── SeatType.java │ │ │ └── Ticket.java │ │ │ ├── pojo │ │ │ └── CinemaPOJO.java │ │ │ ├── repository │ │ │ ├── BookingRepository.java │ │ │ ├── CinemaRepository.java │ │ │ ├── CityRepository.java │ │ │ ├── CustomerRepository.java │ │ │ ├── EventRepository.java │ │ │ ├── FilmRepository.java │ │ │ ├── GenreRepository.java │ │ │ ├── RoomRepository.java │ │ │ └── SeatRepository.java │ │ │ ├── request │ │ │ └── BookingRequest.java │ │ │ ├── response │ │ │ └── BookingInfo.java │ │ │ └── service │ │ │ ├── BookingService.java │ │ │ ├── CinemaService.java │ │ │ ├── CustomerService.java │ │ │ ├── EventService.java │ │ │ ├── FilmService.java │ │ │ ├── PricePromotionService.java │ │ │ └── RoomService.java │ └── resources │ │ ├── application-dev.properties │ │ ├── application-post.properties │ │ ├── application.properties │ │ ├── city.sql │ │ ├── genre.sql │ │ └── templates │ │ ├── bookticket.html │ │ └── index.html │ └── test │ └── java │ └── vn │ └── techmaster │ └── vincinema │ └── VincinemaApplicationTests.java ├── 21-SpringSecurity ├── 01Basic │ └── simpleauthen │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── images │ │ ├── Please_sign_in.jpg │ │ ├── generated_pass.jpg │ │ └── localhost_8080_api_products.jpg │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── simpleauthen │ │ │ │ ├── SimpleauthenApplication.java │ │ │ │ ├── controller │ │ │ │ └── APIController.java │ │ │ │ ├── model │ │ │ │ └── Product.java │ │ │ │ └── security │ │ │ │ └── SecurityConfig.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── simpleauthen │ │ └── SimpleauthenApplicationTests.java ├── 02WebSecurityConfigurerAdapter │ └── simpleauthen │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── images │ │ ├── Please_sign_in.jpg │ │ ├── decode_base64.jpg │ │ ├── localhost_8080_api_products.jpg │ │ ├── login.jpg │ │ ├── session_cookie.jpg │ │ └── session_cookie2.jpg │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── simpleauthen │ │ │ │ ├── SimpleauthenApplication.java │ │ │ │ ├── controller │ │ │ │ ├── APIController.java │ │ │ │ ├── ErrorHandler.java0 │ │ │ │ └── HomeController.java │ │ │ │ ├── model │ │ │ │ └── Product.java │ │ │ │ └── security │ │ │ │ ├── Role.java │ │ │ │ ├── SecurityConfig.java │ │ │ │ ├── SecurityConfig.java0 │ │ │ │ ├── SecurityConfig.java1 │ │ │ │ ├── SecurityConfig.java3 │ │ │ │ ├── SecurityConfig.java4 │ │ │ │ ├── SecurityConfig.java5 │ │ │ │ └── SecurityConfig.java6 │ │ └── resources │ │ │ ├── application.properties │ │ │ └── templates │ │ │ ├── error │ │ │ ├── 401.html │ │ │ ├── 403.html │ │ │ ├── 404.html │ │ │ └── 500.html │ │ │ └── index.html │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── simpleauthen │ │ └── SimpleauthenApplicationTests.java ├── 03AuthenticationProvider │ └── simpleauthen │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── images │ │ └── Spring_Security_in_Action.jpg │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── simpleauthen │ │ │ │ ├── SimpleauthenApplication.java │ │ │ │ ├── controller │ │ │ │ ├── APIController.java │ │ │ │ ├── ErrorHandler.java0 │ │ │ │ └── HomeController.java │ │ │ │ ├── model │ │ │ │ └── Product.java │ │ │ │ └── security │ │ │ │ ├── CustomAuthenProvider.java │ │ │ │ ├── Role.java │ │ │ │ └── SecurityConfig.java │ │ └── resources │ │ │ ├── application.properties │ │ │ └── templates │ │ │ ├── error │ │ │ ├── 401.html │ │ │ ├── 403.html │ │ │ ├── 404.html │ │ │ ├── 500.html │ │ │ └── error.html │ │ │ └── index.html │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── simpleauthen │ │ └── SimpleauthenApplicationTests.java └── 04UserDetailService │ └── simpleauthen │ ├── .gitignore │ ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties │ ├── ReadMe.md │ ├── images │ ├── Book_Store.jpg │ ├── RoleAnonymous.jpg │ ├── anonymous.jpg │ ├── error403.jpg │ ├── home_authority.jpg │ ├── login.jpg │ └── user_detail_diagram.jpg │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── vn │ │ │ └── techmaster │ │ │ └── simpleauthen │ │ │ ├── SimpleauthenApplication.java │ │ │ ├── config │ │ │ └── RepoConfig.java │ │ │ ├── controller │ │ │ ├── BookController.java │ │ │ └── HomeController.java │ │ │ ├── model │ │ │ ├── Book.java │ │ │ └── User.java │ │ │ ├── repository │ │ │ ├── BookDao.java │ │ │ └── Dao.java │ │ │ ├── request │ │ │ └── SearchRequest.java │ │ │ └── security │ │ │ ├── Authority.java │ │ │ ├── CustomAuthenProvider.java │ │ │ ├── Role.java │ │ │ └── SecurityConfig.java │ └── resources │ │ ├── application.properties │ │ ├── static │ │ └── book.csv │ │ └── templates │ │ ├── allbooks.html │ │ ├── book.html │ │ ├── error │ │ ├── 401.html │ │ ├── 403.html │ │ ├── 404.html │ │ ├── 500.html │ │ └── error.html │ │ ├── form.html │ │ ├── index.html │ │ └── search.html │ └── test │ └── java │ └── vn │ └── techmaster │ └── simpleauthen │ └── SimpleauthenApplicationTests.java ├── 22-SeatBooking └── seatbooking │ ├── .gitignore │ ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── vn │ │ │ └── techmaster │ │ │ └── seatbooking │ │ │ ├── SeatbookingApplication.java │ │ │ ├── controller │ │ │ └── SeatBookingController.java │ │ │ ├── exception │ │ │ └── BookingException.java │ │ │ ├── model │ │ │ ├── BookingSeat.java │ │ │ ├── Customer.java │ │ │ └── PaidSeat.java │ │ │ ├── request │ │ │ └── BookingRequest.java │ │ │ └── service │ │ │ └── BookingService.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── vn │ └── techmaster │ └── seatbooking │ └── SeatbookingApplicationTests.java ├── 23-STOMP ├── ReadMe.md ├── basicsocket │ ├── .gitignore │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ ├── ReadMe.md │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── basicsocket │ │ │ │ ├── BasicsocketApplication.java │ │ │ │ ├── ServletInitializer.java │ │ │ │ ├── config │ │ │ │ └── WebSocketConfig.java │ │ │ │ ├── controller │ │ │ │ └── GreetingController.java │ │ │ │ └── model │ │ │ │ ├── Greeting.java │ │ │ │ └── HelloMessage.java │ │ └── resources │ │ │ ├── application.properties │ │ │ └── static │ │ │ ├── app.js │ │ │ └── index.html │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── basicsocket │ │ └── BasicsocketApplicationTests.java └── spring-websockets │ ├── README.md │ ├── pom.xml │ └── src │ └── main │ ├── java │ └── com │ │ └── baeldung │ │ ├── SpringBootApp.java │ │ ├── sendtouser │ │ ├── WebSocketSendToUserConfig.java │ │ └── WebsocketSendToUserController.java │ │ └── websockets │ │ ├── BotsController.java │ │ ├── ChatController.java │ │ ├── Message.java │ │ ├── OutputMessage.java │ │ ├── ReactiveScheduledPushMessages.java │ │ ├── ScheduledPushMessages.java │ │ └── WebSocketConfig.java │ └── webapp │ ├── bots.html │ ├── index.html │ └── resources │ └── js │ ├── sockjs-0.3.4.js │ ├── stomp.js │ └── webSocketSendToUserApp.js ├── 24-VincinemaUI ├── 01-jQueryUI │ └── vincinema │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── vincinema │ │ │ │ ├── AppRunner.java │ │ │ │ ├── VincinemaApplication.java │ │ │ │ ├── controller │ │ │ │ ├── BookingController.java │ │ │ │ ├── CinemaController.java │ │ │ │ ├── CustomExceptionHandler.java │ │ │ │ ├── EventController.java │ │ │ │ ├── FilmController.java │ │ │ │ ├── HomeController.java │ │ │ │ ├── RoomController.java │ │ │ │ └── TicketController.java │ │ │ │ ├── exception │ │ │ │ ├── APIError.java │ │ │ │ └── CustomException.java │ │ │ │ ├── model │ │ │ │ ├── Booking.java │ │ │ │ ├── BookingSeat.java │ │ │ │ ├── Cinema.java │ │ │ │ ├── City.java │ │ │ │ ├── Customer.java │ │ │ │ ├── Event.java │ │ │ │ ├── Film.java │ │ │ │ ├── Genre.java │ │ │ │ ├── Language.java │ │ │ │ ├── Rating.java │ │ │ │ ├── Room.java │ │ │ │ ├── Seat.java │ │ │ │ ├── SeatType.java │ │ │ │ └── Ticket.java │ │ │ │ ├── pojo │ │ │ │ └── CinemaPOJO.java │ │ │ │ ├── repository │ │ │ │ ├── BookingRepository.java │ │ │ │ ├── CinemaRepository.java │ │ │ │ ├── CityRepository.java │ │ │ │ ├── CustomerRepository.java │ │ │ │ ├── EventRepository.java │ │ │ │ ├── FilmRepository.java │ │ │ │ ├── GenreRepository.java │ │ │ │ ├── RoomRepository.java │ │ │ │ └── SeatRepository.java │ │ │ │ ├── request │ │ │ │ ├── BookingRequest.java │ │ │ │ └── FindEventRequest.java │ │ │ │ ├── response │ │ │ │ └── BookingInfo.java │ │ │ │ └── service │ │ │ │ ├── BookingService.java │ │ │ │ ├── CinemaService.java │ │ │ │ ├── CustomerService.java │ │ │ │ ├── EventService.java │ │ │ │ ├── FilmService.java │ │ │ │ ├── PricePromotionService.java │ │ │ │ └── RoomService.java │ │ └── resources │ │ │ ├── application-dev.properties │ │ │ ├── application-post.properties │ │ │ ├── application.properties │ │ │ ├── city.sql │ │ │ ├── genre.sql │ │ │ ├── static │ │ │ └── css │ │ │ │ └── main.css │ │ │ └── templates │ │ │ ├── book_event.html │ │ │ ├── bookticket.html │ │ │ ├── find_event_result.html │ │ │ ├── findevent.html │ │ │ └── index.html │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── vincinema │ │ └── VincinemaApplicationTests.java └── vuecine │ ├── .gitignore │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── public │ └── favicon.ico │ ├── src │ ├── App.vue │ ├── assets │ │ └── logo.png │ ├── components │ │ └── HelloWorld.vue │ └── main.js │ └── vite.config.js ├── 25-SpringSecurityAuthorization └── authorization │ ├── .gitignore │ ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties │ ├── ReadMe.md │ ├── images │ ├── Home_page.jpg │ └── user_role_diagram.jpg │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ └── main │ ├── java │ └── vn │ │ └── techmaster │ │ └── authorization │ │ ├── AppRunner.java │ │ ├── AuthorizationApplication.java │ │ ├── config │ │ └── SecurityConfig.java │ │ ├── controller │ │ ├── APIController.java │ │ ├── APIControllerV2.java │ │ ├── CustomExceptionHandler.java │ │ └── HomeController.java │ │ ├── exception │ │ ├── APIError.java │ │ └── CustomException.java │ │ ├── model │ │ ├── Post.java │ │ ├── Role.java │ │ └── User.java │ │ ├── repository │ │ ├── PostRepository.java │ │ ├── RoleRepository.java │ │ └── UserRepository.java │ │ └── service │ │ ├── ISecurityService.java │ │ └── SecurityService.java │ └── resources │ ├── application.properties │ └── templates │ ├── admin.html │ ├── author.html │ ├── editor.html │ ├── error │ ├── 401.html │ ├── 403.html │ ├── 404.html │ ├── 500.html │ └── error.html │ ├── free.html │ ├── index.html │ └── user.html ├── 25-SpringSecurityJWT ├── 05SecurityJPA │ └── securityjpa │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── images │ │ ├── Home_page.jpg │ │ └── user_role_diagram.jpg │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── securityjpa │ │ │ │ ├── AppRunner.java │ │ │ │ ├── SecurityjpaApplication.java │ │ │ │ ├── config │ │ │ │ └── SecurityConfig.java │ │ │ │ ├── controller │ │ │ │ ├── APIController.java │ │ │ │ └── HomeController.java │ │ │ │ ├── model │ │ │ │ ├── Post.java │ │ │ │ ├── Role.java │ │ │ │ └── User.java │ │ │ │ ├── repository │ │ │ │ ├── PostRepository.java │ │ │ │ ├── RoleRepository.java │ │ │ │ └── UserRepository.java │ │ │ │ └── service │ │ │ │ ├── ISecurityService.java │ │ │ │ └── SecurityService.java │ │ └── resources │ │ │ ├── application.properties │ │ │ └── templates │ │ │ ├── admin.html │ │ │ ├── author.html │ │ │ ├── editor.html │ │ │ ├── error │ │ │ ├── 401.html │ │ │ ├── 403.html │ │ │ ├── 404.html │ │ │ ├── 500.html │ │ │ └── error.html │ │ │ ├── free.html │ │ │ ├── index.html │ │ │ └── user.html │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── securityjpa │ │ └── SecurityjpaApplicationTests.java ├── 06CustomizeLoginForm │ └── securityjpa │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── images │ │ ├── error_403.jpg │ │ ├── index.jpg │ │ ├── login.jpg │ │ ├── login_error.jpg │ │ ├── login_success.jpg │ │ ├── remember_me1.jpg │ │ ├── remember_me2.jpg │ │ ├── role_editor.jpg │ │ └── user_role_diagram.jpg │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── securityjpa │ │ │ │ ├── AppRunner.java │ │ │ │ ├── SecurityjpaApplication.java │ │ │ │ ├── config │ │ │ │ └── SecurityConfig.java │ │ │ │ ├── controller │ │ │ │ ├── CommonController.java │ │ │ │ ├── HomeController.java │ │ │ │ └── request │ │ │ │ │ └── LoginRequest.java │ │ │ │ ├── model │ │ │ │ ├── Role.java │ │ │ │ └── User.java │ │ │ │ ├── repository │ │ │ │ ├── RoleRepository.java │ │ │ │ └── UserRepository.java │ │ │ │ ├── security │ │ │ │ ├── CustomAuthenFailureHandler.java │ │ │ │ └── CustomLogoutSuccessHandler.java │ │ │ │ └── service │ │ │ │ ├── ISecurityService.java │ │ │ │ └── SecurityService.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── static │ │ │ ├── css │ │ │ │ ├── bootstrap.min.css │ │ │ │ ├── bootstrap.min.css.map │ │ │ │ ├── bootstrap │ │ │ │ │ ├── bootstrap-grid.css │ │ │ │ │ └── bootstrap-reboot.css │ │ │ │ ├── owl.carousel.min.css │ │ │ │ └── style.css │ │ │ ├── fonts │ │ │ │ └── icomoon │ │ │ │ │ ├── Read Me.txt │ │ │ │ │ ├── demo-files │ │ │ │ │ ├── demo.css │ │ │ │ │ └── demo.js │ │ │ │ │ ├── demo.html │ │ │ │ │ ├── fonts │ │ │ │ │ ├── icomoon.eot │ │ │ │ │ ├── icomoon.svg │ │ │ │ │ ├── icomoon.ttf │ │ │ │ │ └── icomoon.woff │ │ │ │ │ ├── selection.json │ │ │ │ │ └── style.css │ │ │ ├── images │ │ │ │ ├── bg_1.jpg │ │ │ │ └── undraw_file_sync_ot38.svg │ │ │ ├── index2.html │ │ │ ├── js │ │ │ │ ├── bootstrap.min.js │ │ │ │ ├── jquery-3.3.1.min.js │ │ │ │ ├── owl.carousel.min.js │ │ │ │ └── popper.min.js │ │ │ └── scss │ │ │ │ ├── bootstrap │ │ │ │ ├── _alert.scss │ │ │ │ ├── _badge.scss │ │ │ │ ├── _breadcrumb.scss │ │ │ │ ├── _button-group.scss │ │ │ │ ├── _buttons.scss │ │ │ │ ├── _card.scss │ │ │ │ ├── _carousel.scss │ │ │ │ ├── _close.scss │ │ │ │ ├── _code.scss │ │ │ │ ├── _custom-forms.scss │ │ │ │ ├── _dropdown.scss │ │ │ │ ├── _forms.scss │ │ │ │ ├── _functions.scss │ │ │ │ ├── _grid.scss │ │ │ │ ├── _images.scss │ │ │ │ ├── _input-group.scss │ │ │ │ ├── _jumbotron.scss │ │ │ │ ├── _list-group.scss │ │ │ │ ├── _media.scss │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _modal.scss │ │ │ │ ├── _nav.scss │ │ │ │ ├── _navbar.scss │ │ │ │ ├── _pagination.scss │ │ │ │ ├── _popover.scss │ │ │ │ ├── _print.scss │ │ │ │ ├── _progress.scss │ │ │ │ ├── _reboot.scss │ │ │ │ ├── _root.scss │ │ │ │ ├── _spinners.scss │ │ │ │ ├── _tables.scss │ │ │ │ ├── _toasts.scss │ │ │ │ ├── _tooltip.scss │ │ │ │ ├── _transitions.scss │ │ │ │ ├── _type.scss │ │ │ │ ├── _utilities.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── bootstrap-grid.scss │ │ │ │ ├── bootstrap-reboot.scss │ │ │ │ ├── bootstrap.scss │ │ │ │ ├── mixins │ │ │ │ │ ├── _alert.scss │ │ │ │ │ ├── _background-variant.scss │ │ │ │ │ ├── _badge.scss │ │ │ │ │ ├── _border-radius.scss │ │ │ │ │ ├── _box-shadow.scss │ │ │ │ │ ├── _breakpoints.scss │ │ │ │ │ ├── _buttons.scss │ │ │ │ │ ├── _caret.scss │ │ │ │ │ ├── _clearfix.scss │ │ │ │ │ ├── _deprecate.scss │ │ │ │ │ ├── _float.scss │ │ │ │ │ ├── _forms.scss │ │ │ │ │ ├── _gradients.scss │ │ │ │ │ ├── _grid-framework.scss │ │ │ │ │ ├── _grid.scss │ │ │ │ │ ├── _hover.scss │ │ │ │ │ ├── _image.scss │ │ │ │ │ ├── _list-group.scss │ │ │ │ │ ├── _lists.scss │ │ │ │ │ ├── _nav-divider.scss │ │ │ │ │ ├── _pagination.scss │ │ │ │ │ ├── _reset-text.scss │ │ │ │ │ ├── _resize.scss │ │ │ │ │ ├── _screen-reader.scss │ │ │ │ │ ├── _size.scss │ │ │ │ │ ├── _table-row.scss │ │ │ │ │ ├── _text-emphasis.scss │ │ │ │ │ ├── _text-hide.scss │ │ │ │ │ ├── _text-truncate.scss │ │ │ │ │ ├── _transition.scss │ │ │ │ │ └── _visibility.scss │ │ │ │ ├── utilities │ │ │ │ │ ├── _align.scss │ │ │ │ │ ├── _background.scss │ │ │ │ │ ├── _borders.scss │ │ │ │ │ ├── _clearfix.scss │ │ │ │ │ ├── _display.scss │ │ │ │ │ ├── _embed.scss │ │ │ │ │ ├── _flex.scss │ │ │ │ │ ├── _float.scss │ │ │ │ │ ├── _overflow.scss │ │ │ │ │ ├── _position.scss │ │ │ │ │ ├── _screenreaders.scss │ │ │ │ │ ├── _shadows.scss │ │ │ │ │ ├── _sizing.scss │ │ │ │ │ ├── _spacing.scss │ │ │ │ │ ├── _stretched-link.scss │ │ │ │ │ ├── _text.scss │ │ │ │ │ └── _visibility.scss │ │ │ │ └── vendor │ │ │ │ │ └── _rfs.scss │ │ │ │ └── style.scss │ │ │ └── templates │ │ │ ├── admin.html │ │ │ ├── author.html │ │ │ ├── editor.html │ │ │ ├── error │ │ │ ├── 401.html │ │ │ ├── 403.html │ │ │ ├── 404.html │ │ │ ├── 405.html │ │ │ ├── 500.html │ │ │ └── error.html │ │ │ ├── index.html │ │ │ ├── layout.html │ │ │ ├── login.html │ │ │ ├── login_custom.html │ │ │ ├── login_error.html │ │ │ ├── login_success.html │ │ │ ├── logout_success.html │ │ │ ├── member.html │ │ │ ├── public.html │ │ │ └── user.html │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── securityjpa │ │ └── SecurityjpaApplicationTests.java ├── JWTLab │ ├── 01DefaulConfiguration │ │ └── vincinema │ │ │ ├── .gitignore │ │ │ ├── .mvn │ │ │ └── wrapper │ │ │ │ ├── MavenWrapperDownloader.java │ │ │ │ ├── maven-wrapper.jar │ │ │ │ └── maven-wrapper.properties │ │ │ ├── ReadMe.md │ │ │ ├── filmrest.jpg │ │ │ ├── login.jpg │ │ │ ├── mvnw │ │ │ ├── mvnw.cmd │ │ │ ├── pom.xml │ │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── vn │ │ │ │ │ └── techmaster │ │ │ │ │ └── vincinema │ │ │ │ │ ├── AppRunner.java │ │ │ │ │ ├── VincinemaApplication.java │ │ │ │ │ ├── controller │ │ │ │ │ └── FilmController.java │ │ │ │ │ ├── model │ │ │ │ │ ├── Film.java │ │ │ │ │ ├── Language.java │ │ │ │ │ └── Rating.java │ │ │ │ │ ├── repository │ │ │ │ │ └── FilmRepository.java │ │ │ │ │ └── service │ │ │ │ │ └── FilmService.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── vn │ │ │ └── techmaster │ │ │ └── vincinema │ │ │ └── VincinemaApplicationTests.java │ └── 02JWTIntegration │ │ └── vincinema │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── vincinema │ │ │ │ ├── AppRunner.java │ │ │ │ ├── VincinemaApplication.java │ │ │ │ ├── controller │ │ │ │ ├── AuthApi.java │ │ │ │ ├── BookController.java │ │ │ │ ├── CinemaController.java │ │ │ │ ├── CustomExceptionHandler.java │ │ │ │ └── FilmController.java │ │ │ │ ├── dto │ │ │ │ ├── AuthRequest.java │ │ │ │ └── UserPOJO.java │ │ │ │ ├── exception │ │ │ │ ├── APIError.java │ │ │ │ └── CustomException.java │ │ │ │ ├── model │ │ │ │ ├── Book.java │ │ │ │ ├── Cinema.java │ │ │ │ ├── Film.java │ │ │ │ ├── Role.java │ │ │ │ └── User.java │ │ │ │ ├── repository │ │ │ │ ├── CinemaRepository.java │ │ │ │ ├── FilmRepository.java │ │ │ │ ├── RoleRepository.java │ │ │ │ └── UserRepository.java │ │ │ │ ├── security │ │ │ │ ├── Authority.java │ │ │ │ ├── JwtAuthenticationEntryPoint.java │ │ │ │ ├── JwtTokenFilter.java │ │ │ │ ├── JwtTokenUtil.java │ │ │ │ └── SecurityConfig.java │ │ │ │ └── service │ │ │ │ ├── CinemaService.java │ │ │ │ ├── FilmService.java │ │ │ │ └── SecurityService.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── log4j2.xml │ │ │ └── templates │ │ │ └── error.html │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── vincinema │ │ └── VincinemaApplicationTests.java ├── demoauth │ ├── .gitignore │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── demoauth │ │ │ │ ├── DemoauthApplication.java │ │ │ │ ├── annotation │ │ │ │ └── IsViewer.java │ │ │ │ ├── config │ │ │ │ └── MethodSecurityConfig.java │ │ │ │ ├── controller │ │ │ │ └── APIController.java │ │ │ │ ├── entity │ │ │ │ └── CustomUser.java │ │ │ │ ├── repository │ │ │ │ └── UserRoleRepository.java │ │ │ │ └── service │ │ │ │ └── CustomUserDetailsService.java │ │ └── resources │ │ │ ├── application.properties │ │ │ └── templates │ │ │ └── error.html │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── demoauth │ │ └── DemoauthApplicationTests.java ├── java-spring-security-example-master │ ├── .gitignore │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ ├── README.md │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── io │ │ │ │ └── example │ │ │ │ ├── .DS_Store │ │ │ │ ├── Application.java │ │ │ │ ├── DatabaseInitializer.java │ │ │ │ ├── api │ │ │ │ ├── AuthApi.java │ │ │ │ ├── AuthorApi.java │ │ │ │ ├── BookApi.java │ │ │ │ └── UserAdminApi.java │ │ │ │ ├── configuration │ │ │ │ ├── .DS_Store │ │ │ │ ├── GlobalExceptionHandler.java │ │ │ │ ├── LoggingConfig.java │ │ │ │ ├── MongoConfig.java │ │ │ │ ├── MvcConfig.java │ │ │ │ ├── SwaggerConfig.java │ │ │ │ ├── json │ │ │ │ │ ├── ObjectMapperConfig.java │ │ │ │ │ └── serializer │ │ │ │ │ │ ├── LocalDateDeserializer.java │ │ │ │ │ │ ├── LocalDateSerializer.java │ │ │ │ │ │ ├── LocalDateTimeDeserializer.java │ │ │ │ │ │ └── LocalDateTimeSerializer.java │ │ │ │ └── security │ │ │ │ │ ├── JwtTokenFilter.java │ │ │ │ │ ├── JwtTokenUtil.java │ │ │ │ │ └── SecurityConfig.java │ │ │ │ ├── domain │ │ │ │ ├── dto │ │ │ │ │ ├── AuthRequest.java │ │ │ │ │ ├── AuthorView.java │ │ │ │ │ ├── BookView.java │ │ │ │ │ ├── CreateUserRequest.java │ │ │ │ │ ├── EditAuthorRequest.java │ │ │ │ │ ├── EditBookRequest.java │ │ │ │ │ ├── ListResponse.java │ │ │ │ │ ├── Page.java │ │ │ │ │ ├── SearchAuthorsQuery.java │ │ │ │ │ ├── SearchBooksQuery.java │ │ │ │ │ ├── SearchRequest.java │ │ │ │ │ ├── SearchUsersQuery.java │ │ │ │ │ ├── UpdateUserRequest.java │ │ │ │ │ └── UserView.java │ │ │ │ ├── exception │ │ │ │ │ ├── InternalServerError.java │ │ │ │ │ └── NotFoundException.java │ │ │ │ ├── mapper │ │ │ │ │ ├── AuthorEditMapper.java │ │ │ │ │ ├── AuthorViewMapper.java │ │ │ │ │ ├── BookEditMapper.java │ │ │ │ │ ├── BookViewMapper.java │ │ │ │ │ ├── ObjectIdMapper.java │ │ │ │ │ ├── UserEditMapper.java │ │ │ │ │ └── UserViewMapper.java │ │ │ │ └── model │ │ │ │ │ ├── Author.java │ │ │ │ │ ├── Book.java │ │ │ │ │ ├── Role.java │ │ │ │ │ └── User.java │ │ │ │ ├── repository │ │ │ │ ├── AuthorRepo.java │ │ │ │ ├── BookRepo.java │ │ │ │ └── UserRepo.java │ │ │ │ └── service │ │ │ │ ├── AuthorService.java │ │ │ │ ├── BookService.java │ │ │ │ └── UserService.java │ │ └── resources │ │ │ ├── application.properties │ │ │ └── static │ │ │ └── index.html │ │ └── test │ │ └── java │ │ └── io │ │ └── example │ │ ├── AppRunner.java │ │ ├── api │ │ ├── TestAuthApi.java │ │ ├── TestAuthorApi.java │ │ ├── TestAuthorSearchApi.java │ │ ├── TestBookApi.java │ │ ├── TestBookSearchApi.java │ │ ├── TestUserAdminApi.java │ │ ├── TestUserSearchApi.java │ │ └── data │ │ │ ├── AuthorTestDataFactory.java │ │ │ ├── BookTestDataFactory.java │ │ │ └── UserTestDataFactory.java │ │ └── util │ │ └── JsonHelper.java ├── spring-boot-jwt-jpa-master │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── techgeeknext │ │ │ │ ├── SpringBootJwtApplication.java │ │ │ │ ├── config │ │ │ │ ├── JwtAuthenticationEntryPoint.java │ │ │ │ ├── JwtRequestFilter.java │ │ │ │ ├── JwtTokenUtil.java │ │ │ │ └── WebSecurityConfig.java │ │ │ │ ├── controller │ │ │ │ ├── EmployeeController.java │ │ │ │ └── JwtAuthenticationController.java │ │ │ │ ├── model │ │ │ │ ├── JwtRequest.java │ │ │ │ ├── JwtResponse.java │ │ │ │ ├── UserDao.java │ │ │ │ └── UserDto.java │ │ │ │ ├── repository │ │ │ │ └── UserRepository.java │ │ │ │ └── service │ │ │ │ └── JwtUserDetailsService.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── com │ │ └── techgeeknext │ │ └── SpringBootJwtApplicationTests.java └── spring-security-core │ ├── .gitignore │ ├── README.md │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── baeldung │ │ │ ├── app │ │ │ ├── App.java │ │ │ ├── auditing │ │ │ │ ├── ExposeAttemptedPathAuthorizationAuditListener.java │ │ │ │ └── LoginAttemptsLogger.java │ │ │ ├── config │ │ │ │ ├── DatabaseLoader.java │ │ │ │ └── WebSecurityConfig.java │ │ │ ├── controller │ │ │ │ └── TaskController.java │ │ │ ├── entity │ │ │ │ └── Task.java │ │ │ ├── filter │ │ │ │ └── CustomFilter.java │ │ │ ├── repository │ │ │ │ └── TaskRepository.java │ │ │ └── service │ │ │ │ └── TaskService.java │ │ │ ├── checkrolejava │ │ │ ├── App.java │ │ │ ├── UnauthorizedException.java │ │ │ └── UserController.java │ │ │ ├── denyonmissing │ │ │ ├── CustomPermissionAllowedMethodSecurityMetadataSource.java │ │ │ ├── DenyApplication.java │ │ │ ├── DenyMethodSecurityConfig.java │ │ │ └── DenyOnMissingController.java │ │ │ ├── filterresponse │ │ │ ├── App.java │ │ │ ├── config │ │ │ │ ├── AppConfig.java │ │ │ │ └── SecurityJsonViewControllerAdvice.java │ │ │ ├── controller │ │ │ │ ├── ItemsController.java │ │ │ │ └── View.java │ │ │ └── model │ │ │ │ └── Item.java │ │ │ └── methodsecurity │ │ │ ├── annotation │ │ │ └── IsViewer.java │ │ │ ├── config │ │ │ └── MethodSecurityConfig.java │ │ │ ├── entity │ │ │ └── CustomUser.java │ │ │ ├── repository │ │ │ └── UserRoleRepository.java │ │ │ └── service │ │ │ ├── CustomUserDetailsService.java │ │ │ ├── SystemService.java │ │ │ └── UserRoleService.java │ ├── resources │ │ ├── application.properties │ │ └── logback.xml │ └── webapp │ │ └── WEB-INF │ │ └── web.xml │ └── test │ └── java │ └── com │ └── baeldung │ ├── app │ ├── SpringContextTest.java │ └── test │ │ └── LiveTest.java │ ├── denyonmissing │ └── DenyOnMissingControllerIntegrationTest.java │ ├── filterresponse │ └── SpringSecurityJsonViewIntegrationTest.java │ └── methodsecurity │ ├── ClassLevelSecurityIntegrationTest.java │ ├── MethodSecurityIntegrationTest.java │ ├── MockUserAtClassLevelIntegrationTest.java │ ├── UserDetailsIntegrationTest.java │ └── WithMockJohnViewer.java ├── DichBai.md ├── Dockerize ├── 01_Dockerfile │ └── plaindocker │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── Dockerfile │ │ ├── Makefile │ │ ├── ReadMe.md │ │ ├── jdk_alpine.jpg │ │ ├── jdk_buster.jpg │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── vn │ │ │ │ │ └── techmaster │ │ │ │ │ └── plaindocker │ │ │ │ │ ├── PlaindockerApplication.java │ │ │ │ │ └── controller │ │ │ │ │ └── HomeController.java │ │ │ └── resources │ │ │ │ ├── application.properties │ │ │ │ ├── static │ │ │ │ └── images │ │ │ │ │ └── dockerize.jpg │ │ │ │ └── templates │ │ │ │ └── index.html │ │ └── test │ │ │ └── java │ │ │ └── vn │ │ │ └── techmaster │ │ │ └── plaindocker │ │ │ └── PlaindockerApplicationTests.java │ │ └── website.jpg ├── 02_GoogleJib │ └── webdocker │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── webdocker │ │ │ │ ├── WebdockerApplication.java │ │ │ │ └── controller │ │ │ │ └── HomeController.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── static │ │ │ └── images │ │ │ │ └── dockerize.jpg │ │ │ └── templates │ │ │ └── index.html │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── webdocker │ │ └── WebdockerApplicationTests.java ├── 03_GraalVM │ ├── Dockerfile │ ├── Main.java │ └── output ├── 04_SpringNative │ └── nativespring │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── ReadMe.md │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── nativespring │ │ │ │ ├── HomeController.java │ │ │ │ └── NativespringApplication.java │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── static │ │ │ └── images │ │ │ │ └── dockerize.jpg │ │ │ └── templates │ │ │ └── index.html │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── nativespring │ │ └── NativespringApplicationTests.java └── ReadMe.md ├── Fluent └── DemoFluent.java ├── JPATransaction └── bank │ ├── .gitignore │ ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties │ ├── ReadMe.md │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── vn │ │ │ └── techmaster │ │ │ └── bank │ │ │ ├── AppRunner.java │ │ │ ├── BankApplication.java │ │ │ ├── controller │ │ │ ├── BankController.java │ │ │ ├── request │ │ │ │ └── TransferRequest.java │ │ │ └── response │ │ │ │ └── TransferResult.java │ │ │ ├── exception │ │ │ ├── AccountException.java │ │ │ ├── BankErrorCode.java │ │ │ ├── BankException.java │ │ │ └── DummyException.java │ │ │ ├── model │ │ │ ├── Account.java │ │ │ ├── AccountState.java │ │ │ ├── AllLog.java │ │ │ └── TransactLog.java │ │ │ ├── repository │ │ │ ├── AccountRepo.java │ │ │ ├── AllLogRepo.java │ │ │ └── TransactLogRepo.java │ │ │ └── service │ │ │ ├── BankService.java │ │ │ └── LoggingService.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── vn │ └── techmaster │ └── bank │ └── BankApplicationTests.java ├── Kafka ├── 01-SingleBroker │ ├── ReadMe.md │ ├── consumer │ │ ├── .gitignore │ │ ├── go.mod │ │ ├── go.sum │ │ └── main.go │ ├── docker-compose.yml │ └── images │ │ ├── .DS_Store │ │ ├── Conduktor.jpg │ │ ├── Conduktor_Consumer.jpg │ │ ├── Conduktor_Tao_Consumer.jpg │ │ ├── container_dashboard.jpg │ │ ├── nhan_message.jpg │ │ ├── tao_message.jpg │ │ └── zookeper_broker.jpg ├── 02-SpringKafkaBasic │ └── basickafka │ │ ├── .gitignore │ │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── vn │ │ │ │ └── techmaster │ │ │ │ └── basickafka │ │ │ │ └── BasickafkaApplication.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── vn │ │ └── techmaster │ │ └── basickafka │ │ └── BasickafkaApplicationTests.java └── ReadMe.md ├── LICENSE ├── ModelAttributeVsRequestBody └── restannotation │ ├── .gitignore │ ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties │ ├── ReadMe.md │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── vn │ │ │ └── techmaster │ │ │ └── restannotation │ │ │ ├── RestannotationApplication.java │ │ │ ├── controller │ │ │ └── RESTController.java │ │ │ └── request │ │ │ └── TransferRequest.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── vn │ └── techmaster │ └── restannotation │ └── RestannotationApplicationTests.java ├── NoiQuy.md ├── Quarkus └── demoquarkus │ ├── .dockerignore │ ├── .gitignore │ ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ └── maven-wrapper.properties │ ├── README.md │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ ├── main │ ├── docker │ │ ├── Dockerfile.jvm │ │ ├── Dockerfile.legacy-jar │ │ ├── Dockerfile.native │ │ └── Dockerfile.native-distroless │ ├── java │ │ └── vn │ │ │ └── techmaster │ │ │ └── BookResource.java │ └── resources │ │ ├── META-INF │ │ └── resources │ │ │ └── index.html │ │ └── application.properties │ └── test │ └── java │ └── vn │ └── techmaster │ ├── BookResourceTest.java │ └── NativeBookResourceIT.java ├── README.md ├── Reactive └── ReadMe.md ├── RestAssured ├── ReadMe.md └── spring-boot-rest-assured │ ├── .gitignore │ ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties │ ├── README.md │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── de │ │ │ └── rieckpil │ │ │ └── blog │ │ │ ├── Application.java │ │ │ ├── Book.java │ │ │ ├── BookController.java │ │ │ ├── BookNotFoundException.java │ │ │ ├── BookRequest.java │ │ │ ├── BookService.java │ │ │ └── WebSecurityConfig.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── de │ └── rieckpil │ └── blog │ ├── ApplicationTest.java │ └── BookControllerTest.java ├── Scheduling-Retry ├── README.md ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── baeldung │ │ │ ├── async │ │ │ ├── AsyncComponent.java │ │ │ ├── CustomAsyncExceptionHandler.java │ │ │ └── config │ │ │ │ └── SpringAsyncConfig.java │ │ │ ├── scheduling │ │ │ ├── ScheduledAnnotationExample.java │ │ │ ├── ScheduledFixedRateExample.java │ │ │ ├── SchedulingWithXmlConfig.java │ │ │ ├── SpringSchedulingConfig.java │ │ │ ├── conditional │ │ │ │ ├── ScheduleJobsByProfile.java │ │ │ │ ├── ScheduledJob.java │ │ │ │ ├── ScheduledJobsWithBoolean.java │ │ │ │ ├── ScheduledJobsWithConditional.java │ │ │ │ ├── ScheduledJobsWithExpression.java │ │ │ │ └── SchedulingApplication.java │ │ │ └── dynamic │ │ │ │ ├── DynamicSchedulingConfig.java │ │ │ │ └── TickService.java │ │ │ ├── springretry │ │ │ ├── AppConfig.java │ │ │ ├── DefaultListenerSupport.java │ │ │ ├── MyService.java │ │ │ └── MyServiceImpl.java │ │ │ └── taskscheduler │ │ │ ├── ThreadPoolTaskSchedulerConfig.java │ │ │ └── ThreadPoolTaskSchedulerExamples.java │ └── resources │ │ ├── retryConfig.properties │ │ ├── springAsync-config.xml │ │ ├── springScheduled-config.xml │ │ └── springScheduled.properties │ └── test │ └── java │ └── com │ └── baeldung │ ├── async │ ├── AsyncAnnotationExampleIntegrationTest.java │ └── AsyncWithXMLIntegrationTest.java │ ├── scheduling │ ├── DynamicSchedulingIntegrationTest.java │ ├── ScheduledAnnotationExampleIntegrationTest.java │ ├── ScheduledFixedRateExampleIntegrationTest.java │ └── SchedulingWithXmlConfigIntegrationTest.java │ ├── springretry │ └── SpringRetryIntegrationTest.java │ └── taskscheduler │ └── ThreadPoolTaskSchedulerIntegrationTest.java ├── SevenDatabasePatterns └── ReadMe.md ├── Thread └── 01-Basic │ ├── DemoRunnable.java │ ├── HelloThread.java │ ├── ReadMe.md │ └── SeveralRunnable.java └── Vincinema └── 01Entity └── vincinema ├── .gitignore ├── .mvn └── wrapper │ ├── MavenWrapperDownloader.java │ ├── maven-wrapper.jar │ └── maven-wrapper.properties ├── mvnw ├── mvnw.cmd ├── pom.xml └── src ├── main ├── java │ └── vn │ │ └── techmaster │ │ └── vincinema │ │ ├── AppRunner.java │ │ ├── VincinemaApplication.java │ │ ├── controller │ │ ├── BookingController.java │ │ ├── CinemaController.java │ │ ├── CustomExceptionHandler.java │ │ ├── EventController.java │ │ ├── FilmController.java │ │ ├── HomeController.java │ │ ├── RoomController.java │ │ └── TicketController.java │ │ ├── exception │ │ ├── APIError.java │ │ └── CustomException.java │ │ ├── model │ │ ├── Booking.java │ │ ├── BookingSeat.java │ │ ├── Cinema.java │ │ ├── City.java │ │ ├── Customer.java │ │ ├── Event.java │ │ ├── Film.java │ │ ├── Genre.java │ │ ├── Language.java │ │ ├── Rating.java │ │ ├── Room.java │ │ ├── Seat.java │ │ ├── SeatType.java │ │ └── Ticket.java │ │ ├── pojo │ │ └── CinemaPOJO.java │ │ ├── repository │ │ ├── BookingRepository.java │ │ ├── CinemaRepository.java │ │ ├── CityRepository.java │ │ ├── CustomerRepository.java │ │ ├── EventRepository.java │ │ ├── FilmRepository.java │ │ ├── GenreRepository.java │ │ ├── RoomRepository.java │ │ └── SeatRepository.java │ │ ├── request │ │ └── BookingRequest.java │ │ ├── response │ │ └── BookingInfo.java │ │ └── service │ │ ├── BookingService.java │ │ ├── CinemaService.java │ │ ├── CustomerService.java │ │ ├── EventService.java │ │ ├── FilmService.java │ │ ├── PricePromotionService.java │ │ └── RoomService.java └── resources │ ├── application-dev.properties │ ├── application-post.properties │ ├── application.properties │ ├── city.sql │ ├── genre.sql │ └── templates │ ├── bookticket.html │ └── index.html └── test └── java └── vn └── techmaster └── vincinema └── VincinemaApplicationTests.java /01-ToolJavaCoreCleanCode/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/01-ToolJavaCoreCleanCode/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/.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 | -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/ApartmentSelling/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/01-ToolJavaCoreCleanCode/ApartmentSelling/.DS_Store -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/ApartmentSelling/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/01-ToolJavaCoreCleanCode/ApartmentSelling/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/ApartmentSelling/.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 | -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/ApartmentSelling/ReadMe.md: -------------------------------------------------------------------------------- 1 | ``` 2 | . 3 | ├── controller <- Hứng và xử lý các request 4 | │ └── APIController.java 5 | ├── model <- chứa định nghĩa các đối tượng 6 | │ ├── Apartment.java 7 | │ └── Project.java 8 | └── ApartmentSellingApplication.java <-- chứa hàm main 9 | ``` -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/ApartmentSelling/src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/01-ToolJavaCoreCleanCode/ApartmentSelling/src/.DS_Store -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/ApartmentSelling/src/main/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/01-ToolJavaCoreCleanCode/ApartmentSelling/src/main/.DS_Store -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/ApartmentSelling/src/main/java/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/01-ToolJavaCoreCleanCode/ApartmentSelling/src/main/java/.DS_Store -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/ApartmentSelling/src/main/java/com/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/01-ToolJavaCoreCleanCode/ApartmentSelling/src/main/java/com/.DS_Store -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/ApartmentSelling/src/main/java/com/onemount/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/01-ToolJavaCoreCleanCode/ApartmentSelling/src/main/java/com/onemount/.DS_Store -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/ApartmentSelling/src/main/java/com/onemount/ApartmentSelling/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/01-ToolJavaCoreCleanCode/ApartmentSelling/src/main/java/com/onemount/ApartmentSelling/.DS_Store -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/ApartmentSelling/src/main/java/com/onemount/ApartmentSelling/model/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/01-ToolJavaCoreCleanCode/ApartmentSelling/src/main/java/com/onemount/ApartmentSelling/model/.DS_Store -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/ApartmentSelling/src/main/java/com/onemount/ApartmentSelling/model/District.java: -------------------------------------------------------------------------------- 1 | package com.onemount.ApartmentSelling.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class District { 9 | private int id; 10 | private String name; 11 | private String city; 12 | } 13 | -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/ApartmentSelling/src/main/java/com/onemount/ApartmentSelling/model/Project.java: -------------------------------------------------------------------------------- 1 | package com.onemount.ApartmentSelling.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class Project { 9 | private String name; 10 | private String district; 11 | } 12 | -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/ApartmentSelling/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/Barcelona/barcelonateam/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/01-ToolJavaCoreCleanCode/Barcelona/barcelonateam/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/Barcelona/barcelonateam/.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 | -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/Barcelona/barcelonateam/src/main/java/com/onemount/barcelonateam/model/Coach.java: -------------------------------------------------------------------------------- 1 | package com.onemount.barcelonateam.model; 2 | 3 | public class Coach { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/Barcelona/barcelonateam/src/main/java/com/onemount/barcelonateam/model/Player.java: -------------------------------------------------------------------------------- 1 | package com.onemount.barcelonateam.model; 2 | 3 | public class Player { 4 | //Lưu thông tin từng cầu thủ 5 | //Tên 6 | //Số áo 7 | //Vị trí 8 | } 9 | -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/Barcelona/barcelonateam/src/main/java/com/onemount/barcelonateam/repository/PlayerRepository.java: -------------------------------------------------------------------------------- 1 | package com.onemount.barcelonateam.repository; 2 | 3 | import java.util.List; 4 | 5 | import com.onemount.barcelonateam.model.Player; 6 | 7 | public class PlayerRepository { 8 | //Lưu danh sách các cầu thủ 9 | 10 | public List getPlayers() {} 11 | } 12 | -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/Barcelona/barcelonateam/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/carlist/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/carlist/src/test/java/com/onemount/carlist/CarlistApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.onemount.carlist; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class CarlistApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/tourlisting/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/01-ToolJavaCoreCleanCode/tourlisting/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/tourlisting/.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 | -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/tourlisting/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /01-ToolJavaCoreCleanCode/tourlisting/src/test/java/com/onemount/tourlisting/TourlistingApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.onemount.tourlisting; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class TourlistingApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /02-Collection_QueryParam/Barcelona/01/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/02-Collection_QueryParam/Barcelona/01/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /02-Collection_QueryParam/Barcelona/01/.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 | -------------------------------------------------------------------------------- /02-Collection_QueryParam/Barcelona/01/src/main/java/com/onemount/barcelonateam/exception/TeamException.java: -------------------------------------------------------------------------------- 1 | package com.onemount.barcelonateam.exception; 2 | 3 | public class TeamException extends Exception { 4 | private static final long serialVersionUID = 743962959923490925L; 5 | 6 | public TeamException(String message) { 7 | super(message); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /02-Collection_QueryParam/Barcelona/01/src/main/java/com/onemount/barcelonateam/model/Coach.java: -------------------------------------------------------------------------------- 1 | package com.onemount.barcelonateam.model; 2 | 3 | public class Coach { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /02-Collection_QueryParam/Barcelona/01/src/main/java/com/onemount/barcelonateam/model/Player.java: -------------------------------------------------------------------------------- 1 | package com.onemount.barcelonateam.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class Player { 9 | private String name; 10 | private int number; 11 | private Position position; 12 | } 13 | -------------------------------------------------------------------------------- /02-Collection_QueryParam/Barcelona/01/src/main/java/com/onemount/barcelonateam/model/Position.java: -------------------------------------------------------------------------------- 1 | package com.onemount.barcelonateam.model; 2 | 3 | public enum Position { 4 | GK, 5 | DF, 6 | MF, 7 | FW 8 | } 9 | -------------------------------------------------------------------------------- /02-Collection_QueryParam/Barcelona/01/src/main/java/com/onemount/barcelonateam/model/Substitute.java: -------------------------------------------------------------------------------- 1 | package com.onemount.barcelonateam.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class Substitute { 9 | private Player outPlayer; 10 | private Player inPlayer; 11 | } 12 | -------------------------------------------------------------------------------- /02-Collection_QueryParam/Barcelona/01/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /02-Collection_QueryParam/Barcelona/01/src/test/java/com/onemount/barcelonateam/BarcelonateamApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.onemount.barcelonateam; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class BarcelonateamApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /04-Cinema/01-Modelling/cinema/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/04-Cinema/01-Modelling/cinema/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /04-Cinema/01-Modelling/cinema/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /04-Cinema/01-Modelling/cinema/images/vincinema.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/04-Cinema/01-Modelling/cinema/images/vincinema.webp -------------------------------------------------------------------------------- /04-Cinema/01-Modelling/cinema/src/main/java/vn/techmaster/cinema/model/Cinema.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.cinema.model; 2 | 3 | public public static void main(String[] args) { 4 | 5 | }class Cinema { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /04-Cinema/01-Modelling/cinema/src/main/java/vn/techmaster/cinema/model/Customer.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.cinema.model; 2 | 3 | public class Customer { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /04-Cinema/01-Modelling/cinema/src/main/java/vn/techmaster/cinema/model/Film.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.cinema.model; 2 | 3 | public class Film { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /04-Cinema/01-Modelling/cinema/src/main/java/vn/techmaster/cinema/model/Order.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.cinema.model; 2 | 3 | public class Order { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /04-Cinema/01-Modelling/cinema/src/main/java/vn/techmaster/cinema/model/OrderLine.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.cinema.model; 2 | 3 | public class OrderLine { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /04-Cinema/01-Modelling/cinema/src/main/java/vn/techmaster/cinema/model/Reservation.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.cinema.model; 2 | 3 | public class Reservation { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /04-Cinema/01-Modelling/cinema/src/main/java/vn/techmaster/cinema/model/Room.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.cinema.model; 2 | 3 | public class Room { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /04-Cinema/01-Modelling/cinema/src/main/java/vn/techmaster/cinema/model/Seat.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.cinema.model; 2 | 3 | public class Seat { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /04-Cinema/01-Modelling/cinema/src/main/java/vn/techmaster/cinema/model/Staff.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.cinema.model; 2 | 3 | public class Staff { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /04-Cinema/01-Modelling/cinema/src/main/java/vn/techmaster/cinema/model/Ticket.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.cinema.model; 2 | 3 | public class Ticket { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /04-Cinema/01-Modelling/cinema/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /04-Cinema/01-Modelling/cinema/src/test/java/vn/techmaster/cinema/CinemaApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.cinema; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class CinemaApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /04-Cinema/BMI/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/04-Cinema/BMI/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /04-Cinema/BMI/.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 | -------------------------------------------------------------------------------- /04-Cinema/BMI/images/BMI_Calculator.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/04-Cinema/BMI/images/BMI_Calculator.jpg -------------------------------------------------------------------------------- /04-Cinema/BMI/images/duplicate_logic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/04-Cinema/BMI/images/duplicate_logic.jpg -------------------------------------------------------------------------------- /04-Cinema/BMI/images/loose_coupling.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/04-Cinema/BMI/images/loose_coupling.jpg -------------------------------------------------------------------------------- /04-Cinema/BMI/images/photoshop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/04-Cinema/BMI/images/photoshop.jpg -------------------------------------------------------------------------------- /04-Cinema/BMI/images/postman.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/04-Cinema/BMI/images/postman.jpg -------------------------------------------------------------------------------- /04-Cinema/BMI/images/share_service.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/04-Cinema/BMI/images/share_service.jpg -------------------------------------------------------------------------------- /04-Cinema/BMI/images/tigh_coupling.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/04-Cinema/BMI/images/tigh_coupling.jpg -------------------------------------------------------------------------------- /04-Cinema/BMI/src/main/java/vn/techmaster/solid/controller/PostMapping.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.solid.controller; 2 | 3 | public @interface PostMapping { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /04-Cinema/BMI/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /04-Cinema/BMI/src/main/resources/lang/message.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/04-Cinema/BMI/src/main/resources/lang/message.properties -------------------------------------------------------------------------------- /04-Cinema/BMI/src/test/java/vn/techmaster/solid/SolidApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.solid; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class SolidApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /04-Cinema/Schedule/01Basic/demoschedule/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/04-Cinema/Schedule/01Basic/demoschedule/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /04-Cinema/Schedule/01Basic/demoschedule/.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 | -------------------------------------------------------------------------------- /04-Cinema/Schedule/01Basic/demoschedule/images/asyn_task.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/04-Cinema/Schedule/01Basic/demoschedule/images/asyn_task.jpg -------------------------------------------------------------------------------- /04-Cinema/Schedule/01Basic/demoschedule/images/fixdelay.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/04-Cinema/Schedule/01Basic/demoschedule/images/fixdelay.jpg -------------------------------------------------------------------------------- /04-Cinema/Schedule/01Basic/demoschedule/images/fixed_rate_vs_fixed_delay.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/04-Cinema/Schedule/01Basic/demoschedule/images/fixed_rate_vs_fixed_delay.jpg -------------------------------------------------------------------------------- /04-Cinema/Schedule/01Basic/demoschedule/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /04-Cinema/Schedule/01Basic/demoschedule/src/test/java/vn/techmaster/demoschedule/DemoscheduleApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.demoschedule; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class DemoscheduleApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /04-Cinema/Schedule/02WebClientIOT/iot/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/04-Cinema/Schedule/02WebClientIOT/iot/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /04-Cinema/Schedule/02WebClientIOT/iot/.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 | -------------------------------------------------------------------------------- /04-Cinema/Schedule/02WebClientIOT/iot/images/iot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/04-Cinema/Schedule/02WebClientIOT/iot/images/iot.jpg -------------------------------------------------------------------------------- /04-Cinema/Schedule/02WebClientIOT/iot/images/linechart.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/04-Cinema/Schedule/02WebClientIOT/iot/images/linechart.jpg -------------------------------------------------------------------------------- /04-Cinema/Schedule/02WebClientIOT/iot/images/localhost_8080_mono.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/04-Cinema/Schedule/02WebClientIOT/iot/images/localhost_8080_mono.jpg -------------------------------------------------------------------------------- /04-Cinema/Schedule/02WebClientIOT/iot/src/main/java/vn/techmaster/iot/controller/reponse/IOTMeasure.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.iot.controller.reponse; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class IOTMeasure { 9 | private float temperature; 10 | private float moisture; 11 | } -------------------------------------------------------------------------------- /04-Cinema/Schedule/02WebClientIOT/iot/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /04-Cinema/Schedule/02WebClientIOT/iot/src/test/java/vn/techmaster/iot/IotApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.iot; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class IotApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /04-Cinema/bmiservice/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/04-Cinema/bmiservice/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /04-Cinema/bmiservice/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /04-Cinema/bmiservice/src/main/java/vn/techmaster/bmiservice/response/BMIResult.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bmiservice.response; 2 | 3 | public class BMIResult { 4 | public float index; 5 | public String description; 6 | 7 | public BMIResult(float index, String description) { 8 | this.index = index; 9 | this.description = description; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /04-Cinema/bmiservice/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /04-Cinema/bmiservice/src/test/java/vn/techmaster/bmiservice/BmiserviceApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bmiservice; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class BmiserviceApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /05-ExceptionHandling/01-CheckVsUncheck/FireException.java: -------------------------------------------------------------------------------- 1 | public class FireException extends Exception{ 2 | private static final long serialVersionUID = -2374962690992004741L; 3 | 4 | public FireException(String message) { 5 | super(message); 6 | } 7 | 8 | } 9 | -------------------------------------------------------------------------------- /05-ExceptionHandling/01-CheckVsUncheck/SnakeBiteException.java: -------------------------------------------------------------------------------- 1 | public class SnakeBiteException extends RuntimeException{ 2 | private static final long serialVersionUID = 699251143741936068L; 3 | 4 | public SnakeBiteException(String message) { 5 | super(message); 6 | } 7 | 8 | } 9 | -------------------------------------------------------------------------------- /05-ExceptionHandling/02-ExceptionHandler/bmiservice/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/05-ExceptionHandling/02-ExceptionHandler/bmiservice/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /05-ExceptionHandling/02-ExceptionHandler/bmiservice/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /05-ExceptionHandling/02-ExceptionHandler/bmiservice/src/main/java/vn/techmaster/bmiservice/exception/BMIException.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bmiservice.exception; 2 | 3 | public class BMIException extends RuntimeException{ 4 | private static final long serialVersionUID = -4315753772384796683L; 5 | 6 | public BMIException(String message) { 7 | super(message); 8 | } 9 | 10 | } 11 | -------------------------------------------------------------------------------- /05-ExceptionHandling/02-ExceptionHandler/bmiservice/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.mvc.throw-exception-if-no-handler-found=true 3 | spring.resources.add-mappings=false -------------------------------------------------------------------------------- /05-ExceptionHandling/02-ExceptionHandler/bmiservice/src/test/java/vn/techmaster/bmiservice/BmiserviceApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bmiservice; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class BmiserviceApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /06-UnitTestBarcelona/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/06-UnitTestBarcelona/.gitignore -------------------------------------------------------------------------------- /06-UnitTestBarcelona/barcelonateam/images/bad_error.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/06-UnitTestBarcelona/barcelonateam/images/bad_error.jpg -------------------------------------------------------------------------------- /06-UnitTestBarcelona/barcelonateam/images/better_error.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/06-UnitTestBarcelona/barcelonateam/images/better_error.jpg -------------------------------------------------------------------------------- /06-UnitTestBarcelona/barcelonateam/images/nice_error.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/06-UnitTestBarcelona/barcelonateam/images/nice_error.jpg -------------------------------------------------------------------------------- /06-UnitTestBarcelona/barcelonateam/images/rest_controller_advice.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/06-UnitTestBarcelona/barcelonateam/images/rest_controller_advice.jpg -------------------------------------------------------------------------------- /06-UnitTestBarcelona/barcelonateam/src/main/java/com/onemount/barcelonateam/model/Coach.java: -------------------------------------------------------------------------------- 1 | package com.onemount.barcelonateam.model; 2 | 3 | 4 | public class Coach { 5 | 6 | } 7 | -------------------------------------------------------------------------------- /06-UnitTestBarcelona/barcelonateam/src/main/java/com/onemount/barcelonateam/model/Position.java: -------------------------------------------------------------------------------- 1 | package com.onemount.barcelonateam.model; 2 | 3 | 4 | public enum Position { 5 | GK, DF, MF, FW; 6 | } 7 | -------------------------------------------------------------------------------- /06-UnitTestBarcelona/barcelonateam/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.mvc.throw-exception-if-no-handler-found=true 2 | spring.resources.add-mappings=false -------------------------------------------------------------------------------- /06-UnitTestBarcelona/images/choose_team.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/06-UnitTestBarcelona/images/choose_team.jpg -------------------------------------------------------------------------------- /06-UnitTestBarcelona/images/team_group.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/06-UnitTestBarcelona/images/team_group.jpg -------------------------------------------------------------------------------- /07-OpenFeign/ReadMe.md: -------------------------------------------------------------------------------- 1 | # Một số thư viện REST Client 2 | 3 | https://github.com/rest-assured 4 | 5 | https://github.com/square/retrofit 6 | 7 | https://www.baeldung.com/intro-to-feign 8 | 9 | https://www.baeldung.com/netflix-feign-vs-openfeign -------------------------------------------------------------------------------- /07-OpenFeign/barcelonateam/images/bad_error.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/07-OpenFeign/barcelonateam/images/bad_error.jpg -------------------------------------------------------------------------------- /07-OpenFeign/barcelonateam/images/better_error.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/07-OpenFeign/barcelonateam/images/better_error.jpg -------------------------------------------------------------------------------- /07-OpenFeign/barcelonateam/images/nice_error.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/07-OpenFeign/barcelonateam/images/nice_error.jpg -------------------------------------------------------------------------------- /07-OpenFeign/barcelonateam/images/rest_controller_advice.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/07-OpenFeign/barcelonateam/images/rest_controller_advice.jpg -------------------------------------------------------------------------------- /07-OpenFeign/barcelonateam/src/main/java/com/onemount/barcelonateam/model/Coach.java: -------------------------------------------------------------------------------- 1 | package com.onemount.barcelonateam.model; 2 | 3 | 4 | public class Coach { 5 | 6 | } 7 | -------------------------------------------------------------------------------- /07-OpenFeign/barcelonateam/src/main/java/com/onemount/barcelonateam/model/Position.java: -------------------------------------------------------------------------------- 1 | package com.onemount.barcelonateam.model; 2 | 3 | 4 | public enum Position { 5 | GK, DF, MF, FW; 6 | } 7 | -------------------------------------------------------------------------------- /07-OpenFeign/barcelonateam/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.mvc.throw-exception-if-no-handler-found=true 2 | spring.resources.add-mappings=false -------------------------------------------------------------------------------- /07-OpenFeign/openfeign/simplefeign/src/main/java/vn/techmaster/Contributor.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster; 2 | 3 | public class Contributor { 4 | String login; 5 | int contributions; 6 | } 7 | -------------------------------------------------------------------------------- /07-OpenFeign/openfeign/simplefeign/src/main/java/vn/techmaster/Issue.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster; 2 | 3 | import java.util.List; 4 | 5 | public class Issue { 6 | String title; 7 | String body; 8 | List assignees; 9 | int milestone; 10 | List labels; 11 | } 12 | -------------------------------------------------------------------------------- /08-RestCRUD/01-CRUD/bookstore/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/08-RestCRUD/01-CRUD/bookstore/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /08-RestCRUD/01-CRUD/bookstore/.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 | -------------------------------------------------------------------------------- /08-RestCRUD/01-CRUD/bookstore/images/DELETE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/08-RestCRUD/01-CRUD/bookstore/images/DELETE.jpg -------------------------------------------------------------------------------- /08-RestCRUD/01-CRUD/bookstore/images/GET.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/08-RestCRUD/01-CRUD/bookstore/images/GET.jpg -------------------------------------------------------------------------------- /08-RestCRUD/01-CRUD/bookstore/images/GET_by_Id.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/08-RestCRUD/01-CRUD/bookstore/images/GET_by_Id.jpg -------------------------------------------------------------------------------- /08-RestCRUD/01-CRUD/bookstore/images/H2_Console.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/08-RestCRUD/01-CRUD/bookstore/images/H2_Console.jpg -------------------------------------------------------------------------------- /08-RestCRUD/01-CRUD/bookstore/images/H2_Select.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/08-RestCRUD/01-CRUD/bookstore/images/H2_Select.jpg -------------------------------------------------------------------------------- /08-RestCRUD/01-CRUD/bookstore/images/PATCH.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/08-RestCRUD/01-CRUD/bookstore/images/PATCH.jpg -------------------------------------------------------------------------------- /08-RestCRUD/01-CRUD/bookstore/images/POST.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/08-RestCRUD/01-CRUD/bookstore/images/POST.jpg -------------------------------------------------------------------------------- /08-RestCRUD/01-CRUD/bookstore/images/PUT.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/08-RestCRUD/01-CRUD/bookstore/images/PUT.jpg -------------------------------------------------------------------------------- /08-RestCRUD/01-CRUD/bookstore/src/main/java/vn/techmaster/bookstore/model/BookPOJO.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bookstore.model; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class BookPOJO { 7 | private String title; 8 | private String author; 9 | } 10 | 11 | -------------------------------------------------------------------------------- /08-RestCRUD/01-CRUD/bookstore/src/main/java/vn/techmaster/bookstore/repository/BookRespository.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bookstore.repository; 2 | 3 | import org.springframework.data.jpa.repository.JpaRepository; 4 | 5 | import vn.techmaster.bookstore.model.Book; 6 | 7 | public interface BookRespository extends JpaRepository { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /08-RestCRUD/01-CRUD/bookstore/src/test/java/vn/techmaster/bookstore/BookstoreApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bookstore; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class BookstoreApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /08-RestCRUD/02-CRUD-Feign/bookstore/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/08-RestCRUD/02-CRUD-Feign/bookstore/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /08-RestCRUD/02-CRUD-Feign/bookstore/.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 | -------------------------------------------------------------------------------- /08-RestCRUD/02-CRUD-Feign/bookstore/images/DELETE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/08-RestCRUD/02-CRUD-Feign/bookstore/images/DELETE.jpg -------------------------------------------------------------------------------- /08-RestCRUD/02-CRUD-Feign/bookstore/images/GET.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/08-RestCRUD/02-CRUD-Feign/bookstore/images/GET.jpg -------------------------------------------------------------------------------- /08-RestCRUD/02-CRUD-Feign/bookstore/images/GET_by_Id.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/08-RestCRUD/02-CRUD-Feign/bookstore/images/GET_by_Id.jpg -------------------------------------------------------------------------------- /08-RestCRUD/02-CRUD-Feign/bookstore/images/H2_Console.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/08-RestCRUD/02-CRUD-Feign/bookstore/images/H2_Console.jpg -------------------------------------------------------------------------------- /08-RestCRUD/02-CRUD-Feign/bookstore/images/H2_Select.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/08-RestCRUD/02-CRUD-Feign/bookstore/images/H2_Select.jpg -------------------------------------------------------------------------------- /08-RestCRUD/02-CRUD-Feign/bookstore/images/PATCH.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/08-RestCRUD/02-CRUD-Feign/bookstore/images/PATCH.jpg -------------------------------------------------------------------------------- /08-RestCRUD/02-CRUD-Feign/bookstore/images/POST.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/08-RestCRUD/02-CRUD-Feign/bookstore/images/POST.jpg -------------------------------------------------------------------------------- /08-RestCRUD/02-CRUD-Feign/bookstore/images/PUT.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/08-RestCRUD/02-CRUD-Feign/bookstore/images/PUT.jpg -------------------------------------------------------------------------------- /08-RestCRUD/02-CRUD-Feign/bookstore/src/main/java/vn/techmaster/bookstore/config/AppConfig.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bookstore.config; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.retry.annotation.EnableRetry; 5 | 6 | @Configuration 7 | @EnableRetry 8 | public class AppConfig { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /08-RestCRUD/02-CRUD-Feign/bookstore/src/main/java/vn/techmaster/bookstore/repository/BookRespository.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bookstore.repository; 2 | 3 | import org.springframework.data.jpa.repository.JpaRepository; 4 | 5 | import vn.techmaster.bookstore.model.Book; 6 | 7 | public interface BookRespository extends JpaRepository { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /08-RestCRUD/03-CRM/crm/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/08-RestCRUD/03-CRM/crm/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /08-RestCRUD/03-CRM/crm/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /08-RestCRUD/03-CRM/crm/src/main/resources/customer.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO customer(fullname, email, mobile) VALUES('Trịnh Minh Cường', 'cuong@techmaster.vn', '0902209011'); 2 | INSERT INTO customer(fullname, email, mobile) VALUES('Đào Văn Dũng', 'đungdv@techmaster.vn', '0903309015'); -------------------------------------------------------------------------------- /08-RestCRUD/03-CRM/crm/src/test/java/vn/techmaster/crm/RestTest.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.crm; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class RestTest { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/01GetAllBooks/bookstore/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/01GetAllBooks/bookstore/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/01GetAllBooks/bookstore/.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 | -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/01GetAllBooks/bookstore/images/getAllBooks.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/01GetAllBooks/bookstore/images/getAllBooks.jpg -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/01GetAllBooks/bookstore/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/01GetAllBooks/bookstore/src/main/resources/application.properties -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/01GetAllBooks/bookstore/src/test/java/vn/techmaster/bookstore/BookstoreApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bookstore; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class BookstoreApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/02LoadCSV/bookstore/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/02LoadCSV/bookstore/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/02LoadCSV/bookstore/.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 | -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/02LoadCSV/bookstore/images/getAllBooks.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/02LoadCSV/bookstore/images/getAllBooks.jpg -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/02LoadCSV/bookstore/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/02LoadCSV/bookstore/src/main/resources/application.properties -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/02LoadCSV/bookstore/src/main/resources/static/book.csv: -------------------------------------------------------------------------------- 1 | title|description 2 | Không Gia Đình|Chú bé Remy lang thang cùng gánh xiếc của cụ Vitali 3 | Dế mèn phiêu lưu ký|Một chuyến phiêu lưu của chú dế mèn dũng cảm 4 | Mắt Biếc|Cuộc tình ngang trái oái oăm của đôi bạn trẻ. Đọc xong không hiểu gì. 5 | Hổ Trắng|Đời đau khổ một người đàn ông Ấn Độ -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/02LoadCSV/bookstore/src/test/java/vn/techmaster/bookstore/BookstoreApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bookstore; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class BookstoreApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/03ViewDetail/bookstore/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/03ViewDetail/bookstore/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/03ViewDetail/bookstore/.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 | -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/03ViewDetail/bookstore/images/getAllBooks.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/03ViewDetail/bookstore/images/getAllBooks.jpg -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/03ViewDetail/bookstore/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/03ViewDetail/bookstore/src/main/resources/application.properties -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/03ViewDetail/bookstore/src/main/resources/static/book.csv: -------------------------------------------------------------------------------- 1 | title|description 2 | Không Gia Đình|Chú bé Remy lang thang cùng gánh xiếc của cụ Vitali 3 | Dế mèn phiêu lưu ký|Một chuyến phiêu lưu của chú dế mèn dũng cảm 4 | Mắt Biếc|Cuộc tình ngang trái oái oăm của đôi bạn trẻ. Đọc xong không hiểu gì. 5 | Hổ Trắng|Đời đau khổ một người đàn ông Ấn Độ -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/03ViewDetail/bookstore/src/test/java/vn/techmaster/bookstore/BookstoreApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bookstore; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class BookstoreApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/04AddNew/bookstore/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/04AddNew/bookstore/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/04AddNew/bookstore/.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 | -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/04AddNew/bookstore/images/add_new.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/04AddNew/bookstore/images/add_new.jpg -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/04AddNew/bookstore/images/form.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/04AddNew/bookstore/images/form.jpg -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/04AddNew/bookstore/images/link_add_new.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/04AddNew/bookstore/images/link_add_new.jpg -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/04AddNew/bookstore/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/04AddNew/bookstore/src/main/resources/application.properties -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/04AddNew/bookstore/src/main/resources/static/book.csv: -------------------------------------------------------------------------------- 1 | title|description 2 | Không Gia Đình|Chú bé Remy lang thang cùng gánh xiếc của cụ Vitali 3 | Dế mèn phiêu lưu ký|Một chuyến phiêu lưu của chú dế mèn dũng cảm 4 | Mắt Biếc|Cuộc tình ngang trái oái oăm của đôi bạn trẻ. Đọc xong không hiểu gì. 5 | Hổ Trắng|Đời đau khổ một người đàn ông Ấn Độ -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/04AddNew/bookstore/src/test/java/vn/techmaster/bookstore/BookstoreApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bookstore; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class BookstoreApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/05EditUpdate/bookstore/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/05EditUpdate/bookstore/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/05EditUpdate/bookstore/.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 | -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/05EditUpdate/bookstore/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/05EditUpdate/bookstore/src/main/resources/application.properties -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/05EditUpdate/bookstore/src/main/resources/static/book.csv: -------------------------------------------------------------------------------- 1 | title|description 2 | Không Gia Đình|Chú bé Remy lang thang cùng gánh xiếc của cụ Vitali 3 | Dế mèn phiêu lưu ký|Một chuyến phiêu lưu của chú dế mèn dũng cảm 4 | Mắt Biếc|Cuộc tình ngang trái oái oăm của đôi bạn trẻ. Đọc xong không hiểu gì. 5 | Hổ Trắng|Đời đau khổ một người đàn ông Ấn Độ -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/05EditUpdate/bookstore/src/test/java/vn/techmaster/bookstore/BookstoreApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bookstore; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class BookstoreApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/06Delete/bookstore/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/06Delete/bookstore/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/06Delete/bookstore/.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 | -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/06Delete/bookstore/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/06Delete/bookstore/src/main/resources/application.properties -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/06Delete/bookstore/src/main/resources/static/book.csv: -------------------------------------------------------------------------------- 1 | title|description 2 | Không Gia Đình|Chú bé Remy lang thang cùng gánh xiếc của cụ Vitali 3 | Dế mèn phiêu lưu ký|Một chuyến phiêu lưu của chú dế mèn dũng cảm 4 | Mắt Biếc|Cuộc tình ngang trái oái oăm của đôi bạn trẻ. Đọc xong không hiểu gì. 5 | Hổ Trắng|Đời đau khổ một người đàn ông Ấn Độ -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/06Delete/bookstore/src/test/java/vn/techmaster/bookstore/BookstoreApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bookstore; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class BookstoreApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/07DeleteByPOST/bookstore/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/07DeleteByPOST/bookstore/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/07DeleteByPOST/bookstore/.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 | -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/07DeleteByPOST/bookstore/images/deletebutton.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/07DeleteByPOST/bookstore/images/deletebutton.jpg -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/07DeleteByPOST/bookstore/src/main/java/vn/techmaster/bookstore/request/DeleteRequest.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bookstore.request; 2 | 3 | public class DeleteRequest { 4 | private int id; 5 | 6 | public int getId() { 7 | return id; 8 | } 9 | 10 | public void setId(int id) { 11 | this.id = id; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/07DeleteByPOST/bookstore/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/07DeleteByPOST/bookstore/src/main/resources/application.properties -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/07DeleteByPOST/bookstore/src/main/resources/static/book.csv: -------------------------------------------------------------------------------- 1 | title|description 2 | Không Gia Đình|Chú bé Remy lang thang cùng gánh xiếc của cụ Vitali 3 | Dế mèn phiêu lưu ký|Một chuyến phiêu lưu của chú dế mèn dũng cảm 4 | Mắt Biếc|Cuộc tình ngang trái oái oăm của đôi bạn trẻ. Đọc xong không hiểu gì. 5 | Hổ Trắng|Đời đau khổ một người đàn ông Ấn Độ -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/07DeleteByPOST/bookstore/src/test/java/vn/techmaster/bookstore/BookstoreApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bookstore; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class BookstoreApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/08Search/bookstore/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/08Search/bookstore/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/08Search/bookstore/.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 | -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/08Search/bookstore/images/select_dependencies.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/08Search/bookstore/images/select_dependencies.jpg -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/08Search/bookstore/src/main/java/vn/techmaster/bookstore/request/SearchRequest.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bookstore.request; 2 | 3 | public class SearchRequest { 4 | private String keyword; 5 | 6 | public String getKeyword() { 7 | return keyword; 8 | } 9 | 10 | public void setKeyword(String keyword) { 11 | this.keyword = keyword; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/08Search/bookstore/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/09-RespositoryDAOPOJO/crud/08Search/bookstore/src/main/resources/application.properties -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/08Search/bookstore/src/main/resources/static/book.csv: -------------------------------------------------------------------------------- 1 | title|description 2 | Không Gia Đình|Chú bé Remy lang thang cùng gánh xiếc của cụ Vitali 3 | Dế mèn phiêu lưu ký|Một chuyến phiêu lưu của chú dế mèn dũng cảm 4 | Mắt Biếc|Cuộc tình ngang trái oái oăm của đôi bạn trẻ. Đọc xong không hiểu gì. 5 | Hổ Trắng|Đời đau khổ một người đàn ông Ấn Độ -------------------------------------------------------------------------------- /09-RespositoryDAOPOJO/crud/08Search/bookstore/src/test/java/vn/techmaster/bookstore/BookstoreApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bookstore; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class BookstoreApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /10-RESTBinary/simpleupload/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/10-RESTBinary/simpleupload/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /10-RESTBinary/simpleupload/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /10-RESTBinary/simpleupload/images/Postman.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/10-RESTBinary/simpleupload/images/Postman.jpg -------------------------------------------------------------------------------- /10-RESTBinary/simpleupload/src/main/resources/static/.gitignore: -------------------------------------------------------------------------------- 1 | photos/* 2 | -------------------------------------------------------------------------------- /11-JPADefineEntity/01EntityMapping/demojpa/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/11-JPADefineEntity/01EntityMapping/demojpa/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /11-JPADefineEntity/01EntityMapping/demojpa/.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 | -------------------------------------------------------------------------------- /11-JPADefineEntity/01EntityMapping/demojpa/src/main/java/vn/techmaster/demojpa/model/order/Address.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.demojpa.model.order; 2 | 3 | public class Address { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /11-JPADefineEntity/01EntityMapping/demojpa/src/main/java/vn/techmaster/demojpa/model/order/LineItem.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.demojpa.model.order; 2 | 3 | public class LineItem { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /11-JPADefineEntity/01EntityMapping/demojpa/src/main/java/vn/techmaster/demojpa/model/order/ShippingMethod.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.demojpa.model.order; 2 | 3 | public enum ShippingMethod { 4 | STANDARD, 5 | WITHIN2HOURS, 6 | WITHDAY 7 | } 8 | -------------------------------------------------------------------------------- /11-JPADefineEntity/01EntityMapping/demojpa/src/main/java/vn/techmaster/demojpa/repository/CityAvgSalary.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.demojpa.repository; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class CityAvgSalary { 9 | private String job; 10 | private double averagesalary; 11 | } 12 | -------------------------------------------------------------------------------- /11-JPADefineEntity/01EntityMapping/demojpa/src/main/java/vn/techmaster/demojpa/repository/CityJobCount.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.demojpa.repository; 2 | 3 | 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | public class CityJobCount { 10 | private String city; 11 | private String job; 12 | private long count; 13 | } 14 | -------------------------------------------------------------------------------- /11-JPADefineEntity/01EntityMapping/demojpa/src/main/java/vn/techmaster/demojpa/repository/JobCount.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.demojpa.repository; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class JobCount { 9 | private String job; 10 | private long count; //Phải là kiểu long chứ không thể là int 11 | } 12 | -------------------------------------------------------------------------------- /11-JPADefineEntity/01EntityMapping/demojpa/src/main/java/vn/techmaster/demojpa/repository/JobSalary.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.demojpa.repository; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class JobSalary { 9 | private String job; 10 | private double averagesalary; 11 | } -------------------------------------------------------------------------------- /11-JPADefineEntity/01EntityMapping/demojpa/src/main/java/vn/techmaster/demojpa/repository/MakerCount.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.demojpa.repository; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class MakerCount { 9 | private String maker; 10 | private long count; //Phải là kiểu long chứ không thể là int 11 | } -------------------------------------------------------------------------------- /11-JPADefineEntity/JPA.mindnode/QuickLook/Preview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/11-JPADefineEntity/JPA.mindnode/QuickLook/Preview.jpg -------------------------------------------------------------------------------- /11-JPADefineEntity/JPA.mindnode/contents.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/11-JPADefineEntity/JPA.mindnode/contents.xml -------------------------------------------------------------------------------- /11-JPADefineEntity/JPA.mindnode/viewState.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/11-JPADefineEntity/JPA.mindnode/viewState.plist -------------------------------------------------------------------------------- /11-JPADefineEntity/JPA.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/11-JPADefineEntity/JPA.pdf -------------------------------------------------------------------------------- /13-JPARelationship/blog/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/13-JPARelationship/blog/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /13-JPARelationship/blog/.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 | -------------------------------------------------------------------------------- /13-JPARelationship/blog/images/fontawesome.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/13-JPARelationship/blog/images/fontawesome.jpg -------------------------------------------------------------------------------- /13-JPARelationship/blog/images/generate_posts.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/13-JPARelationship/blog/images/generate_posts.jpg -------------------------------------------------------------------------------- /13-JPARelationship/blog/images/homepage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/13-JPARelationship/blog/images/homepage.jpg -------------------------------------------------------------------------------- /13-JPARelationship/blog/src/main/java/vn/techmaster/blog/DTO/UserInfo.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.blog.DTO; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | //UserInfo dùng để trả về dữ liệu phía client, nó không chứa những trường nhạy cảm như password ! 7 | public class UserInfo { 8 | private long id; 9 | private String fullname; 10 | private String email; 11 | } 12 | -------------------------------------------------------------------------------- /13-JPARelationship/blog/src/main/java/vn/techmaster/blog/controller/request/IdRequest.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.blog.controller.request; 2 | import lombok.AllArgsConstructor; 3 | import lombok.Data; 4 | import lombok.NoArgsConstructor; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | @NoArgsConstructor 9 | public class IdRequest { 10 | private Long id; 11 | } 12 | -------------------------------------------------------------------------------- /13-JPARelationship/blog/src/main/java/vn/techmaster/blog/controller/request/SearchRequest.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.blog.controller.request; 2 | import lombok.AllArgsConstructor; 3 | import lombok.Data; 4 | import lombok.NoArgsConstructor; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | @NoArgsConstructor 9 | public class SearchRequest { 10 | private String term; 11 | } -------------------------------------------------------------------------------- /13-JPARelationship/blog/src/main/java/vn/techmaster/blog/persistence.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /13-JPARelationship/blog/src/main/java/vn/techmaster/blog/service/AuthenException.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.blog.service; 2 | 3 | public class AuthenException extends Exception { 4 | private static final long serialVersionUID = -5456969534529937512L; 5 | 6 | public AuthenException(String message) { 7 | super(message); 8 | } 9 | 10 | } -------------------------------------------------------------------------------- /13-JPARelationship/blog/src/main/java/vn/techmaster/blog/service/PostException.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.blog.service; 2 | 3 | public class PostException extends Exception{ 4 | private static final long serialVersionUID = 2806285144114914760L; 5 | public PostException(String message) { 6 | super(message); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /13-JPARelationship/blog/src/test/java/vn/techmaster/blog/testbase/h2.properties: -------------------------------------------------------------------------------- 1 | spring.datasource.url=jdbc:h2:mem:test 2 | spring.datasource.driverClassName=org.h2.Driver 3 | spring.datasource.username=sa 4 | spring.datasource.password=123 5 | spring.jpa.database-platform=org.hibernate.dialect.H2Dialect 6 | spring.jpa.show-sql=true 7 | spring.jpa.properties.hibernate.format_sql=true -------------------------------------------------------------------------------- /13-JPARelationship/relation/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/13-JPARelationship/relation/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /13-JPARelationship/relation/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /13-JPARelationship/relation/JPA Relationship.mindnode/QuickLook/Preview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/13-JPARelationship/relation/JPA Relationship.mindnode/QuickLook/Preview.jpg -------------------------------------------------------------------------------- /13-JPARelationship/relation/JPA Relationship.mindnode/contents.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/13-JPARelationship/relation/JPA Relationship.mindnode/contents.xml -------------------------------------------------------------------------------- /13-JPARelationship/relation/JPA Relationship.mindnode/viewState.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/13-JPARelationship/relation/JPA Relationship.mindnode/viewState.plist -------------------------------------------------------------------------------- /13-JPARelationship/relation/JPA Relationship.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/13-JPARelationship/relation/JPA Relationship.pdf -------------------------------------------------------------------------------- /13-JPARelationship/relation/src/main/java/vn/techmaster/relation/model/inheritance/joinedtable/OnlineCourse.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.model.inheritance.joinedtable; 2 | 3 | import javax.persistence.Entity; 4 | 5 | @Entity(name = "onlinecourse") 6 | public class OnlineCourse extends Course { 7 | private int numberOfVideos; 8 | } 9 | -------------------------------------------------------------------------------- /13-JPARelationship/relation/src/main/java/vn/techmaster/relation/model/inheritance/mappedsuperclass/ClothesSize.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.model.inheritance.mappedsuperclass; 2 | 3 | public enum ClothesSize { 4 | S, //small 5 | M, //medium 6 | L, //large 7 | XL, //extra large 8 | XXL //very extra large 9 | } -------------------------------------------------------------------------------- /13-JPARelationship/relation/src/main/java/vn/techmaster/relation/model/inheritance/mappedsuperclass/Color.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.model.inheritance.mappedsuperclass; 2 | 3 | public enum Color { 4 | RED, 5 | GREEN, 6 | BLUE, 7 | YELLOW, 8 | WHITE, 9 | BLACK, 10 | GREY, 11 | BROWN, 12 | NAVY, 13 | PINK 14 | } 15 | -------------------------------------------------------------------------------- /13-JPARelationship/relation/src/main/java/vn/techmaster/relation/model/inheritance/mappedsuperclass/ShoeSize.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.model.inheritance.mappedsuperclass; 2 | 3 | public enum ShoeSize { 4 | EU40, 5 | EU41, 6 | EU42, 7 | EU43, 8 | EU44, 9 | EU45, 10 | EU46 11 | } 12 | -------------------------------------------------------------------------------- /13-JPARelationship/relation/src/main/java/vn/techmaster/relation/model/inheritance/singletable/CPUType.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.model.inheritance.singletable; 2 | 3 | public enum CPUType { 4 | INTEL_CORE_I3, 5 | INTEL_CORE_I5, 6 | INTEL_CORE_I7, 7 | INTEL_XEON, 8 | AMD_RYZEN, 9 | AMD_ATHLON 10 | } 11 | -------------------------------------------------------------------------------- /13-JPARelationship/relation/src/main/java/vn/techmaster/relation/model/inheritance/singletable/Voltage.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.model.inheritance.singletable; 2 | 3 | public enum Voltage { 4 | DC9, 5 | DC12, 6 | DC48, 7 | AC110, 8 | AC220, 9 | } 10 | -------------------------------------------------------------------------------- /13-JPARelationship/relation/src/main/java/vn/techmaster/relation/model/inheritance/tableperclass/EatType.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.model.inheritance.tableperclass; 2 | 3 | public enum EatType { 4 | HERBIVO, //ăn lá cây 5 | CARNIVO, //ăn thịt 6 | OMNIVO //ăn tạp 7 | } 8 | -------------------------------------------------------------------------------- /13-JPARelationship/relation/src/main/java/vn/techmaster/relation/model/inheritance/tableperclass/FishType.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.model.inheritance.tableperclass; 2 | 3 | public enum FishType { 4 | FRESH_WATER, 5 | SALT_WATER, 6 | BRACKISH_WATER 7 | } 8 | -------------------------------------------------------------------------------- /13-JPARelationship/relation/src/main/java/vn/techmaster/relation/model/inheritance/tableperclass/ReptileType.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.model.inheritance.tableperclass; 2 | 3 | public enum ReptileType { 4 | LIZARD, 5 | SNAKE, 6 | TURTLE, 7 | CROCODILE, 8 | GECKO 9 | } 10 | -------------------------------------------------------------------------------- /13-JPARelationship/relation/src/main/java/vn/techmaster/relation/repository/onemany/unidirection/ProductRepository.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.repository.onemany.unidirection; 2 | 3 | public interface ProductRepository { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /13-JPARelationship/relation/src/main/java/vn/techmaster/relation/repository/oneone/UserRepository.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.repository.oneone; 2 | 3 | import org.springframework.data.jpa.repository.JpaRepository; 4 | 5 | import vn.techmaster.relation.model.oneone.User; 6 | 7 | public interface UserRepository extends JpaRepository{ 8 | 9 | } 10 | -------------------------------------------------------------------------------- /14-JPA Query/demoquery/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/14-JPA Query/demoquery/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /14-JPA Query/demoquery/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /14-JPA Query/demoquery/src/main/java/vn/techmaster/demoquery/repository/MakerCount.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.demoquery.repository; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class MakerCount { 9 | private String maker; 10 | private long count; //Phải là kiểu long chứ không thể là int 11 | } -------------------------------------------------------------------------------- /14-JPA Query/exam/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/14-JPA Query/exam/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /14-JPA Query/exam/.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 | -------------------------------------------------------------------------------- /14-JPA Query/exam/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /14-JPA Query/exam/src/test/java/vn/techmaster/exam/ExamApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.exam; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class ExamApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /15-CustomRepository/connectdb/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/15-CustomRepository/connectdb/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /15-CustomRepository/connectdb/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /15-CustomRepository/connectdb/src/main/resources/application-dev.properties: -------------------------------------------------------------------------------- 1 | spring.datasource.url=jdbc:h2:mem:test 2 | spring.datasource.driverClassName=org.h2.Driver 3 | spring.datasource.username=sa 4 | spring.datasource.password=123 5 | spring.jpa.database-platform=org.hibernate.dialect.H2Dialect -------------------------------------------------------------------------------- /15-CustomRepository/connectdb/src/main/resources/application-mysql.properties: -------------------------------------------------------------------------------- 1 | spring.jpa.hibernate.ddl-auto=update 2 | spring.datasource.url=jdbc:mysql://localhost:3306/demo 3 | spring.datasource.username=demo 4 | spring.datasource.password=toiyeuhanoi123- 5 | spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver 6 | -------------------------------------------------------------------------------- /15-CustomRepository/connectdb/src/main/resources/application-post.properties: -------------------------------------------------------------------------------- 1 | ## default connection pool 2 | spring.datasource.hikari.connectionTimeout=20000 3 | spring.datasource.hikari.maximumPoolSize=5 4 | 5 | ## PostgreSQL 6 | spring.datasource.url=jdbc:postgresql://localhost:5432/demo 7 | spring.datasource.username=demo 8 | spring.datasource.password=toiyeuhanoi123- -------------------------------------------------------------------------------- /15-CustomRepository/connectdb/src/test/java/vn/techmaster/connectdb/ConnectdbApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.connectdb; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class ConnectdbApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /15-CustomRepository/custom_repository/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/15-CustomRepository/custom_repository/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /15-CustomRepository/custom_repository/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /15-CustomRepository/custom_repository/ReadMe.md: -------------------------------------------------------------------------------- 1 | Mã nguồn demo cho bài viết [Bổ xung phương thức vào JPA repository / tham chiếu đến EntityManager trong Repository](https://techmaster.vn/posts/preview/36447/truy-cap-vao-entitymanager-voi-spring-data-jpa) -------------------------------------------------------------------------------- /15-CustomRepository/custom_repository/src/main/java/vn/techmaster/custom_repository/repository/PersonRepositoryCustom.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.custom_repository.repository; 2 | 3 | import vn.techmaster.custom_repository.model.Person; 4 | 5 | public interface PersonRepositoryCustom{ 6 | public void refresh(Person person); 7 | } 8 | -------------------------------------------------------------------------------- /15-CustomRepository/custom_repository/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.datasource.url=jdbc:h2:mem:test 3 | spring.datasource.driverClassName=org.h2.Driver 4 | spring.datasource.username=sa 5 | spring.datasource.password=123 6 | spring.jpa.database-platform=org.hibernate.dialect.H2Dialect -------------------------------------------------------------------------------- /15-CustomRepository/custom_repository_generic/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/15-CustomRepository/custom_repository_generic/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /15-CustomRepository/custom_repository_generic/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /15-CustomRepository/custom_repository_generic/ReadMe.md: -------------------------------------------------------------------------------- 1 | Mã nguồn demo cho bài viết [Spring Boot JPA: làm sao để tạo ra một Custom Repository có kiểu tổng quát](https://techmaster.vn/posts/36454/spring-boot-jpa-lam-sao-de-tao-ra-mot-custom-repository-co-kieu-tong-quat-generic-type) 2 | 3 | 4 | -------------------------------------------------------------------------------- /15-CustomRepository/custom_repository_generic/src/main/java/vn/techmaster/custom_repository/repository/CustomRepo.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.custom_repository.repository; 2 | 3 | public interface CustomRepo{ 4 | void refresh(T entity); 5 | } -------------------------------------------------------------------------------- /15-CustomRepository/custom_repository_generic/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.datasource.url=jdbc:h2:mem:test 3 | spring.datasource.driverClassName=org.h2.Driver 4 | spring.datasource.username=sa 5 | spring.datasource.password=123 6 | spring.jpa.database-platform=org.hibernate.dialect.H2Dialect -------------------------------------------------------------------------------- /15-CustomRepository/relation/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/15-CustomRepository/relation/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /15-CustomRepository/relation/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /15-CustomRepository/relation/JPA Relationship.mindnode/QuickLook/Preview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/15-CustomRepository/relation/JPA Relationship.mindnode/QuickLook/Preview.jpg -------------------------------------------------------------------------------- /15-CustomRepository/relation/JPA Relationship.mindnode/contents.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/15-CustomRepository/relation/JPA Relationship.mindnode/contents.xml -------------------------------------------------------------------------------- /15-CustomRepository/relation/JPA Relationship.mindnode/viewState.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/15-CustomRepository/relation/JPA Relationship.mindnode/viewState.plist -------------------------------------------------------------------------------- /15-CustomRepository/relation/JPA Relationship.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/15-CustomRepository/relation/JPA Relationship.pdf -------------------------------------------------------------------------------- /15-CustomRepository/relation/src/main/java/vn/techmaster/relation/model/inheritance/joinedtable/OnlineCourse.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.model.inheritance.joinedtable; 2 | 3 | import javax.persistence.Entity; 4 | 5 | import lombok.Data; 6 | 7 | @Entity(name = "onlinecourse") 8 | @Data 9 | public class OnlineCourse extends Course { 10 | private int numberOfVideos; 11 | } 12 | -------------------------------------------------------------------------------- /15-CustomRepository/relation/src/main/java/vn/techmaster/relation/model/inheritance/mappedsuperclass/ClothesSize.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.model.inheritance.mappedsuperclass; 2 | 3 | public enum ClothesSize { 4 | S, //small 5 | M, //medium 6 | L, //large 7 | XL, //extra large 8 | XXL //very extra large 9 | } -------------------------------------------------------------------------------- /15-CustomRepository/relation/src/main/java/vn/techmaster/relation/model/inheritance/mappedsuperclass/Color.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.model.inheritance.mappedsuperclass; 2 | 3 | public enum Color { 4 | RED, 5 | GREEN, 6 | BLUE, 7 | YELLOW, 8 | WHITE, 9 | BLACK, 10 | GREY, 11 | BROWN, 12 | NAVY, 13 | PINK 14 | } 15 | -------------------------------------------------------------------------------- /15-CustomRepository/relation/src/main/java/vn/techmaster/relation/model/inheritance/mappedsuperclass/ShoeSize.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.model.inheritance.mappedsuperclass; 2 | 3 | public enum ShoeSize { 4 | EU40, 5 | EU41, 6 | EU42, 7 | EU43, 8 | EU44, 9 | EU45, 10 | EU46 11 | } 12 | -------------------------------------------------------------------------------- /15-CustomRepository/relation/src/main/java/vn/techmaster/relation/model/inheritance/singletable/CPUType.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.model.inheritance.singletable; 2 | 3 | public enum CPUType { 4 | INTEL_CORE_I3, 5 | INTEL_CORE_I5, 6 | INTEL_CORE_I7, 7 | INTEL_XEON, 8 | AMD_RYZEN, 9 | AMD_ATHLON 10 | } 11 | -------------------------------------------------------------------------------- /15-CustomRepository/relation/src/main/java/vn/techmaster/relation/model/inheritance/singletable/Voltage.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.model.inheritance.singletable; 2 | 3 | public enum Voltage { 4 | DC9, 5 | DC12, 6 | DC48, 7 | AC110, 8 | AC220, 9 | } 10 | -------------------------------------------------------------------------------- /15-CustomRepository/relation/src/main/java/vn/techmaster/relation/model/inheritance/tableperclass/EatType.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.model.inheritance.tableperclass; 2 | 3 | public enum EatType { 4 | HERBIVO, //ăn lá cây 5 | CARNIVO, //ăn thịt 6 | OMNIVO //ăn tạp 7 | } 8 | -------------------------------------------------------------------------------- /15-CustomRepository/relation/src/main/java/vn/techmaster/relation/model/inheritance/tableperclass/FishType.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.model.inheritance.tableperclass; 2 | 3 | public enum FishType { 4 | FRESH_WATER, 5 | SALT_WATER, 6 | BRACKISH_WATER 7 | } 8 | -------------------------------------------------------------------------------- /15-CustomRepository/relation/src/main/java/vn/techmaster/relation/model/inheritance/tableperclass/ReptileType.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.model.inheritance.tableperclass; 2 | 3 | public enum ReptileType { 4 | LIZARD, 5 | SNAKE, 6 | TURTLE, 7 | CROCODILE, 8 | GECKO 9 | } 10 | -------------------------------------------------------------------------------- /15-CustomRepository/relation/src/main/java/vn/techmaster/relation/repository/onemany/unidirection/ProductRepository.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.repository.onemany.unidirection; 2 | 3 | public interface ProductRepository { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /15-CustomRepository/relation/src/main/java/vn/techmaster/relation/repository/oneone/UserRepository.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.repository.oneone; 2 | 3 | import org.springframework.data.jpa.repository.JpaRepository; 4 | 5 | import vn.techmaster.relation.model.oneone.Users; 6 | 7 | public interface UserRepository extends JpaRepository{ 8 | 9 | } 10 | -------------------------------------------------------------------------------- /15-CustomRepository/relation/src/main/java/vn/techmaster/relation/repository/sample/JobCount.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.relation.repository.sample; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class JobCount { 9 | private String job; 10 | private long count; //Phải là kiểu long chứ không thể là int 11 | } -------------------------------------------------------------------------------- /15-CustomRepository/relation/src/main/resources/application-dev.properties: -------------------------------------------------------------------------------- 1 | spring.datasource.url=jdbc:h2:mem:test 2 | spring.datasource.driverClassName=org.h2.Driver 3 | spring.datasource.username=sa 4 | spring.datasource.password=123 5 | spring.jpa.database-platform=org.hibernate.dialect.H2Dialect 6 | spring.h2.console.enabled=true -------------------------------------------------------------------------------- /15-CustomRepository/relation/src/main/resources/application-mysql.properties: -------------------------------------------------------------------------------- 1 | spring.datasource.url=jdbc:mysql://localhost:3306/demo 2 | spring.datasource.username=demo 3 | spring.datasource.password=toiyeuhanoi123- 4 | spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver 5 | -------------------------------------------------------------------------------- /15-CustomRepository/relation/src/main/resources/application-post.properties: -------------------------------------------------------------------------------- 1 | ## default connection pool 2 | spring.datasource.hikari.connectionTimeout=20000 3 | spring.datasource.hikari.maximumPoolSize=5 4 | 5 | ## PostgreSQL 6 | spring.datasource.url=jdbc:postgresql://localhost:5432/demo 7 | spring.datasource.username=demo 8 | spring.datasource.password=toiyeuhanoi123- -------------------------------------------------------------------------------- /16-SpringCloudGateway/01-SpringCloudBasic/booklisting/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/16-SpringCloudGateway/01-SpringCloudBasic/booklisting/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /16-SpringCloudGateway/01-SpringCloudBasic/booklisting/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /16-SpringCloudGateway/01-SpringCloudBasic/booklisting/src/main/java/vn/techmaster/booklisting/model/Book.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.booklisting.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class Book { 9 | private String title; 10 | private String author; 11 | } 12 | -------------------------------------------------------------------------------- /16-SpringCloudGateway/01-SpringCloudBasic/booklisting/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | server.port=8081 -------------------------------------------------------------------------------- /16-SpringCloudGateway/01-SpringCloudBasic/filmlisting/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/16-SpringCloudGateway/01-SpringCloudBasic/filmlisting/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /16-SpringCloudGateway/01-SpringCloudBasic/filmlisting/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /16-SpringCloudGateway/01-SpringCloudBasic/filmlisting/src/main/java/vn/techmaster/filmlisting/model/Film.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.filmlisting.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class Film { 9 | String title; 10 | String actors; 11 | } 12 | -------------------------------------------------------------------------------- /16-SpringCloudGateway/01-SpringCloudBasic/filmlisting/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | server.port=8082 -------------------------------------------------------------------------------- /16-SpringCloudGateway/01-SpringCloudBasic/gateway/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/16-SpringCloudGateway/01-SpringCloudBasic/gateway/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /16-SpringCloudGateway/01-SpringCloudBasic/gateway/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /16-SpringCloudGateway/01-SpringCloudBasic/gateway/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /16-SpringCloudGateway/01-SpringCloudBasic/gateway/src/test/java/vn/techmaster/gateway/GatewayApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.gateway; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class GatewayApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /16-SpringCloudGateway/01-SpringCloudBasic/gwcode/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/16-SpringCloudGateway/01-SpringCloudBasic/gwcode/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /16-SpringCloudGateway/01-SpringCloudBasic/gwcode/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /16-SpringCloudGateway/01-SpringCloudBasic/gwcode/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 9999 -------------------------------------------------------------------------------- /16-SpringCloudGateway/01-SpringCloudBasic/gwcode/src/test/java/vn/techmaster/gwcode/GwcodeApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.gwcode; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class GwcodeApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /18-Scheduling/schedule/01Basic/demoschedule/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/18-Scheduling/schedule/01Basic/demoschedule/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /18-Scheduling/schedule/01Basic/demoschedule/.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 | -------------------------------------------------------------------------------- /18-Scheduling/schedule/01Basic/demoschedule/images/asyn_task.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/18-Scheduling/schedule/01Basic/demoschedule/images/asyn_task.jpg -------------------------------------------------------------------------------- /18-Scheduling/schedule/01Basic/demoschedule/images/fixdelay.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/18-Scheduling/schedule/01Basic/demoschedule/images/fixdelay.jpg -------------------------------------------------------------------------------- /18-Scheduling/schedule/01Basic/demoschedule/images/fixed_rate_vs_fixed_delay.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/18-Scheduling/schedule/01Basic/demoschedule/images/fixed_rate_vs_fixed_delay.jpg -------------------------------------------------------------------------------- /18-Scheduling/schedule/01Basic/demoschedule/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /18-Scheduling/schedule/01Basic/demoschedule/src/test/java/vn/techmaster/demoschedule/DemoscheduleApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.demoschedule; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class DemoscheduleApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /18-Scheduling/schedule/02WebClientIOT/iot/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/18-Scheduling/schedule/02WebClientIOT/iot/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /18-Scheduling/schedule/02WebClientIOT/iot/.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 | -------------------------------------------------------------------------------- /18-Scheduling/schedule/02WebClientIOT/iot/images/iot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/18-Scheduling/schedule/02WebClientIOT/iot/images/iot.jpg -------------------------------------------------------------------------------- /18-Scheduling/schedule/02WebClientIOT/iot/images/linechart.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/18-Scheduling/schedule/02WebClientIOT/iot/images/linechart.jpg -------------------------------------------------------------------------------- /18-Scheduling/schedule/02WebClientIOT/iot/images/localhost_8080_mono.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/18-Scheduling/schedule/02WebClientIOT/iot/images/localhost_8080_mono.jpg -------------------------------------------------------------------------------- /18-Scheduling/schedule/02WebClientIOT/iot/src/main/java/vn/techmaster/iot/controller/reponse/IOTMeasure.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.iot.controller.reponse; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class IOTMeasure { 9 | private float temperature; 10 | private float moisture; 11 | } -------------------------------------------------------------------------------- /18-Scheduling/schedule/02WebClientIOT/iot/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /18-Scheduling/schedule/02WebClientIOT/iot/src/test/java/vn/techmaster/iot/IotApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.iot; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class IotApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /19-OpenAPI/02OpenAPI/bookstore/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/19-OpenAPI/02OpenAPI/bookstore/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /19-OpenAPI/02OpenAPI/bookstore/.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 | -------------------------------------------------------------------------------- /19-OpenAPI/02OpenAPI/bookstore/images/FieldCondition.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/19-OpenAPI/02OpenAPI/bookstore/images/FieldCondition.jpg -------------------------------------------------------------------------------- /19-OpenAPI/02OpenAPI/bookstore/images/GET_by_id_Example.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/19-OpenAPI/02OpenAPI/bookstore/images/GET_by_id_Example.jpg -------------------------------------------------------------------------------- /19-OpenAPI/02OpenAPI/bookstore/images/HAL_Explorer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/19-OpenAPI/02OpenAPI/bookstore/images/HAL_Explorer.jpg -------------------------------------------------------------------------------- /19-OpenAPI/02OpenAPI/bookstore/images/HAL_Explorer_3Column.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/19-OpenAPI/02OpenAPI/bookstore/images/HAL_Explorer_3Column.jpg -------------------------------------------------------------------------------- /19-OpenAPI/02OpenAPI/bookstore/images/HAL_Explorer_CreateNewBook.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/19-OpenAPI/02OpenAPI/bookstore/images/HAL_Explorer_CreateNewBook.jpg -------------------------------------------------------------------------------- /19-OpenAPI/02OpenAPI/bookstore/images/HAL_Explorer_GetBook.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/19-OpenAPI/02OpenAPI/bookstore/images/HAL_Explorer_GetBook.jpg -------------------------------------------------------------------------------- /19-OpenAPI/02OpenAPI/bookstore/images/SampleData.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/19-OpenAPI/02OpenAPI/bookstore/images/SampleData.jpg -------------------------------------------------------------------------------- /19-OpenAPI/02OpenAPI/bookstore/images/Swagger_UI.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/19-OpenAPI/02OpenAPI/bookstore/images/Swagger_UI.jpg -------------------------------------------------------------------------------- /19-OpenAPI/02OpenAPI/bookstore/images/api_gateway.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/19-OpenAPI/02OpenAPI/bookstore/images/api_gateway.jpg -------------------------------------------------------------------------------- /19-OpenAPI/02OpenAPI/bookstore/images/document_header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/19-OpenAPI/02OpenAPI/bookstore/images/document_header.jpg -------------------------------------------------------------------------------- /19-OpenAPI/02OpenAPI/bookstore/images/get_all_books.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/19-OpenAPI/02OpenAPI/bookstore/images/get_all_books.jpg -------------------------------------------------------------------------------- /19-OpenAPI/02OpenAPI/bookstore/images/post_new_book.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/19-OpenAPI/02OpenAPI/bookstore/images/post_new_book.jpg -------------------------------------------------------------------------------- /19-OpenAPI/02OpenAPI/bookstore/images/select_api_group.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/19-OpenAPI/02OpenAPI/bookstore/images/select_api_group.jpg -------------------------------------------------------------------------------- /19-OpenAPI/02OpenAPI/bookstore/src/main/java/vn/techmaster/bookstore/repository/BookRespository.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bookstore.repository; 2 | 3 | import org.springframework.data.jpa.repository.JpaRepository; 4 | 5 | import vn.techmaster.bookstore.model.Book; 6 | 7 | public interface BookRespository extends JpaRepository { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /19-OpenAPI/02OpenAPI/bookstore/src/main/java/vn/techmaster/bookstore/repository/ContactRepository.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bookstore.repository; 2 | import org.springframework.data.jpa.repository.JpaRepository; 3 | 4 | import vn.techmaster.bookstore.model.Contact; 5 | public interface ContactRepository extends JpaRepository{ 6 | 7 | } 8 | -------------------------------------------------------------------------------- /19-OpenAPI/02OpenAPI/bookstore/src/test/java/vn/techmaster/bookstore/BookstoreApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bookstore; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class BookstoreApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /20-Vincinema/01Entity/vincinema/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/20-Vincinema/01Entity/vincinema/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /20-Vincinema/01Entity/vincinema/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /20-Vincinema/01Entity/vincinema/src/main/java/vn/techmaster/vincinema/controller/TicketController.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.controller; 2 | 3 | import org.springframework.web.bind.annotation.RestController; 4 | 5 | @RestController 6 | public class TicketController { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /20-Vincinema/01Entity/vincinema/src/main/java/vn/techmaster/vincinema/model/Rating.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.model; 2 | 3 | public enum Rating { 4 | P("Mọi lứa tuổi"), 5 | C13("13 tuổi trở lên"), 6 | C16("16 tuổi trở lên"), 7 | C18("18 tuổi trở lên"); 8 | 9 | public final String label; 10 | private Rating(String label) { 11 | this.label = label; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /20-Vincinema/01Entity/vincinema/src/main/java/vn/techmaster/vincinema/model/SeatType.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.model; 2 | 3 | public enum SeatType { 4 | NORMAL, 5 | VIP, 6 | KING; 7 | } -------------------------------------------------------------------------------- /20-Vincinema/01Entity/vincinema/src/main/java/vn/techmaster/vincinema/model/Ticket.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.model; 2 | 3 | public class Ticket { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /20-Vincinema/01Entity/vincinema/src/main/java/vn/techmaster/vincinema/pojo/CinemaPOJO.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.pojo; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class CinemaPOJO { 7 | private Long id; 8 | private String name; 9 | public CinemaPOJO(Long id, String name) { 10 | this.id = id; 11 | this.name = name; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /20-Vincinema/01Entity/vincinema/src/main/java/vn/techmaster/vincinema/repository/CityRepository.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.repository; 2 | 3 | import org.springframework.data.jpa.repository.JpaRepository; 4 | 5 | import vn.techmaster.vincinema.model.City; 6 | 7 | public interface CityRepository extends JpaRepository { 8 | public City findByName(String name); 9 | } 10 | -------------------------------------------------------------------------------- /20-Vincinema/01Entity/vincinema/src/main/java/vn/techmaster/vincinema/repository/FilmRepository.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.repository; 2 | 3 | import org.springframework.data.jpa.repository.JpaRepository; 4 | 5 | import vn.techmaster.vincinema.model.Film; 6 | 7 | public interface FilmRepository extends JpaRepository { 8 | Film findByTitle(String title); 9 | } 10 | -------------------------------------------------------------------------------- /20-Vincinema/01Entity/vincinema/src/main/java/vn/techmaster/vincinema/service/PricePromotionService.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.service; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | @Service 6 | public class PricePromotionService { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /20-Vincinema/01Entity/vincinema/src/main/resources/application-dev.properties: -------------------------------------------------------------------------------- 1 | spring.datasource.url=jdbc:h2:mem:test 2 | spring.datasource.driverClassName=org.h2.Driver 3 | spring.datasource.username=sa 4 | spring.datasource.password=123 5 | spring.jpa.database-platform=org.hibernate.dialect.H2Dialect 6 | spring.h2.console.enabled=true -------------------------------------------------------------------------------- /20-Vincinema/01Entity/vincinema/src/main/resources/application-post.properties: -------------------------------------------------------------------------------- 1 | ## default connection pool 2 | spring.datasource.hikari.connectionTimeout=20000 3 | spring.datasource.hikari.maximumPoolSize=5 4 | 5 | ## PostgreSQL 6 | spring.datasource.url=jdbc:postgresql://localhost:5432/demo 7 | spring.datasource.username=demo 8 | spring.datasource.password=toiyeuhanoi123- -------------------------------------------------------------------------------- /20-Vincinema/01Entity/vincinema/src/test/java/vn/techmaster/vincinema/VincinemaApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class VincinemaApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /21-SpringSecurity/01Basic/simpleauthen/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/21-SpringSecurity/01Basic/simpleauthen/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /21-SpringSecurity/01Basic/simpleauthen/.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 | -------------------------------------------------------------------------------- /21-SpringSecurity/01Basic/simpleauthen/images/Please_sign_in.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/21-SpringSecurity/01Basic/simpleauthen/images/Please_sign_in.jpg -------------------------------------------------------------------------------- /21-SpringSecurity/01Basic/simpleauthen/images/generated_pass.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/21-SpringSecurity/01Basic/simpleauthen/images/generated_pass.jpg -------------------------------------------------------------------------------- /21-SpringSecurity/01Basic/simpleauthen/images/localhost_8080_api_products.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/21-SpringSecurity/01Basic/simpleauthen/images/localhost_8080_api_products.jpg -------------------------------------------------------------------------------- /21-SpringSecurity/01Basic/simpleauthen/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /21-SpringSecurity/01Basic/simpleauthen/src/test/java/vn/techmaster/simpleauthen/SimpleauthenApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.simpleauthen; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class SimpleauthenApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /21-SpringSecurity/02WebSecurityConfigurerAdapter/simpleauthen/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/21-SpringSecurity/02WebSecurityConfigurerAdapter/simpleauthen/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /21-SpringSecurity/02WebSecurityConfigurerAdapter/simpleauthen/.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 | -------------------------------------------------------------------------------- /21-SpringSecurity/02WebSecurityConfigurerAdapter/simpleauthen/images/Please_sign_in.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/21-SpringSecurity/02WebSecurityConfigurerAdapter/simpleauthen/images/Please_sign_in.jpg -------------------------------------------------------------------------------- /21-SpringSecurity/02WebSecurityConfigurerAdapter/simpleauthen/images/decode_base64.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/21-SpringSecurity/02WebSecurityConfigurerAdapter/simpleauthen/images/decode_base64.jpg -------------------------------------------------------------------------------- /21-SpringSecurity/02WebSecurityConfigurerAdapter/simpleauthen/images/localhost_8080_api_products.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/21-SpringSecurity/02WebSecurityConfigurerAdapter/simpleauthen/images/localhost_8080_api_products.jpg -------------------------------------------------------------------------------- /21-SpringSecurity/02WebSecurityConfigurerAdapter/simpleauthen/images/login.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/21-SpringSecurity/02WebSecurityConfigurerAdapter/simpleauthen/images/login.jpg -------------------------------------------------------------------------------- /21-SpringSecurity/02WebSecurityConfigurerAdapter/simpleauthen/images/session_cookie.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/21-SpringSecurity/02WebSecurityConfigurerAdapter/simpleauthen/images/session_cookie.jpg -------------------------------------------------------------------------------- /21-SpringSecurity/02WebSecurityConfigurerAdapter/simpleauthen/images/session_cookie2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/21-SpringSecurity/02WebSecurityConfigurerAdapter/simpleauthen/images/session_cookie2.jpg -------------------------------------------------------------------------------- /21-SpringSecurity/02WebSecurityConfigurerAdapter/simpleauthen/src/main/java/vn/techmaster/simpleauthen/security/Role.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.simpleauthen.security; 2 | 3 | public class Role { 4 | public static final String ADMIN = "ADMIN"; 5 | public static final String USER = "USER"; 6 | public static final String OPERATOR = "OPERATOR"; 7 | 8 | private Role() {} 9 | } 10 | -------------------------------------------------------------------------------- /21-SpringSecurity/02WebSecurityConfigurerAdapter/simpleauthen/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | server.error.whitelabel.enabled=false -------------------------------------------------------------------------------- /21-SpringSecurity/03AuthenticationProvider/simpleauthen/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/21-SpringSecurity/03AuthenticationProvider/simpleauthen/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /21-SpringSecurity/03AuthenticationProvider/simpleauthen/.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 | -------------------------------------------------------------------------------- /21-SpringSecurity/03AuthenticationProvider/simpleauthen/images/Spring_Security_in_Action.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/21-SpringSecurity/03AuthenticationProvider/simpleauthen/images/Spring_Security_in_Action.jpg -------------------------------------------------------------------------------- /21-SpringSecurity/03AuthenticationProvider/simpleauthen/src/main/java/vn/techmaster/simpleauthen/security/Role.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.simpleauthen.security; 2 | 3 | public class Role { 4 | public static final String ADMIN = "ADMIN"; 5 | public static final String USER = "USER"; 6 | public static final String OPERATOR = "OPERATOR"; 7 | 8 | private Role() {} 9 | } 10 | -------------------------------------------------------------------------------- /21-SpringSecurity/03AuthenticationProvider/simpleauthen/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | server.error.whitelabel.enabled=false -------------------------------------------------------------------------------- /21-SpringSecurity/04UserDetailService/simpleauthen/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/21-SpringSecurity/04UserDetailService/simpleauthen/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /21-SpringSecurity/04UserDetailService/simpleauthen/.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 | -------------------------------------------------------------------------------- /21-SpringSecurity/04UserDetailService/simpleauthen/images/Book_Store.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/21-SpringSecurity/04UserDetailService/simpleauthen/images/Book_Store.jpg -------------------------------------------------------------------------------- /21-SpringSecurity/04UserDetailService/simpleauthen/images/RoleAnonymous.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/21-SpringSecurity/04UserDetailService/simpleauthen/images/RoleAnonymous.jpg -------------------------------------------------------------------------------- /21-SpringSecurity/04UserDetailService/simpleauthen/images/anonymous.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/21-SpringSecurity/04UserDetailService/simpleauthen/images/anonymous.jpg -------------------------------------------------------------------------------- /21-SpringSecurity/04UserDetailService/simpleauthen/images/error403.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/21-SpringSecurity/04UserDetailService/simpleauthen/images/error403.jpg -------------------------------------------------------------------------------- /21-SpringSecurity/04UserDetailService/simpleauthen/images/home_authority.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/21-SpringSecurity/04UserDetailService/simpleauthen/images/home_authority.jpg -------------------------------------------------------------------------------- /21-SpringSecurity/04UserDetailService/simpleauthen/images/login.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/21-SpringSecurity/04UserDetailService/simpleauthen/images/login.jpg -------------------------------------------------------------------------------- /21-SpringSecurity/04UserDetailService/simpleauthen/images/user_detail_diagram.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/21-SpringSecurity/04UserDetailService/simpleauthen/images/user_detail_diagram.jpg -------------------------------------------------------------------------------- /21-SpringSecurity/04UserDetailService/simpleauthen/src/main/java/vn/techmaster/simpleauthen/security/Role.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.simpleauthen.security; 2 | 3 | public class Role { 4 | public static final String ADMIN = "ADMIN"; 5 | public static final String USER = "USER"; 6 | public static final String OPERATOR = "OPERATOR"; 7 | 8 | private Role() {} 9 | } 10 | -------------------------------------------------------------------------------- /21-SpringSecurity/04UserDetailService/simpleauthen/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | server.error.whitelabel.enabled=false -------------------------------------------------------------------------------- /21-SpringSecurity/04UserDetailService/simpleauthen/src/main/resources/static/book.csv: -------------------------------------------------------------------------------- 1 | title|description 2 | Không Gia Đình|Chú bé Remy lang thang cùng gánh xiếc của cụ Vitali 3 | Dế mèn phiêu lưu ký|Một chuyến phiêu lưu của chú dế mèn dũng cảm 4 | Mắt Biếc|Cuộc tình ngang trái oái oăm của đôi bạn trẻ. Đọc xong không hiểu gì. 5 | Hổ Trắng|Đời đau khổ một người đàn ông Ấn Độ -------------------------------------------------------------------------------- /22-SeatBooking/seatbooking/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/22-SeatBooking/seatbooking/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /22-SeatBooking/seatbooking/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /22-SeatBooking/seatbooking/src/main/java/vn/techmaster/seatbooking/exception/BookingException.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.seatbooking.exception; 2 | 3 | public class BookingException extends RuntimeException{ 4 | 5 | public BookingException(String message) { 6 | super(message); 7 | } 8 | 9 | } 10 | -------------------------------------------------------------------------------- /22-SeatBooking/seatbooking/src/main/java/vn/techmaster/seatbooking/model/Customer.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.seatbooking.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class Customer { 9 | String mobile; 10 | } 11 | -------------------------------------------------------------------------------- /22-SeatBooking/seatbooking/src/main/java/vn/techmaster/seatbooking/model/PaidSeat.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.seatbooking.model; 2 | 3 | import java.time.LocalDateTime; 4 | 5 | public class PaidSeat { 6 | String seatNo; 7 | Customer customer; 8 | LocalDateTime paidTime; 9 | } 10 | -------------------------------------------------------------------------------- /22-SeatBooking/seatbooking/src/main/java/vn/techmaster/seatbooking/request/BookingRequest.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.seatbooking.request; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class BookingRequest { 9 | private String mobile; 10 | private String seats; //Số ghế cách nhau bằng dấu phẩy 11 | } 12 | -------------------------------------------------------------------------------- /22-SeatBooking/seatbooking/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /22-SeatBooking/seatbooking/src/test/java/vn/techmaster/seatbooking/SeatbookingApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.seatbooking; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class SeatbookingApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /23-STOMP/basicsocket/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/23-STOMP/basicsocket/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /23-STOMP/basicsocket/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /23-STOMP/basicsocket/ReadMe.md: -------------------------------------------------------------------------------- 1 | https://spring.io/guides/gs/messaging-stomp-websocket/ -------------------------------------------------------------------------------- /23-STOMP/basicsocket/src/main/java/vn/techmaster/basicsocket/model/Greeting.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.basicsocket.model; 2 | import lombok.AllArgsConstructor; 3 | import lombok.Data; 4 | import lombok.NoArgsConstructor; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | @NoArgsConstructor 9 | public class Greeting { 10 | private String content; 11 | } 12 | -------------------------------------------------------------------------------- /23-STOMP/basicsocket/src/main/java/vn/techmaster/basicsocket/model/HelloMessage.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.basicsocket.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @AllArgsConstructor 9 | @NoArgsConstructor 10 | public class HelloMessage { 11 | private String name; 12 | } 13 | -------------------------------------------------------------------------------- /23-STOMP/basicsocket/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /23-STOMP/basicsocket/src/test/java/vn/techmaster/basicsocket/BasicsocketApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.basicsocket; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class BasicsocketApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /23-STOMP/spring-websockets/src/main/java/com/baeldung/websockets/Message.java: -------------------------------------------------------------------------------- 1 | package com.baeldung.websockets; 2 | 3 | public class Message { 4 | 5 | private String from; 6 | private String text; 7 | 8 | public String getText() { 9 | return text; 10 | } 11 | 12 | public String getFrom() { 13 | return from; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /24-VincinemaUI/01-jQueryUI/vincinema/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/24-VincinemaUI/01-jQueryUI/vincinema/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /24-VincinemaUI/01-jQueryUI/vincinema/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /24-VincinemaUI/01-jQueryUI/vincinema/src/main/java/vn/techmaster/vincinema/controller/TicketController.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.controller; 2 | 3 | import org.springframework.web.bind.annotation.RestController; 4 | 5 | @RestController 6 | public class TicketController { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /24-VincinemaUI/01-jQueryUI/vincinema/src/main/java/vn/techmaster/vincinema/model/SeatType.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.model; 2 | 3 | public enum SeatType { 4 | NORMAL, 5 | VIP, 6 | KING; 7 | } -------------------------------------------------------------------------------- /24-VincinemaUI/01-jQueryUI/vincinema/src/main/java/vn/techmaster/vincinema/model/Ticket.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.model; 2 | 3 | public class Ticket { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /24-VincinemaUI/01-jQueryUI/vincinema/src/main/java/vn/techmaster/vincinema/pojo/CinemaPOJO.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.pojo; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class CinemaPOJO { 7 | private Long id; 8 | private String name; 9 | public CinemaPOJO(Long id, String name) { 10 | this.id = id; 11 | this.name = name; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /24-VincinemaUI/01-jQueryUI/vincinema/src/main/java/vn/techmaster/vincinema/repository/FilmRepository.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.repository; 2 | 3 | import org.springframework.data.jpa.repository.JpaRepository; 4 | 5 | import vn.techmaster.vincinema.model.Film; 6 | 7 | public interface FilmRepository extends JpaRepository { 8 | Film findByTitle(String title); 9 | } 10 | -------------------------------------------------------------------------------- /24-VincinemaUI/01-jQueryUI/vincinema/src/main/java/vn/techmaster/vincinema/request/FindEventRequest.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.request; 2 | 3 | import lombok.Data; 4 | import lombok.NoArgsConstructor; 5 | 6 | @Data 7 | @NoArgsConstructor 8 | public class FindEventRequest { 9 | private String filmTitle; 10 | private Long cinemaID; 11 | private String showDate; 12 | } 13 | -------------------------------------------------------------------------------- /24-VincinemaUI/01-jQueryUI/vincinema/src/main/java/vn/techmaster/vincinema/service/PricePromotionService.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.service; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | @Service 6 | public class PricePromotionService { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /24-VincinemaUI/01-jQueryUI/vincinema/src/main/resources/application-dev.properties: -------------------------------------------------------------------------------- 1 | spring.datasource.url=jdbc:h2:mem:test 2 | spring.datasource.driverClassName=org.h2.Driver 3 | spring.datasource.username=sa 4 | spring.datasource.password=123 5 | spring.jpa.database-platform=org.hibernate.dialect.H2Dialect 6 | spring.h2.console.enabled=true -------------------------------------------------------------------------------- /24-VincinemaUI/01-jQueryUI/vincinema/src/main/resources/application-post.properties: -------------------------------------------------------------------------------- 1 | ## default connection pool 2 | spring.datasource.hikari.connectionTimeout=20000 3 | spring.datasource.hikari.maximumPoolSize=5 4 | 5 | ## PostgreSQL 6 | spring.datasource.url=jdbc:postgresql://localhost:5432/demo 7 | spring.datasource.username=demo 8 | spring.datasource.password=toiyeuhanoi123- -------------------------------------------------------------------------------- /24-VincinemaUI/01-jQueryUI/vincinema/src/main/resources/static/css/main.css: -------------------------------------------------------------------------------- 1 | table { 2 | border-collapse: collapse; 3 | } 4 | 5 | table, th, td { 6 | border: 1px solid black; 7 | padding: 4px; 8 | } 9 | 10 | .booked { 11 | background-Color: #eebcbc; 12 | } 13 | 14 | td .available { 15 | background-Color: #FFFF; 16 | } -------------------------------------------------------------------------------- /24-VincinemaUI/01-jQueryUI/vincinema/src/test/java/vn/techmaster/vincinema/VincinemaApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class VincinemaApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /24-VincinemaUI/vuecine/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | dist 4 | dist-ssr 5 | *.local -------------------------------------------------------------------------------- /24-VincinemaUI/vuecine/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.0.0", 3 | "scripts": { 4 | "dev": "vite", 5 | "build": "vite build", 6 | "serve": "vite preview" 7 | }, 8 | "dependencies": { 9 | "vue": "^3.0.5" 10 | }, 11 | "devDependencies": { 12 | "@vitejs/plugin-vue": "^1.2.3", 13 | "@vue/compiler-sfc": "^3.0.5", 14 | "vite": "^2.3.5" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /24-VincinemaUI/vuecine/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/24-VincinemaUI/vuecine/public/favicon.ico -------------------------------------------------------------------------------- /24-VincinemaUI/vuecine/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/24-VincinemaUI/vuecine/src/assets/logo.png -------------------------------------------------------------------------------- /24-VincinemaUI/vuecine/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from './App.vue' 3 | 4 | createApp(App).mount('#app') 5 | -------------------------------------------------------------------------------- /24-VincinemaUI/vuecine/vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import vue from '@vitejs/plugin-vue' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [vue()] 7 | }) 8 | -------------------------------------------------------------------------------- /25-SpringSecurityAuthorization/authorization/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityAuthorization/authorization/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /25-SpringSecurityAuthorization/authorization/.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 | -------------------------------------------------------------------------------- /25-SpringSecurityAuthorization/authorization/images/Home_page.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityAuthorization/authorization/images/Home_page.jpg -------------------------------------------------------------------------------- /25-SpringSecurityAuthorization/authorization/images/user_role_diagram.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityAuthorization/authorization/images/user_role_diagram.jpg -------------------------------------------------------------------------------- /25-SpringSecurityAuthorization/authorization/src/main/java/vn/techmaster/authorization/service/ISecurityService.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.authorization.service; 2 | 3 | public interface ISecurityService { 4 | public void generateUsersRoles(); 5 | } 6 | -------------------------------------------------------------------------------- /25-SpringSecurityAuthorization/authorization/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.datasource.url=jdbc:h2:mem:test 2 | spring.datasource.driverClassName=org.h2.Driver 3 | spring.datasource.username=sa 4 | spring.datasource.password=123 5 | spring.jpa.database-platform=org.hibernate.dialect.H2Dialect 6 | spring.h2.console.enabled=true 7 | 8 | server.error.whitelabel.enabled=false -------------------------------------------------------------------------------- /25-SpringSecurityJWT/05SecurityJPA/securityjpa/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/05SecurityJPA/securityjpa/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /25-SpringSecurityJWT/05SecurityJPA/securityjpa/.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 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/05SecurityJPA/securityjpa/images/Home_page.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/05SecurityJPA/securityjpa/images/Home_page.jpg -------------------------------------------------------------------------------- /25-SpringSecurityJWT/05SecurityJPA/securityjpa/images/user_role_diagram.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/05SecurityJPA/securityjpa/images/user_role_diagram.jpg -------------------------------------------------------------------------------- /25-SpringSecurityJWT/05SecurityJPA/securityjpa/src/main/java/vn/techmaster/securityjpa/service/ISecurityService.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.securityjpa.service; 2 | 3 | public interface ISecurityService { 4 | public void generateUsersRoles(); 5 | } 6 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/05SecurityJPA/securityjpa/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.datasource.url=jdbc:h2:mem:test 2 | spring.datasource.driverClassName=org.h2.Driver 3 | spring.datasource.username=sa 4 | spring.datasource.password=123 5 | spring.jpa.database-platform=org.hibernate.dialect.H2Dialect 6 | spring.h2.console.enabled=true 7 | 8 | server.error.whitelabel.enabled=false -------------------------------------------------------------------------------- /25-SpringSecurityJWT/05SecurityJPA/securityjpa/src/test/java/vn/techmaster/securityjpa/SecurityjpaApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.securityjpa; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class SecurityjpaApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/.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 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/images/error_403.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/images/error_403.jpg -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/images/index.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/images/index.jpg -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/images/login.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/images/login.jpg -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/images/login_error.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/images/login_error.jpg -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/images/login_success.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/images/login_success.jpg -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/images/remember_me1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/images/remember_me1.jpg -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/images/remember_me2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/images/remember_me2.jpg -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/images/role_editor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/images/role_editor.jpg -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/images/user_role_diagram.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/images/user_role_diagram.jpg -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/java/vn/techmaster/securityjpa/controller/request/LoginRequest.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.securityjpa.controller.request; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class LoginRequest { 7 | private String username; 8 | private String password; 9 | 10 | } 11 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/java/vn/techmaster/securityjpa/service/ISecurityService.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.securityjpa.service; 2 | 3 | public interface ISecurityService { 4 | public void generateUsersRoles(); 5 | } 6 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.datasource.url=jdbc:h2:mem:test 2 | spring.datasource.driverClassName=org.h2.Driver 3 | spring.datasource.username=sa 4 | spring.datasource.password=123 5 | spring.jpa.database-platform=org.hibernate.dialect.H2Dialect 6 | spring.h2.console.enabled=true 7 | 8 | server.error.whitelabel.enabled=false -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/static/fonts/icomoon/fonts/icomoon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/static/fonts/icomoon/fonts/icomoon.eot -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/static/fonts/icomoon/fonts/icomoon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/static/fonts/icomoon/fonts/icomoon.ttf -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/static/fonts/icomoon/fonts/icomoon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/static/fonts/icomoon/fonts/icomoon.woff -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/static/images/bg_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/static/images/bg_1.jpg -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/static/scss/bootstrap/_media.scss: -------------------------------------------------------------------------------- 1 | .media { 2 | display: flex; 3 | align-items: flex-start; 4 | } 5 | 6 | .media-body { 7 | flex: 1; 8 | } 9 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/static/scss/bootstrap/mixins/_clearfix.scss: -------------------------------------------------------------------------------- 1 | @mixin clearfix() { 2 | &::after { 3 | display: block; 4 | clear: both; 5 | content: ""; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/static/scss/bootstrap/mixins/_lists.scss: -------------------------------------------------------------------------------- 1 | // Lists 2 | 3 | // Unstyled keeps list items block level, just removes default browser padding and list-style 4 | @mixin list-unstyled { 5 | padding-left: 0; 6 | list-style: none; 7 | } 8 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/static/scss/bootstrap/mixins/_resize.scss: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | @mixin resizable($direction) { 4 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 5 | resize: $direction; // Options: horizontal, vertical, both 6 | } 7 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/static/scss/bootstrap/mixins/_size.scss: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | @mixin size($width, $height: $width) { 4 | width: $width; 5 | height: $height; 6 | @include deprecate("`size()`", "v4.3.0", "v5"); 7 | } 8 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/static/scss/bootstrap/mixins/_text-truncate.scss: -------------------------------------------------------------------------------- 1 | // Text truncate 2 | // Requires inline-block or block for proper styling 3 | 4 | @mixin text-truncate() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/static/scss/bootstrap/mixins/_visibility.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Visibility 4 | 5 | @mixin invisible($visibility) { 6 | visibility: $visibility !important; 7 | @include deprecate("`invisible()`", "v4.3.0", "v5"); 8 | } 9 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/static/scss/bootstrap/utilities/_clearfix.scss: -------------------------------------------------------------------------------- 1 | .clearfix { 2 | @include clearfix(); 3 | } 4 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/static/scss/bootstrap/utilities/_overflow.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @each $value in $overflows { 4 | .overflow-#{$value} { overflow: $value !important; } 5 | } 6 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/static/scss/bootstrap/utilities/_screenreaders.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Screenreaders 3 | // 4 | 5 | .sr-only { 6 | @include sr-only(); 7 | } 8 | 9 | .sr-only-focusable { 10 | @include sr-only-focusable(); 11 | } 12 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/static/scss/bootstrap/utilities/_shadows.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | .shadow-sm { box-shadow: $box-shadow-sm !important; } 4 | .shadow { box-shadow: $box-shadow !important; } 5 | .shadow-lg { box-shadow: $box-shadow-lg !important; } 6 | .shadow-none { box-shadow: none !important; } 7 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/static/scss/bootstrap/utilities/_visibility.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // 4 | // Visibility utilities 5 | // 6 | 7 | .visible { 8 | visibility: visible !important; 9 | } 10 | 11 | .invisible { 12 | visibility: hidden !important; 13 | } 14 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/templates/admin.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 |

bạn có role ADMIN nên bạn truy cập được trang này

7 |
8 |
9 | 10 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/templates/author.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 |

bạn có role AUTHOR nên bạn truy cập được trang này

7 |
8 |
9 | 10 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/templates/editor.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 |

bạn có role EDITOR nên bạn truy cập được trang này

7 |
8 |
9 | 10 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/templates/error/401.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 |

Đây là lỗi 401. Login không thành công bạn ạ. Đau thật

7 |
8 | 9 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/templates/error/403.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 |

Đây là lỗi 403. Rất tiếc bạn không có quyền truy cập

7 |
8 | 9 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/templates/error/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 |

Đây là lỗi 404. Tìm mãi không thấy file để phục vụ bạn

7 |
8 | 9 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/templates/error/500.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |

Lỗi khó hiểu trong server. Hãy email cuong@techmaster.vn để báo lỗi nhé

6 | 7 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/templates/logout_success.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |

Hẹn gặp lại lần sau

6 | Quay lại trang chủ 7 |
8 | 9 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/templates/member.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 |

Trang thành viên. Bạn login là xem được trang này

7 |
8 |
9 | 10 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/templates/public.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 |

Trang này không cần login cũng xem được

7 |
8 |
9 | 10 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/06CustomizeLoginForm/securityjpa/src/main/resources/templates/user.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 |

Chỉ những ai có role USER mới được truy cập

7 |
8 |
9 | 10 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/JWTLab/01DefaulConfiguration/vincinema/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/JWTLab/01DefaulConfiguration/vincinema/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /25-SpringSecurityJWT/JWTLab/01DefaulConfiguration/vincinema/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/JWTLab/01DefaulConfiguration/vincinema/filmrest.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/JWTLab/01DefaulConfiguration/vincinema/filmrest.jpg -------------------------------------------------------------------------------- /25-SpringSecurityJWT/JWTLab/01DefaulConfiguration/vincinema/login.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/JWTLab/01DefaulConfiguration/vincinema/login.jpg -------------------------------------------------------------------------------- /25-SpringSecurityJWT/JWTLab/02JWTIntegration/vincinema/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/JWTLab/02JWTIntegration/vincinema/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /25-SpringSecurityJWT/JWTLab/02JWTIntegration/vincinema/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/JWTLab/02JWTIntegration/vincinema/src/main/java/vn/techmaster/vincinema/dto/AuthRequest.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.dto; 2 | 3 | import lombok.Data; 4 | 5 | import javax.validation.constraints.NotNull; 6 | 7 | @Data 8 | public class AuthRequest { 9 | 10 | @NotNull 11 | private String username; 12 | @NotNull 13 | private String password; 14 | 15 | } -------------------------------------------------------------------------------- /25-SpringSecurityJWT/JWTLab/02JWTIntegration/vincinema/src/test/java/vn/techmaster/vincinema/VincinemaApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class VincinemaApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/demoauth/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/demoauth/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /25-SpringSecurityJWT/demoauth/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/demoauth/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/demoauth/src/test/java/vn/techmaster/demoauth/DemoauthApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.demoauth; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class DemoauthApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/java-spring-security-example-master/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/java-spring-security-example-master/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /25-SpringSecurityJWT/java-spring-security-example-master/.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 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/java-spring-security-example-master/src/main/java/io/example/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/java-spring-security-example-master/src/main/java/io/example/.DS_Store -------------------------------------------------------------------------------- /25-SpringSecurityJWT/java-spring-security-example-master/src/main/java/io/example/configuration/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/25-SpringSecurityJWT/java-spring-security-example-master/src/main/java/io/example/configuration/.DS_Store -------------------------------------------------------------------------------- /25-SpringSecurityJWT/java-spring-security-example-master/src/main/java/io/example/domain/dto/SearchUsersQuery.java: -------------------------------------------------------------------------------- 1 | package io.example.domain.dto; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class SearchUsersQuery { 7 | 8 | private String id; 9 | private String username; 10 | private String fullName; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/java-spring-security-example-master/src/main/java/io/example/domain/dto/UserView.java: -------------------------------------------------------------------------------- 1 | package io.example.domain.dto; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class UserView { 7 | 8 | private String id; 9 | 10 | private String username; 11 | private String fullName; 12 | 13 | } 14 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/java-spring-security-example-master/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | logging.level.org.springframework.data.mongodb.core.MongoTemplate=DEBUG 2 | 3 | springdoc.api-docs.enabled=true 4 | springdoc.api-docs.path=/rest-api-docs 5 | springdoc.swagger-ui.path=/swagger-ui -------------------------------------------------------------------------------- /25-SpringSecurityJWT/java-spring-security-example-master/src/test/java/io/example/AppRunner.java: -------------------------------------------------------------------------------- 1 | package io.example; 2 | 3 | import org.springframework.boot.test.context.SpringBootTest; 4 | 5 | @SpringBootTest 6 | public class AppRunner { 7 | 8 | // @Test 9 | public void run() { 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/spring-boot-jwt-jpa-master/src/main/java/com/techgeeknext/repository/UserRepository.java: -------------------------------------------------------------------------------- 1 | package com.techgeeknext.repository; 2 | import com.techgeeknext.model.UserDao; 3 | import org.springframework.data.repository.CrudRepository; 4 | public interface UserRepository extends CrudRepository { 5 | UserDao findByUsername(String username); 6 | } -------------------------------------------------------------------------------- /25-SpringSecurityJWT/spring-boot-jwt-jpa-master/src/test/java/com/techgeeknext/SpringBootJwtApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.techgeeknext; 2 | 3 | import org.springframework.boot.test.context.SpringBootTest; 4 | 5 | @SpringBootTest 6 | class SpringBootJwtApplicationTests { 7 | 8 | 9 | void contextLoads() { 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/spring-security-core/.gitignore: -------------------------------------------------------------------------------- 1 | target/ -------------------------------------------------------------------------------- /25-SpringSecurityJWT/spring-security-core/src/main/java/com/baeldung/app/repository/TaskRepository.java: -------------------------------------------------------------------------------- 1 | package com.baeldung.app.repository; 2 | 3 | import org.springframework.data.repository.CrudRepository; 4 | 5 | import com.baeldung.app.entity.Task; 6 | 7 | public interface TaskRepository extends CrudRepository { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/spring-security-core/src/main/java/com/baeldung/checkrolejava/UnauthorizedException.java: -------------------------------------------------------------------------------- 1 | package com.baeldung.checkrolejava; 2 | 3 | import org.springframework.http.HttpStatus; 4 | import org.springframework.web.bind.annotation.ResponseStatus; 5 | 6 | @ResponseStatus(value = HttpStatus.UNAUTHORIZED) 7 | public class UnauthorizedException extends RuntimeException { 8 | } 9 | -------------------------------------------------------------------------------- /25-SpringSecurityJWT/spring-security-core/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.main.allow-bean-definition-overriding=true -------------------------------------------------------------------------------- /Dockerize/01_Dockerfile/plaindocker/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Dockerize/01_Dockerfile/plaindocker/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /Dockerize/01_Dockerfile/plaindocker/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /Dockerize/01_Dockerfile/plaindocker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:17-alpine 2 | RUN addgroup -S spring && adduser -S spring -G spring 3 | USER spring:spring 4 | ARG JAR_FILE=target/*.jar 5 | COPY ${JAR_FILE} app.jar 6 | ENTRYPOINT ["java","-jar","/app.jar"] -------------------------------------------------------------------------------- /Dockerize/01_Dockerfile/plaindocker/Makefile: -------------------------------------------------------------------------------- 1 | containername = plaindocker 2 | build: 3 | ./mvnw package 4 | docker build -t plaindocker:latest . 5 | start: 6 | docker rm $(containername) 7 | docker run -p 7000:8080 -d --name $(containername) plaindocker:latest 8 | stop: 9 | docker stop $(containername) -------------------------------------------------------------------------------- /Dockerize/01_Dockerfile/plaindocker/jdk_alpine.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Dockerize/01_Dockerfile/plaindocker/jdk_alpine.jpg -------------------------------------------------------------------------------- /Dockerize/01_Dockerfile/plaindocker/jdk_buster.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Dockerize/01_Dockerfile/plaindocker/jdk_buster.jpg -------------------------------------------------------------------------------- /Dockerize/01_Dockerfile/plaindocker/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Dockerize/01_Dockerfile/plaindocker/src/main/resources/static/images/dockerize.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Dockerize/01_Dockerfile/plaindocker/src/main/resources/static/images/dockerize.jpg -------------------------------------------------------------------------------- /Dockerize/01_Dockerfile/plaindocker/src/test/java/vn/techmaster/plaindocker/PlaindockerApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.plaindocker; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class PlaindockerApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /Dockerize/01_Dockerfile/plaindocker/website.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Dockerize/01_Dockerfile/plaindocker/website.jpg -------------------------------------------------------------------------------- /Dockerize/02_GoogleJib/webdocker/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Dockerize/02_GoogleJib/webdocker/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /Dockerize/02_GoogleJib/webdocker/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /Dockerize/02_GoogleJib/webdocker/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Dockerize/02_GoogleJib/webdocker/src/main/resources/static/images/dockerize.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Dockerize/02_GoogleJib/webdocker/src/main/resources/static/images/dockerize.jpg -------------------------------------------------------------------------------- /Dockerize/02_GoogleJib/webdocker/src/test/java/vn/techmaster/webdocker/WebdockerApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.webdocker; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class WebdockerApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /Dockerize/03_GraalVM/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | COPY output /opt/output 4 | 5 | CMD ["/opt/output"] -------------------------------------------------------------------------------- /Dockerize/03_GraalVM/Main.java: -------------------------------------------------------------------------------- 1 | public final class Main { 2 | public static void main(String[] args) { 3 | System.out.println("Hello from GraalVM"); 4 | } 5 | } -------------------------------------------------------------------------------- /Dockerize/03_GraalVM/output: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Dockerize/03_GraalVM/output -------------------------------------------------------------------------------- /Dockerize/04_SpringNative/nativespring/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Dockerize/04_SpringNative/nativespring/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /Dockerize/04_SpringNative/nativespring/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /Dockerize/04_SpringNative/nativespring/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Dockerize/04_SpringNative/nativespring/src/main/resources/static/images/dockerize.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Dockerize/04_SpringNative/nativespring/src/main/resources/static/images/dockerize.jpg -------------------------------------------------------------------------------- /Dockerize/04_SpringNative/nativespring/src/test/java/vn/techmaster/nativespring/NativespringApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.nativespring; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class NativespringApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /Dockerize/ReadMe.md: -------------------------------------------------------------------------------- 1 | Tham khảo 2 | 3 | 1. [Jib](https://github.com/GoogleContainerTools/jib) 4 | 2. [Containerize Spring Boot and Java applications with Jib](https://hellokoding.com/java-jib/) -------------------------------------------------------------------------------- /JPATransaction/bank/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/JPATransaction/bank/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /JPATransaction/bank/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /JPATransaction/bank/ReadMe.md: -------------------------------------------------------------------------------- 1 | # Transaction trong JPA 2 | 3 | [Xem chi tiết bài viết ở đây](https://techmaster.vn/posts/36436/p1-transaction-long-nhau-trong-ung-dung-java-spring-boot-hoac-quarkus-nested-transaction-in-java-application) -------------------------------------------------------------------------------- /JPATransaction/bank/src/main/java/vn/techmaster/bank/controller/request/TransferRequest.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bank.controller.request; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class TransferRequest { 7 | private long from; 8 | private long to; 9 | private long amount; 10 | } -------------------------------------------------------------------------------- /JPATransaction/bank/src/main/java/vn/techmaster/bank/exception/DummyException.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bank.exception; 2 | 3 | public class DummyException extends RuntimeException{ 4 | 5 | } 6 | -------------------------------------------------------------------------------- /JPATransaction/bank/src/main/java/vn/techmaster/bank/model/AccountState.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.bank.model; 2 | 3 | public enum AccountState { 4 | ACTIVE, 5 | DISABLED 6 | } 7 | -------------------------------------------------------------------------------- /Kafka/01-SingleBroker/consumer/.gitignore: -------------------------------------------------------------------------------- 1 | consumer -------------------------------------------------------------------------------- /Kafka/01-SingleBroker/consumer/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/techmaster-vietnam/Research/kafka/consumer 2 | 3 | go 1.16 4 | 5 | require ( 6 | github.com/confluentinc/confluent-kafka-go v1.6.1 // indirect 7 | gopkg.in/confluentinc/confluent-kafka-go.v1 v1.6.1 // indirect 8 | ) 9 | -------------------------------------------------------------------------------- /Kafka/01-SingleBroker/images/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Kafka/01-SingleBroker/images/.DS_Store -------------------------------------------------------------------------------- /Kafka/01-SingleBroker/images/Conduktor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Kafka/01-SingleBroker/images/Conduktor.jpg -------------------------------------------------------------------------------- /Kafka/01-SingleBroker/images/Conduktor_Consumer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Kafka/01-SingleBroker/images/Conduktor_Consumer.jpg -------------------------------------------------------------------------------- /Kafka/01-SingleBroker/images/Conduktor_Tao_Consumer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Kafka/01-SingleBroker/images/Conduktor_Tao_Consumer.jpg -------------------------------------------------------------------------------- /Kafka/01-SingleBroker/images/container_dashboard.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Kafka/01-SingleBroker/images/container_dashboard.jpg -------------------------------------------------------------------------------- /Kafka/01-SingleBroker/images/nhan_message.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Kafka/01-SingleBroker/images/nhan_message.jpg -------------------------------------------------------------------------------- /Kafka/01-SingleBroker/images/tao_message.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Kafka/01-SingleBroker/images/tao_message.jpg -------------------------------------------------------------------------------- /Kafka/01-SingleBroker/images/zookeper_broker.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Kafka/01-SingleBroker/images/zookeper_broker.jpg -------------------------------------------------------------------------------- /Kafka/02-SpringKafkaBasic/basickafka/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Kafka/02-SpringKafkaBasic/basickafka/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /Kafka/02-SpringKafkaBasic/basickafka/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /Kafka/02-SpringKafkaBasic/basickafka/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Kafka/02-SpringKafkaBasic/basickafka/src/test/java/vn/techmaster/basickafka/BasickafkaApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.basickafka; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class BasickafkaApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /ModelAttributeVsRequestBody/restannotation/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/ModelAttributeVsRequestBody/restannotation/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /ModelAttributeVsRequestBody/restannotation/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /ModelAttributeVsRequestBody/restannotation/ReadMe.md: -------------------------------------------------------------------------------- 1 | Mã nguồn minh hoạ cho bài viết [Spring Boot: @PathVariable vs @RequestParam, @ModelAttribute vs @RequestBody](https://techmaster.vn/posts/36483/spring-boot-atpathvariable-vs-atrequestparam-atmodelattribute-vs-atrequestbody) -------------------------------------------------------------------------------- /ModelAttributeVsRequestBody/restannotation/src/main/java/vn/techmaster/restannotation/request/TransferRequest.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.restannotation.request; 2 | 3 | import lombok.Data; 4 | @Data 5 | public class TransferRequest { 6 | private long from; 7 | private long to; 8 | private long amount; 9 | } 10 | -------------------------------------------------------------------------------- /ModelAttributeVsRequestBody/restannotation/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Quarkus/demoquarkus/.dockerignore: -------------------------------------------------------------------------------- 1 | * 2 | !target/*-runner 3 | !target/*-runner.jar 4 | !target/lib/* 5 | !target/quarkus-app/* -------------------------------------------------------------------------------- /Quarkus/demoquarkus/.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 | -------------------------------------------------------------------------------- /Quarkus/demoquarkus/src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Quarkus/demoquarkus/src/main/resources/application.properties -------------------------------------------------------------------------------- /Quarkus/demoquarkus/src/test/java/vn/techmaster/NativeBookResourceIT.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster; 2 | 3 | import io.quarkus.test.junit.NativeImageTest; 4 | 5 | @NativeImageTest 6 | public class NativeBookResourceIT extends BookResourceTest { 7 | 8 | // Execute the same tests but in native mode. 9 | } -------------------------------------------------------------------------------- /Reactive/ReadMe.md: -------------------------------------------------------------------------------- 1 | https://dassum.medium.com/building-a-reactive-restful-web-service-using-spring-boot-and-postgres-c8e157dbc81d 2 | 3 | https://www.educative.io/blog/spring-webflux-tutorial 4 | 5 | -------------------------------------------------------------------------------- /RestAssured/ReadMe.md: -------------------------------------------------------------------------------- 1 | https://blog.aspiresys.pl/technology/junit-5-rest-assured-using-extension-api/ 2 | 3 | https://rieckpil.de/testing-spring-boot-applications-with-rest-assured/ -------------------------------------------------------------------------------- /RestAssured/spring-boot-rest-assured/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/RestAssured/spring-boot-rest-assured/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /RestAssured/spring-boot-rest-assured/.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 | -------------------------------------------------------------------------------- /RestAssured/spring-boot-rest-assured/README.md: -------------------------------------------------------------------------------- 1 | # Codebase for the blog post [Testing Spring Boot Applications With REST Assured](https://rieckpil.de/testing-spring-boot-applications-with-rest-assured/) 2 | 3 | Steps to run this project: 4 | 5 | 1. Clone this Git repository 6 | 2. Navigate to the folder `spring-boot-rest-assured` 7 | 3. Run all tests with `mvn test` 8 | -------------------------------------------------------------------------------- /RestAssured/spring-boot-rest-assured/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Scheduling-Retry/src/main/resources/retryConfig.properties: -------------------------------------------------------------------------------- 1 | retry.maxAttempts=2 2 | retry.maxDelay=100 -------------------------------------------------------------------------------- /Scheduling-Retry/src/main/resources/springScheduled.properties: -------------------------------------------------------------------------------- 1 | cron.expression=0 15 10 15 * ? 2 | fixedRate.in.milliseconds=1000 3 | fixedDelay.in.milliseconds=1000 -------------------------------------------------------------------------------- /SevenDatabasePatterns/ReadMe.md: -------------------------------------------------------------------------------- 1 | # Code demo 7 database patterns for microservices architecture 2 | 3 | Tham khảo video [7 Database Patterns for Microservices Architecture](https://youtu.be/a_XMsSNdUQA) -------------------------------------------------------------------------------- /Thread/01-Basic/ReadMe.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Thread/01-Basic/ReadMe.md -------------------------------------------------------------------------------- /Vincinema/01Entity/vincinema/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TechMaster/SpringBoot28Days/5f2f7ff3aa0a70e4ca4a0f0bc7e7e5b931d5ecc2/Vincinema/01Entity/vincinema/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /Vincinema/01Entity/vincinema/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /Vincinema/01Entity/vincinema/src/main/java/vn/techmaster/vincinema/controller/TicketController.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.controller; 2 | 3 | import org.springframework.web.bind.annotation.RestController; 4 | 5 | @RestController 6 | public class TicketController { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /Vincinema/01Entity/vincinema/src/main/java/vn/techmaster/vincinema/model/SeatType.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.model; 2 | 3 | public enum SeatType { 4 | NORMAL, 5 | VIP, 6 | KING; 7 | } -------------------------------------------------------------------------------- /Vincinema/01Entity/vincinema/src/main/java/vn/techmaster/vincinema/model/Ticket.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.model; 2 | 3 | public class Ticket { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /Vincinema/01Entity/vincinema/src/main/java/vn/techmaster/vincinema/pojo/CinemaPOJO.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.pojo; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class CinemaPOJO { 7 | private Long id; 8 | private String name; 9 | public CinemaPOJO(Long id, String name) { 10 | this.id = id; 11 | this.name = name; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Vincinema/01Entity/vincinema/src/main/java/vn/techmaster/vincinema/repository/FilmRepository.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.repository; 2 | 3 | import org.springframework.data.jpa.repository.JpaRepository; 4 | 5 | import vn.techmaster.vincinema.model.Film; 6 | 7 | public interface FilmRepository extends JpaRepository { 8 | Film findByTitle(String title); 9 | } 10 | -------------------------------------------------------------------------------- /Vincinema/01Entity/vincinema/src/main/java/vn/techmaster/vincinema/service/PricePromotionService.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema.service; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | @Service 6 | public class PricePromotionService { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /Vincinema/01Entity/vincinema/src/main/resources/application-dev.properties: -------------------------------------------------------------------------------- 1 | spring.datasource.url=jdbc:h2:mem:test 2 | spring.datasource.driverClassName=org.h2.Driver 3 | spring.datasource.username=sa 4 | spring.datasource.password=123 5 | spring.jpa.database-platform=org.hibernate.dialect.H2Dialect 6 | spring.h2.console.enabled=true -------------------------------------------------------------------------------- /Vincinema/01Entity/vincinema/src/main/resources/application-post.properties: -------------------------------------------------------------------------------- 1 | ## default connection pool 2 | spring.datasource.hikari.connectionTimeout=20000 3 | spring.datasource.hikari.maximumPoolSize=5 4 | 5 | ## PostgreSQL 6 | spring.datasource.url=jdbc:postgresql://localhost:5432/demo 7 | spring.datasource.username=demo 8 | spring.datasource.password=toiyeuhanoi123- -------------------------------------------------------------------------------- /Vincinema/01Entity/vincinema/src/test/java/vn/techmaster/vincinema/VincinemaApplicationTests.java: -------------------------------------------------------------------------------- 1 | package vn.techmaster.vincinema; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class VincinemaApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | --------------------------------------------------------------------------------