Full Code of suisui2019/springboot-study for AI

master 13083fe6fa2e cached
299 files
505.8 KB
143.6k tokens
435 symbols
1 requests
Download .txt
Showing preview only (604K chars total). Download the full file or copy to clipboard to get everything.
Repository: suisui2019/springboot-study
Branch: master
Commit: 13083fe6fa2e
Files: 299
Total size: 505.8 KB

Directory structure:
gitextract_bd2aiknn/

├── README.md
├── activemq-demo/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               ├── DemoApplication.java
│       │   │               ├── config/
│       │   │               │   └── ActivemqConfig.java
│       │   │               └── controller/
│       │   │                   ├── QueueCustomerController.java
│       │   │                   ├── SendController.java
│       │   │                   └── TopicCustomerController.java
│       │   └── resources/
│       │       └── application.properties
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           └── DemoApplicationTests.java
├── exception-demo/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               ├── ExceptionDemoApplication.java
│       │   │               ├── controller/
│       │   │               │   └── DemoController.java
│       │   │               └── util/
│       │   │                   ├── GlobleExceptionHandler.java
│       │   │                   └── Result.java
│       │   └── resources/
│       │       └── application.properties
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           └── ExceptionDemoApplicationTests.java
├── filter-demo/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               ├── DemoApplication.java
│       │   │               ├── config/
│       │   │               │   └── WebConfig.java
│       │   │               ├── controller/
│       │   │               │   └── DemoController.java
│       │   │               └── filter/
│       │   │                   ├── MyFilter1.java
│       │   │                   └── MyFilter2.java
│       │   └── resources/
│       │       └── application.properties
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           └── DemoApplicationTests.java
├── jpa-demo/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               ├── SpringBootStudyJpaApplication.java
│       │   │               ├── controller/
│       │   │               │   └── UserController.java
│       │   │               ├── entity/
│       │   │               │   └── User.java
│       │   │               ├── repository/
│       │   │               │   └── UserRepository.java
│       │   │               └── service/
│       │   │                   ├── UserService.java
│       │   │                   └── impl/
│       │   │                       └── UserServiceImpl.java
│       │   └── resources/
│       │       └── application.properties
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           └── SpringBootStudyJpaApplicationTests.java
├── pom.xml
├── qrcode/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               ├── QrcodeApplication.java
│       │   │               ├── controller/
│       │   │               │   └── QrCodeController.java
│       │   │               └── util/
│       │   │                   └── QRCodeUtil.java
│       │   └── resources/
│       │       └── application.properties
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           └── QrcodeApplicationTests.java
├── sendmail/
│   ├── pom.xml
│   └── src/
│       └── main/
│           ├── java/
│           │   └── com/
│           │       └── example/
│           │           └── mail/
│           │               └── sendmail/
│           │                   ├── SendMailApplication.java
│           │                   ├── controller/
│           │                   │   └── MailController.java
│           │                   ├── dto/
│           │                   │   └── Email.java
│           │                   └── service/
│           │                       ├── MailService.java
│           │                       └── impl/
│           │                           └── MailServiceImpl.java
│           └── resources/
│               └── application.properties
├── spirng-boot-kaptcha/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               ├── DemoApplication.java
│       │   │               ├── config/
│       │   │               │   ├── KaptchaConfig.java
│       │   │               │   └── WebConfig.java
│       │   │               └── controller/
│       │   │                   └── KaptchaController.java
│       │   └── resources/
│       │       └── application.properties
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           └── DemoApplicationTests.java
├── spring-boot-encry/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       └── main/
│           ├── java/
│           │   └── com/
│           │       └── example/
│           │           └── springbootencry/
│           │               ├── SpringBootEncryApplication.java
│           │               ├── advice/
│           │               │   ├── DecryptRequestBodyAdvice.java
│           │               │   └── EncryResponseBodyAdvice.java
│           │               ├── controller/
│           │               │   └── TestController.java
│           │               └── util/
│           │                   ├── DesUtil.java
│           │                   └── Result.java
│           └── resources/
│               └── application.yml
├── spring-boot-init/
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── example/
│       │               └── springbootinit/
│       │                   └── component/
│       │                       ├── ApplicationRunnerImpl.java
│       │                       ├── CommandLineRunnerImpl.java
│       │                       ├── PostConstructInit.java
│       │                       └── TestService.java
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── springbootinit/
│                           └── Test.java
├── spring-boot-jwt/
│   └── src/
│       └── main/
│           ├── java/
│           │   └── com/
│           │       └── example/
│           │           └── springbootjwt/
│           │               ├── controller/
│           │               │   ├── LoginController.java
│           │               │   └── SecureController.java
│           │               ├── entity/
│           │               │   └── User.java
│           │               ├── filter/
│           │               │   └── JwtFilter.java
│           │               └── util/
│           │                   └── JwtUtil.java
│           └── resources/
│               └── application.yml
├── spring-boot-log/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── springbootlog/
│       │   │               ├── SpringBootLogApplication.java
│       │   │               ├── config/
│       │   │               │   └── InterceptorConfig.java
│       │   │               ├── controller/
│       │   │               │   └── TestLogController.java
│       │   │               └── interceptor/
│       │   │                   └── SessionInterceptor.java
│       │   └── resources/
│       │       ├── application.yml
│       │       └── logback-spring.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── springbootlog/
│                           └── SpringBootLogApplicationTests.java
├── spring-boot-mybatis-annotation/
│   └── src/
│       └── main/
│           ├── java/
│           │   └── com/
│           │       └── example/
│           │           └── springboot/
│           │               └── mybatisannotation/
│           │                   ├── config/
│           │                   │   └── MybatisConfig.java
│           │                   ├── controller/
│           │                   │   └── UserController.java
│           │                   ├── dao/
│           │                   │   └── mapper/
│           │                   │       ├── UserMapper.java
│           │                   │       └── UserRoleMapper.java
│           │                   ├── entity/
│           │                   │   ├── User.java
│           │                   │   └── UserRole.java
│           │                   └── service/
│           │                       ├── UserRoleService.java
│           │                       ├── UserService.java
│           │                       └── impl/
│           │                           ├── UserRoleServiceImpl.java
│           │                           └── UserServiceImpl.java
│           └── resources/
│               └── application.yml
├── spring-boot-mybatis-generator/
│   ├── .gitignore
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── springbootmybatis/
│       │   │               └── generator/
│       │   │                   ├── SpringBootMybatisGeneratorApplication.java
│       │   │                   ├── dao/
│       │   │                   │   ├── UserMapper.java
│       │   │                   │   └── UserRoleMapper.java
│       │   │                   └── entity/
│       │   │                       ├── User.java
│       │   │                       └── UserRole.java
│       │   └── resources/
│       │       ├── application.properties
│       │       ├── mapper/
│       │       │   ├── UserMapper.xml
│       │       │   └── UserRoleMapper.xml
│       │       └── mybatis-generator.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── springbootmybatis/
│                           └── generator/
│                               └── SpringBootMybatisGeneratorApplicationTests.java
├── spring-boot-mybatis-xml/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── springboot/
│       │   │               └── mybatisxml/
│       │   │                   ├── SpringBootMybatisXmlApplication.java
│       │   │                   ├── controller/
│       │   │                   │   └── UserController.java
│       │   │                   ├── dao/
│       │   │                   │   └── mapper/
│       │   │                   │       └── UserMapper.java
│       │   │                   ├── entity/
│       │   │                   │   └── User.java
│       │   │                   └── service/
│       │   │                       ├── UserService.java
│       │   │                       └── impl/
│       │   │                           └── UserServiceImpl.java
│       │   └── resources/
│       │       ├── application.yml
│       │       ├── mapper/
│       │       │   └── UserMapper.xml
│       │       └── mybatis-config.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── springboot/
│                           └── mybatisxml/
│                               └── SpringBootMybatisXmlApplicationTests.java
├── spring-boot-read-yml/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── springbootreadyml/
│       │   │               ├── SpringBootReadYmlApplication.java
│       │   │               ├── config/
│       │   │               │   └── WxMpProperties.java
│       │   │               └── controller/
│       │   │                   └── TestReadYmlController.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── springbootreadyml/
│                           └── SpringBootReadYmlApplicationTests.java
├── spring-boot-security/
│   ├── .gitignore
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── springboot/
│       │   │               └── security/
│       │   │                   ├── SpringBootSecurityApplication.java
│       │   │                   ├── config/
│       │   │                   │   ├── MyPasswordEncoder.java
│       │   │                   │   └── WebSecurityConfig.java
│       │   │                   └── controller/
│       │   │                       ├── AdminController.java
│       │   │                       ├── AppController.java
│       │   │                       └── UserController.java
│       │   └── resources/
│       │       └── application.properties
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── springboot/
│                           └── security/
│                               └── SpringBootSecurityApplicationTests.java
├── spring-boot-study-base/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── study/
│                       └── day01/
│                           ├── Config.java
│                           ├── LinuxCondition.java
│                           ├── LinuxService.java
│                           ├── ListService.java
│                           ├── Main01.java
│                           ├── WindowsCondition.java
│                           └── WindowsService.java
├── spring-boot-websocket/
│   ├── .gitignore
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── springboot/
│       │   │               └── websocket/
│       │   │                   ├── SpringBootWebsocketApplication.java
│       │   │                   ├── config/
│       │   │                   │   └── WebSocketConfig.java
│       │   │                   ├── controller/
│       │   │                   │   └── WebSocketController.java
│       │   │                   ├── dto/
│       │   │                   │   └── SocketMessage.java
│       │   │                   └── util/
│       │   │                       └── WebSocketServer.java
│       │   └── resources/
│       │       ├── application.properties
│       │       └── static/
│       │           └── index.html
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── springboot/
│                           └── websocket/
│                               └── SpringBootWebsocketApplicationTests.java
├── spring-cache-demo/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               ├── DemoApplication.java
│       │   │               ├── aop/
│       │   │               │   └── LogRecordAspect.java
│       │   │               ├── config/
│       │   │               │   └── WebConfig.java
│       │   │               ├── controller/
│       │   │               │   └── UserController.java
│       │   │               ├── entity/
│       │   │               │   └── User.java
│       │   │               ├── repository/
│       │   │               │   └── UserRepository.java
│       │   │               └── service/
│       │   │                   ├── UserService.java
│       │   │                   └── impl/
│       │   │                       └── UserServiceImpl.java
│       │   └── resources/
│       │       └── application.properties
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           └── DemoApplicationTests.java
├── spring-cloud-consumer-fegin/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── springcloudconsumerfegin/
│       │   │               ├── SpringCloudConsumerFeginApplication.java
│       │   │               ├── controller/
│       │   │               │   └── FeginController.java
│       │   │               └── service/
│       │   │                   └── IFeginService.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── springcloudconsumerfegin/
│                           └── SpringCloudConsumerFeginApplicationTests.java
├── spring-cloud-consumer-fegin-hystrix/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── springcloudconsumerfeginhystrix/
│       │   │               ├── SpringCloudConsumerFeginHystrixApplication.java
│       │   │               ├── controller/
│       │   │               │   └── FeginHystrixController.java
│       │   │               └── service/
│       │   │                   ├── UserFeginService.java
│       │   │                   └── impl/
│       │   │                       └── UserFeginFailBackImpl.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── springcloudconsumerfeginhystrix/
│                           └── SpringCloudConsumerFeginHystrixApplicationTests.java
├── spring-cloud-consumer-ribbon/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               ├── RibbonConsumerApplication.java
│       │   │               └── controller/
│       │   │                   ├── HystrixConsumerController.java
│       │   │                   └── RibbonConsumerController.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           └── RibbonConsumerApplicationTests.java
├── spring-cloud-eureka/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               └── SpringCloudEurekaApplication.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           └── SpringCloudEurekaApplicationTests.java
├── spring-cloud-user-consumer/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               ├── SpringCloudUserConsumerApplication.java
│       │   │               └── controller/
│       │   │                   └── ConsumerController.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           └── SpringCloudUserConsumerApplicationTests.java
├── spring-cloud-user-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               ├── UserServiceDemoApplication.java
│       │   │               ├── controller/
│       │   │               │   └── UserController.java
│       │   │               └── entity/
│       │   │                   └── User.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           ├── DemoApplicationTests.java
│                           └── Test.java
└── spring-mybatis-generator/
    └── src/
        └── main/
            └── resources/
                ├── application.yml
                └── mybatis-generator.xml

================================================
FILE CONTENTS
================================================

================================================
FILE: README.md
================================================
#### 本项目记录 SpringBoot和SpringCloud 学习过程中遇到的问题,下面的是我的公众号二维码图片,欢迎关注,欢迎留言,一起学习,一起进步。

![](https://mmbiz.qpic.cn/mmbiz_jpg/OXnTwHqwxnYc8Qxiappy2M1MnJcc3MLI9R1PorLeibiczcODP9IAYGdrB2HOTWW24NX5rfeB1ZJ8G4jPfKRnah2WQ/0?wx_fmt=jpeg) 



### 近期文章


[一分钟带你学会利用mybatis-generator自动生成代码!](https://mp.weixin.qq.com/s/HSlmvdSsQikfJ8M99MYGNg)

[SpringBoot系列-整合Mybatis(注解方式)](https://mp.weixin.qq.com/s/toH_rCF5Sf3sPK-NPp5OhQ)

[SpringBoot系列-整合Mybatis(XML配置方式)](https://mp.weixin.qq.com/s/Ad8aKvyTgjFlzjOcadO1xQ)

[利用SpringBoot+Logback手写一个简单的链路追踪](https://mp.weixin.qq.com/s/9ozbOBxhW9yreBWH9UTFMQ)

================================================
FILE: activemq-demo/.gitignore
================================================
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/

### VS Code ###
.vscode/


================================================
FILE: activemq-demo/.mvn/wrapper/MavenWrapperDownloader.java
================================================
/*
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
*/

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.util.Properties;

public class MavenWrapperDownloader {

    /**
     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
     */
    private static final String DEFAULT_DOWNLOAD_URL =
            "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar";

    /**
     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
     * use instead of the default one.
     */
    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
            ".mvn/wrapper/maven-wrapper.properties";

    /**
     * Path where the maven-wrapper.jar will be saved to.
     */
    private static final String MAVEN_WRAPPER_JAR_PATH =
            ".mvn/wrapper/maven-wrapper.jar";

    /**
     * Name of the property which should be used to override the default download url for the wrapper.
     */
    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";

    public static void main(String args[]) {
        System.out.println("- Downloader started");
        File baseDirectory = new File(args[0]);
        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());

        // If the maven-wrapper.properties exists, read it and check if it contains a custom
        // wrapperUrl parameter.
        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
        String url = DEFAULT_DOWNLOAD_URL;
        if (mavenWrapperPropertyFile.exists()) {
            FileInputStream mavenWrapperPropertyFileInputStream = null;
            try {
                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
                Properties mavenWrapperProperties = new Properties();
                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
            } catch (IOException e) {
                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
            } finally {
                try {
                    if (mavenWrapperPropertyFileInputStream != null) {
                        mavenWrapperPropertyFileInputStream.close();
                    }
                } catch (IOException e) {
                    // Ignore ...
                }
            }
        }
        System.out.println("- Downloading from: : " + url);

        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
        if (!outputFile.getParentFile().exists()) {
            if (!outputFile.getParentFile().mkdirs()) {
                System.out.println(
                        "- ERROR creating output direcrory '" + outputFile.getParentFile().getAbsolutePath() + "'");
            }
        }
        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
        try {
            downloadFileFromURL(url, outputFile);
            System.out.println("Done");
            System.exit(0);
        } catch (Throwable e) {
            System.out.println("- Error downloading");
            e.printStackTrace();
            System.exit(1);
        }
    }

    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
        URL website = new URL(urlString);
        ReadableByteChannel rbc;
        rbc = Channels.newChannel(website.openStream());
        FileOutputStream fos = new FileOutputStream(destination);
        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
        fos.close();
        rbc.close();
    }

}


================================================
FILE: activemq-demo/.mvn/wrapper/maven-wrapper.properties
================================================
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip


================================================
FILE: activemq-demo/mvnw
================================================
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#    https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------

# ----------------------------------------------------------------------------
# Maven2 Start Up Batch script
#
# Required ENV vars:
# ------------------
#   JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
#   M2_HOME - location of maven2's installed home dir
#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
#     e.g. to debug Maven itself, use
#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------

if [ -z "$MAVEN_SKIP_RC" ] ; then

  if [ -f /etc/mavenrc ] ; then
    . /etc/mavenrc
  fi

  if [ -f "$HOME/.mavenrc" ] ; then
    . "$HOME/.mavenrc"
  fi

fi

# OS specific support.  $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
  CYGWIN*) cygwin=true ;;
  MINGW*) mingw=true;;
  Darwin*) darwin=true
    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
    if [ -z "$JAVA_HOME" ]; then
      if [ -x "/usr/libexec/java_home" ]; then
        export JAVA_HOME="`/usr/libexec/java_home`"
      else
        export JAVA_HOME="/Library/Java/Home"
      fi
    fi
    ;;
esac

if [ -z "$JAVA_HOME" ] ; then
  if [ -r /etc/gentoo-release ] ; then
    JAVA_HOME=`java-config --jre-home`
  fi
fi

if [ -z "$M2_HOME" ] ; then
  ## resolve links - $0 may be a link to maven's home
  PRG="$0"

  # need this for relative symlinks
  while [ -h "$PRG" ] ; do
    ls=`ls -ld "$PRG"`
    link=`expr "$ls" : '.*-> \(.*\)$'`
    if expr "$link" : '/.*' > /dev/null; then
      PRG="$link"
    else
      PRG="`dirname "$PRG"`/$link"
    fi
  done

  saveddir=`pwd`

  M2_HOME=`dirname "$PRG"`/..

  # make it fully qualified
  M2_HOME=`cd "$M2_HOME" && pwd`

  cd "$saveddir"
  # echo Using m2 at $M2_HOME
fi

# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --unix "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi

# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME="`(cd "$M2_HOME"; pwd)`"
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
  # TODO classpath?
fi

if [ -z "$JAVA_HOME" ]; then
  javaExecutable="`which javac`"
  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
    # readlink(1) is not available as standard on Solaris 10.
    readLink=`which readlink`
    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
      if $darwin ; then
        javaHome="`dirname \"$javaExecutable\"`"
        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
      else
        javaExecutable="`readlink -f \"$javaExecutable\"`"
      fi
      javaHome="`dirname \"$javaExecutable\"`"
      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
      JAVA_HOME="$javaHome"
      export JAVA_HOME
    fi
  fi
fi

if [ -z "$JAVACMD" ] ; then
  if [ -n "$JAVA_HOME"  ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
    else
      JAVACMD="$JAVA_HOME/bin/java"
    fi
  else
    JAVACMD="`which java`"
  fi
fi

if [ ! -x "$JAVACMD" ] ; then
  echo "Error: JAVA_HOME is not defined correctly." >&2
  echo "  We cannot execute $JAVACMD" >&2
  exit 1
fi

if [ -z "$JAVA_HOME" ] ; then
  echo "Warning: JAVA_HOME environment variable is not set."
fi

CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher

# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {

  if [ -z "$1" ]
  then
    echo "Path not specified to find_maven_basedir"
    return 1
  fi

  basedir="$1"
  wdir="$1"
  while [ "$wdir" != '/' ] ; do
    if [ -d "$wdir"/.mvn ] ; then
      basedir=$wdir
      break
    fi
    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
    if [ -d "${wdir}" ]; then
      wdir=`cd "$wdir/.."; pwd`
    fi
    # end of workaround
  done
  echo "${basedir}"
}

# concatenates all lines of a file
concat_lines() {
  if [ -f "$1" ]; then
    echo "$(tr -s '\n' ' ' < "$1")"
  fi
}

BASE_DIR=`find_maven_basedir "$(pwd)"`
if [ -z "$BASE_DIR" ]; then
  exit 1;
fi

##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Found .mvn/wrapper/maven-wrapper.jar"
    fi
else
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
    fi
    jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
    while IFS="=" read key value; do
      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
      esac
    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Downloading from: $jarUrl"
    fi
    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"

    if command -v wget > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found wget ... using wget"
        fi
        wget "$jarUrl" -O "$wrapperJarPath"
    elif command -v curl > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found curl ... using curl"
        fi
        curl -o "$wrapperJarPath" "$jarUrl"
    else
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Falling back to using Java to download"
        fi
        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
        if [ -e "$javaClass" ]; then
            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Compiling MavenWrapperDownloader.java ..."
                fi
                # Compiling the Java class
                ("$JAVA_HOME/bin/javac" "$javaClass")
            fi
            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                # Running the downloader
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Running MavenWrapperDownloader.java ..."
                fi
                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
            fi
        fi
    fi
fi
##########################################################################################
# End of extension
##########################################################################################

export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
if [ "$MVNW_VERBOSE" = true ]; then
  echo $MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"

# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --path --windows "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
fi

WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

exec "$JAVACMD" \
  $MAVEN_OPTS \
  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"


================================================
FILE: activemq-demo/mvnw.cmd
================================================
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements.  See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership.  The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License.  You may obtain a copy of the License at
@REM
@REM    https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied.  See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------

@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM     e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------

@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%

@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")

@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre

@setlocal

set ERROR_CODE=0

@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal

@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome

echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init

echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

@REM ==== END VALIDATION ====

:init

@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.

set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir

set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir

:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir

:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"

:endDetectBaseDir

IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig

@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%

:endReadAdditionalConfig

SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
FOR /F "tokens=1,2 delims==" %%A IN (%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties) DO (
	IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B 
)

@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
    echo Found %WRAPPER_JAR%
) else (
    echo Couldn't find %WRAPPER_JAR%, downloading it ...
	echo Downloading from: %DOWNLOAD_URL%
    powershell -Command "(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"
    echo Finished downloading %WRAPPER_JAR%
)
@REM End of extension

%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end

:error
set ERROR_CODE=1

:end
@endlocal & set ERROR_CODE=%ERROR_CODE%

if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost

@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause

if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%

exit /B %ERROR_CODE%


================================================
FILE: activemq-demo/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.8.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>


================================================
FILE: activemq-demo/src/main/java/com/example/demo/DemoApplication.java
================================================
package com.example.demo;

import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

import javax.jms.Queue;

@SpringBootApplication
public class DemoApplication {




    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}


================================================
FILE: activemq-demo/src/main/java/com/example/demo/config/ActivemqConfig.java
================================================
package com.example.demo.config;

import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.command.ActiveMQTopic;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.jms.Queue;
import javax.jms.Topic;

/**
 * ActivemqConfig配置类
 */
@Configuration
public class ActivemqConfig {

/**
 * 点对点
 */
@Bean
public Queue queue() {
    return new ActiveMQQueue("active.queue");
}

/**
 * 发布/订阅
 */
@Bean
public Topic topic() {
    return new ActiveMQTopic("active.topic");
}

}


================================================
FILE: activemq-demo/src/main/java/com/example/demo/controller/QueueCustomerController.java
================================================
package com.example.demo.controller;

import org.springframework.jms.annotation.JmsListener;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class QueueCustomerController {
/*
 * 监听和接收  队列消息
 */
@JmsListener(destination="active.queue")
public void readActiveQueue(String message) {
    System.out.println("接受到:" + message);
}
}

================================================
FILE: activemq-demo/src/main/java/com/example/demo/controller/SendController.java
================================================
package com.example.demo.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.jms.Queue;
import javax.jms.Topic;
import java.util.UUID;

/**
 * 消息生产者
 */
@RestController
public class SendController {

    @Autowired
    private JmsMessagingTemplate jmsMessagingTemplate;

    @Autowired
    private Queue queue;

    @Autowired
    private Topic topic;

/*
 * 发送 队列消息
 */
@RequestMapping("/sendQueue")
public String sendQueue() {
    String message = UUID.randomUUID().toString();
    // 指定消息发送的目的地及内容
    this.jmsMessagingTemplate.convertAndSend(this.queue, message);
    return "消息发送成功!message=" + message;
}

/*
 * 发送 主题消息
 */
@RequestMapping("/sendTopic")
public String sendTopic() {
    String message = UUID.randomUUID().toString();
    // 指定消息发送的目的地及内容
    this.jmsMessagingTemplate.convertAndSend(this.topic, message);
    return "消息发送成功!message=" + message;
}

}


================================================
FILE: activemq-demo/src/main/java/com/example/demo/controller/TopicCustomerController.java
================================================
package com.example.demo.controller;

import org.springframework.jms.annotation.JmsListener;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TopicCustomerController {
/*
 * 监听和接收  主题消息
 */
@JmsListener(destination = "active.topic")
public void readActiveTopic1(String message) {
    System.out.println("Customer1接受到:" + message);
}

/*
 * 监听和接收  主题消息
 */
@JmsListener(destination = "active.topic")
public void readActiveTopic2(String message) {
    System.out.println("Customer2接受到:" + message);
}
}

================================================
FILE: activemq-demo/src/main/resources/application.properties
================================================
#ӵַ
spring.activemq.broker-url=tcp://192.168.0.1:61616
#ǵԵ㣨queueô˴ĬӦfalseģôһΪtrue
spring.jms.pub-sub-domain=true


================================================
FILE: activemq-demo/src/test/java/com/example/demo/DemoApplicationTests.java
================================================
package com.example.demo;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {

    @Test
    public void contextLoads() {
    }

}


================================================
FILE: exception-demo/.gitignore
================================================
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/

### VS Code ###
.vscode/


================================================
FILE: exception-demo/.mvn/wrapper/MavenWrapperDownloader.java
================================================
/*
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
*/

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.util.Properties;

public class MavenWrapperDownloader {

    /**
     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
     */
    private static final String DEFAULT_DOWNLOAD_URL =
            "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar";

    /**
     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
     * use instead of the default one.
     */
    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
            ".mvn/wrapper/maven-wrapper.properties";

    /**
     * Path where the maven-wrapper.jar will be saved to.
     */
    private static final String MAVEN_WRAPPER_JAR_PATH =
            ".mvn/wrapper/maven-wrapper.jar";

    /**
     * Name of the property which should be used to override the default download url for the wrapper.
     */
    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";

    public static void main(String args[]) {
        System.out.println("- Downloader started");
        File baseDirectory = new File(args[0]);
        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());

        // If the maven-wrapper.properties exists, read it and check if it contains a custom
        // wrapperUrl parameter.
        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
        String url = DEFAULT_DOWNLOAD_URL;
        if (mavenWrapperPropertyFile.exists()) {
            FileInputStream mavenWrapperPropertyFileInputStream = null;
            try {
                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
                Properties mavenWrapperProperties = new Properties();
                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
            } catch (IOException e) {
                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
            } finally {
                try {
                    if (mavenWrapperPropertyFileInputStream != null) {
                        mavenWrapperPropertyFileInputStream.close();
                    }
                } catch (IOException e) {
                    // Ignore ...
                }
            }
        }
        System.out.println("- Downloading from: : " + url);

        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
        if (!outputFile.getParentFile().exists()) {
            if (!outputFile.getParentFile().mkdirs()) {
                System.out.println(
                        "- ERROR creating output direcrory '" + outputFile.getParentFile().getAbsolutePath() + "'");
            }
        }
        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
        try {
            downloadFileFromURL(url, outputFile);
            System.out.println("Done");
            System.exit(0);
        } catch (Throwable e) {
            System.out.println("- Error downloading");
            e.printStackTrace();
            System.exit(1);
        }
    }

    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
        URL website = new URL(urlString);
        ReadableByteChannel rbc;
        rbc = Channels.newChannel(website.openStream());
        FileOutputStream fos = new FileOutputStream(destination);
        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
        fos.close();
        rbc.close();
    }

}


================================================
FILE: exception-demo/.mvn/wrapper/maven-wrapper.properties
================================================
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip


================================================
FILE: exception-demo/mvnw
================================================
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#    https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------

# ----------------------------------------------------------------------------
# Maven2 Start Up Batch script
#
# Required ENV vars:
# ------------------
#   JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
#   M2_HOME - location of maven2's installed home dir
#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
#     e.g. to debug Maven itself, use
#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------

if [ -z "$MAVEN_SKIP_RC" ] ; then

  if [ -f /etc/mavenrc ] ; then
    . /etc/mavenrc
  fi

  if [ -f "$HOME/.mavenrc" ] ; then
    . "$HOME/.mavenrc"
  fi

fi

# OS specific support.  $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
  CYGWIN*) cygwin=true ;;
  MINGW*) mingw=true;;
  Darwin*) darwin=true
    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
    if [ -z "$JAVA_HOME" ]; then
      if [ -x "/usr/libexec/java_home" ]; then
        export JAVA_HOME="`/usr/libexec/java_home`"
      else
        export JAVA_HOME="/Library/Java/Home"
      fi
    fi
    ;;
esac

if [ -z "$JAVA_HOME" ] ; then
  if [ -r /etc/gentoo-release ] ; then
    JAVA_HOME=`java-config --jre-home`
  fi
fi

if [ -z "$M2_HOME" ] ; then
  ## resolve links - $0 may be a link to maven's home
  PRG="$0"

  # need this for relative symlinks
  while [ -h "$PRG" ] ; do
    ls=`ls -ld "$PRG"`
    link=`expr "$ls" : '.*-> \(.*\)$'`
    if expr "$link" : '/.*' > /dev/null; then
      PRG="$link"
    else
      PRG="`dirname "$PRG"`/$link"
    fi
  done

  saveddir=`pwd`

  M2_HOME=`dirname "$PRG"`/..

  # make it fully qualified
  M2_HOME=`cd "$M2_HOME" && pwd`

  cd "$saveddir"
  # echo Using m2 at $M2_HOME
fi

# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --unix "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi

# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME="`(cd "$M2_HOME"; pwd)`"
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
  # TODO classpath?
fi

if [ -z "$JAVA_HOME" ]; then
  javaExecutable="`which javac`"
  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
    # readlink(1) is not available as standard on Solaris 10.
    readLink=`which readlink`
    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
      if $darwin ; then
        javaHome="`dirname \"$javaExecutable\"`"
        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
      else
        javaExecutable="`readlink -f \"$javaExecutable\"`"
      fi
      javaHome="`dirname \"$javaExecutable\"`"
      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
      JAVA_HOME="$javaHome"
      export JAVA_HOME
    fi
  fi
fi

if [ -z "$JAVACMD" ] ; then
  if [ -n "$JAVA_HOME"  ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
    else
      JAVACMD="$JAVA_HOME/bin/java"
    fi
  else
    JAVACMD="`which java`"
  fi
fi

if [ ! -x "$JAVACMD" ] ; then
  echo "Error: JAVA_HOME is not defined correctly." >&2
  echo "  We cannot execute $JAVACMD" >&2
  exit 1
fi

if [ -z "$JAVA_HOME" ] ; then
  echo "Warning: JAVA_HOME environment variable is not set."
fi

CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher

# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {

  if [ -z "$1" ]
  then
    echo "Path not specified to find_maven_basedir"
    return 1
  fi

  basedir="$1"
  wdir="$1"
  while [ "$wdir" != '/' ] ; do
    if [ -d "$wdir"/.mvn ] ; then
      basedir=$wdir
      break
    fi
    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
    if [ -d "${wdir}" ]; then
      wdir=`cd "$wdir/.."; pwd`
    fi
    # end of workaround
  done
  echo "${basedir}"
}

# concatenates all lines of a file
concat_lines() {
  if [ -f "$1" ]; then
    echo "$(tr -s '\n' ' ' < "$1")"
  fi
}

BASE_DIR=`find_maven_basedir "$(pwd)"`
if [ -z "$BASE_DIR" ]; then
  exit 1;
fi

##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Found .mvn/wrapper/maven-wrapper.jar"
    fi
else
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
    fi
    jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
    while IFS="=" read key value; do
      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
      esac
    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Downloading from: $jarUrl"
    fi
    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"

    if command -v wget > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found wget ... using wget"
        fi
        wget "$jarUrl" -O "$wrapperJarPath"
    elif command -v curl > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found curl ... using curl"
        fi
        curl -o "$wrapperJarPath" "$jarUrl"
    else
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Falling back to using Java to download"
        fi
        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
        if [ -e "$javaClass" ]; then
            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Compiling MavenWrapperDownloader.java ..."
                fi
                # Compiling the Java class
                ("$JAVA_HOME/bin/javac" "$javaClass")
            fi
            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                # Running the downloader
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Running MavenWrapperDownloader.java ..."
                fi
                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
            fi
        fi
    fi
fi
##########################################################################################
# End of extension
##########################################################################################

export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
if [ "$MVNW_VERBOSE" = true ]; then
  echo $MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"

# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --path --windows "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
fi

WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

exec "$JAVACMD" \
  $MAVEN_OPTS \
  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"


================================================
FILE: exception-demo/mvnw.cmd
================================================
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements.  See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership.  The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License.  You may obtain a copy of the License at
@REM
@REM    https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied.  See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------

@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM     e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------

@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%

@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")

@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre

@setlocal

set ERROR_CODE=0

@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal

@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome

echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init

echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

@REM ==== END VALIDATION ====

:init

@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.

set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir

set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir

:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir

:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"

:endDetectBaseDir

IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig

@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%

:endReadAdditionalConfig

SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
FOR /F "tokens=1,2 delims==" %%A IN (%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties) DO (
	IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B 
)

@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
    echo Found %WRAPPER_JAR%
) else (
    echo Couldn't find %WRAPPER_JAR%, downloading it ...
	echo Downloading from: %DOWNLOAD_URL%
    powershell -Command "(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"
    echo Finished downloading %WRAPPER_JAR%
)
@REM End of extension

%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end

:error
set ERROR_CODE=1

:end
@endlocal & set ERROR_CODE=%ERROR_CODE%

if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost

@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause

if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%

exit /B %ERROR_CODE%


================================================
FILE: exception-demo/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>exception-demo</name>
    <description>统计处理异常</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>


================================================
FILE: exception-demo/src/main/java/com/example/demo/ExceptionDemoApplication.java
================================================
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ExceptionDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(ExceptionDemoApplication.class, args);
    }

}


================================================
FILE: exception-demo/src/main/java/com/example/demo/controller/DemoController.java
================================================
package com.example.demo.controller;

import com.example.demo.util.Result;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


@Controller
public class DemoController {

    /**
     * 异常情况
     */
    @ResponseBody
    @RequestMapping(value = "/testException")
    public Result testException() {
        Result result = new Result(Result.RESULT_SUCCESS, "SUCCESS");
        //异常
        Integer.parseInt("abc");
        return result;
    }

    /**
     *正常情况
     */
    @ResponseBody
    @RequestMapping(value = "/testRight")
    public Result testRight() {
        Result result = new Result(Result.RESULT_SUCCESS, "SUCCESS");
        return result;
    }

}



================================================
FILE: exception-demo/src/main/java/com/example/demo/util/GlobleExceptionHandler.java
================================================
package com.example.demo.util;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletResponse;

/**
 * 异常全局处理类
 *
 * @author
 **/
@Slf4j
@ControllerAdvice
public class GlobleExceptionHandler {

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Result handlerException(HttpServletResponse response, Exception e) throws Exception {
        log.info("异常信息", e);
        Result result = new Result(Result.RESULT_FAIL, "error :" + e.getMessage());
        return result;
    }
}


================================================
FILE: exception-demo/src/main/java/com/example/demo/util/Result.java
================================================
package com.example.demo.util;

import lombok.Data;

import java.io.Serializable;

/**
 * 封装返回类
 */
@Data
public class Result implements Serializable {

    private static final long serialVersionUID = 1L;

    public static final int RESULT_FAIL = 0;
    public static final int RESULT_SUCCESS = 1;

    //返回代码
    private Integer  code;

    //返回消息
    private String message;

    //返回对象
    private  Object data;

    public Result(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public Result(Integer code, String message, Object object) {
        this.code = code;
        this.message = message;
        this.data = object;
    }
}

================================================
FILE: exception-demo/src/main/resources/application.properties
================================================



================================================
FILE: exception-demo/src/test/java/com/example/demo/ExceptionDemoApplicationTests.java
================================================
package com.example.demo;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class ExceptionDemoApplicationTests {

    @Test
    public void contextLoads() {
    }

}


================================================
FILE: filter-demo/.gitignore
================================================
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/

### VS Code ###
.vscode/


================================================
FILE: filter-demo/.mvn/wrapper/MavenWrapperDownloader.java
================================================
/*
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
*/

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.util.Properties;

public class MavenWrapperDownloader {

    /**
     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
     */
    private static final String DEFAULT_DOWNLOAD_URL =
            "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar";

    /**
     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
     * use instead of the default one.
     */
    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
            ".mvn/wrapper/maven-wrapper.properties";

    /**
     * Path where the maven-wrapper.jar will be saved to.
     */
    private static final String MAVEN_WRAPPER_JAR_PATH =
            ".mvn/wrapper/maven-wrapper.jar";

    /**
     * Name of the property which should be used to override the default download url for the wrapper.
     */
    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";

    public static void main(String args[]) {
        System.out.println("- Downloader started");
        File baseDirectory = new File(args[0]);
        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());

        // If the maven-wrapper.properties exists, read it and check if it contains a custom
        // wrapperUrl parameter.
        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
        String url = DEFAULT_DOWNLOAD_URL;
        if (mavenWrapperPropertyFile.exists()) {
            FileInputStream mavenWrapperPropertyFileInputStream = null;
            try {
                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
                Properties mavenWrapperProperties = new Properties();
                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
            } catch (IOException e) {
                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
            } finally {
                try {
                    if (mavenWrapperPropertyFileInputStream != null) {
                        mavenWrapperPropertyFileInputStream.close();
                    }
                } catch (IOException e) {
                    // Ignore ...
                }
            }
        }
        System.out.println("- Downloading from: : " + url);

        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
        if (!outputFile.getParentFile().exists()) {
            if (!outputFile.getParentFile().mkdirs()) {
                System.out.println(
                        "- ERROR creating output direcrory '" + outputFile.getParentFile().getAbsolutePath() + "'");
            }
        }
        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
        try {
            downloadFileFromURL(url, outputFile);
            System.out.println("Done");
            System.exit(0);
        } catch (Throwable e) {
            System.out.println("- Error downloading");
            e.printStackTrace();
            System.exit(1);
        }
    }

    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
        URL website = new URL(urlString);
        ReadableByteChannel rbc;
        rbc = Channels.newChannel(website.openStream());
        FileOutputStream fos = new FileOutputStream(destination);
        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
        fos.close();
        rbc.close();
    }

}


================================================
FILE: filter-demo/.mvn/wrapper/maven-wrapper.properties
================================================
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip


================================================
FILE: filter-demo/mvnw
================================================
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#    https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------

# ----------------------------------------------------------------------------
# Maven2 Start Up Batch script
#
# Required ENV vars:
# ------------------
#   JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
#   M2_HOME - location of maven2's installed home dir
#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
#     e.g. to debug Maven itself, use
#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------

if [ -z "$MAVEN_SKIP_RC" ] ; then

  if [ -f /etc/mavenrc ] ; then
    . /etc/mavenrc
  fi

  if [ -f "$HOME/.mavenrc" ] ; then
    . "$HOME/.mavenrc"
  fi

fi

# OS specific support.  $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
  CYGWIN*) cygwin=true ;;
  MINGW*) mingw=true;;
  Darwin*) darwin=true
    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
    if [ -z "$JAVA_HOME" ]; then
      if [ -x "/usr/libexec/java_home" ]; then
        export JAVA_HOME="`/usr/libexec/java_home`"
      else
        export JAVA_HOME="/Library/Java/Home"
      fi
    fi
    ;;
esac

if [ -z "$JAVA_HOME" ] ; then
  if [ -r /etc/gentoo-release ] ; then
    JAVA_HOME=`java-config --jre-home`
  fi
fi

if [ -z "$M2_HOME" ] ; then
  ## resolve links - $0 may be a link to maven's home
  PRG="$0"

  # need this for relative symlinks
  while [ -h "$PRG" ] ; do
    ls=`ls -ld "$PRG"`
    link=`expr "$ls" : '.*-> \(.*\)$'`
    if expr "$link" : '/.*' > /dev/null; then
      PRG="$link"
    else
      PRG="`dirname "$PRG"`/$link"
    fi
  done

  saveddir=`pwd`

  M2_HOME=`dirname "$PRG"`/..

  # make it fully qualified
  M2_HOME=`cd "$M2_HOME" && pwd`

  cd "$saveddir"
  # echo Using m2 at $M2_HOME
fi

# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --unix "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi

# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME="`(cd "$M2_HOME"; pwd)`"
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
  # TODO classpath?
fi

if [ -z "$JAVA_HOME" ]; then
  javaExecutable="`which javac`"
  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
    # readlink(1) is not available as standard on Solaris 10.
    readLink=`which readlink`
    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
      if $darwin ; then
        javaHome="`dirname \"$javaExecutable\"`"
        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
      else
        javaExecutable="`readlink -f \"$javaExecutable\"`"
      fi
      javaHome="`dirname \"$javaExecutable\"`"
      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
      JAVA_HOME="$javaHome"
      export JAVA_HOME
    fi
  fi
fi

if [ -z "$JAVACMD" ] ; then
  if [ -n "$JAVA_HOME"  ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
    else
      JAVACMD="$JAVA_HOME/bin/java"
    fi
  else
    JAVACMD="`which java`"
  fi
fi

if [ ! -x "$JAVACMD" ] ; then
  echo "Error: JAVA_HOME is not defined correctly." >&2
  echo "  We cannot execute $JAVACMD" >&2
  exit 1
fi

if [ -z "$JAVA_HOME" ] ; then
  echo "Warning: JAVA_HOME environment variable is not set."
fi

CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher

# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {

  if [ -z "$1" ]
  then
    echo "Path not specified to find_maven_basedir"
    return 1
  fi

  basedir="$1"
  wdir="$1"
  while [ "$wdir" != '/' ] ; do
    if [ -d "$wdir"/.mvn ] ; then
      basedir=$wdir
      break
    fi
    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
    if [ -d "${wdir}" ]; then
      wdir=`cd "$wdir/.."; pwd`
    fi
    # end of workaround
  done
  echo "${basedir}"
}

# concatenates all lines of a file
concat_lines() {
  if [ -f "$1" ]; then
    echo "$(tr -s '\n' ' ' < "$1")"
  fi
}

BASE_DIR=`find_maven_basedir "$(pwd)"`
if [ -z "$BASE_DIR" ]; then
  exit 1;
fi

##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Found .mvn/wrapper/maven-wrapper.jar"
    fi
else
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
    fi
    jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
    while IFS="=" read key value; do
      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
      esac
    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Downloading from: $jarUrl"
    fi
    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"

    if command -v wget > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found wget ... using wget"
        fi
        wget "$jarUrl" -O "$wrapperJarPath"
    elif command -v curl > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found curl ... using curl"
        fi
        curl -o "$wrapperJarPath" "$jarUrl"
    else
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Falling back to using Java to download"
        fi
        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
        if [ -e "$javaClass" ]; then
            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Compiling MavenWrapperDownloader.java ..."
                fi
                # Compiling the Java class
                ("$JAVA_HOME/bin/javac" "$javaClass")
            fi
            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                # Running the downloader
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Running MavenWrapperDownloader.java ..."
                fi
                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
            fi
        fi
    fi
fi
##########################################################################################
# End of extension
##########################################################################################

export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
if [ "$MVNW_VERBOSE" = true ]; then
  echo $MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"

# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --path --windows "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
fi

WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

exec "$JAVACMD" \
  $MAVEN_OPTS \
  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"


================================================
FILE: filter-demo/mvnw.cmd
================================================
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements.  See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership.  The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License.  You may obtain a copy of the License at
@REM
@REM    https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied.  See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------

@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM     e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------

@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%

@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")

@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre

@setlocal

set ERROR_CODE=0

@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal

@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome

echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init

echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

@REM ==== END VALIDATION ====

:init

@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.

set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir

set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir

:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir

:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"

:endDetectBaseDir

IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig

@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%

:endReadAdditionalConfig

SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
FOR /F "tokens=1,2 delims==" %%A IN (%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties) DO (
	IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B 
)

@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
    echo Found %WRAPPER_JAR%
) else (
    echo Couldn't find %WRAPPER_JAR%, downloading it ...
	echo Downloading from: %DOWNLOAD_URL%
    powershell -Command "(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"
    echo Finished downloading %WRAPPER_JAR%
)
@REM End of extension

%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end

:error
set ERROR_CODE=1

:end
@endlocal & set ERROR_CODE=%ERROR_CODE%

if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost

@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause

if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%

exit /B %ERROR_CODE%


================================================
FILE: filter-demo/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>


================================================
FILE: filter-demo/src/main/java/com/example/demo/DemoApplication.java
================================================
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;

@SpringBootApplication
@ServletComponentScan(basePackages = "com.example.demo.filter")
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}


================================================
FILE: filter-demo/src/main/java/com/example/demo/config/WebConfig.java
================================================
//package com.example.demo.config;
//
//import com.example.demo.filter.MyFilter2;
//import org.springframework.boot.web.servlet.FilterRegistrationBean;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//
///**
// *
// */
//@Configuration
//public class WebConfig {
//
//    @Bean
//    public FilterRegistrationBean testFilterRegistration() {
//        FilterRegistrationBean registration = new FilterRegistrationBean(new MyFilter2());
//        registration.addUrlPatterns("/test"); //
//        registration.setName("myFilter2");
//        return registration;
//    }
//}


================================================
FILE: filter-demo/src/main/java/com/example/demo/controller/DemoController.java
================================================
package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


@Controller
public class DemoController {


    /**
     * test
     */
    @ResponseBody
    @RequestMapping(value = "/test")
    public String test() {
        return "OK";
    }

}



================================================
FILE: filter-demo/src/main/java/com/example/demo/filter/MyFilter1.java
================================================
package com.example.demo.filter;

import lombok.extern.slf4j.Slf4j;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;

@Slf4j
@WebFilter(filterName = "myFilter1", urlPatterns = "/test")
public class MyFilter1 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        log.info(filterConfig.getFilterName() + " init");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
        log.info("myFilter1 begin");
        try {
            log.info("业务方法执行");
            chain.doFilter(request, response);
        } catch (Exception e) {
            log.error("error!", e);
        }
        log.info("myFilter1 end");
    }

    @Override
    public void destroy() {
    }
}

================================================
FILE: filter-demo/src/main/java/com/example/demo/filter/MyFilter2.java
================================================
//package com.example.demo.filter;
//
//import lombok.extern.slf4j.Slf4j;
//
//import javax.servlet.*;
//import javax.servlet.annotation.WebFilter;
//@Slf4j
//public class MyFilter2 implements Filter {
//    @Override
//    public void init(FilterConfig filterConfig) throws ServletException {
//        log.info(filterConfig.getFilterName() + " init");
//    }
//
//    @Override
//    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
//        log.info("myFilter2 begin");
//        try {
//            log.info("业务方法执行");
//            chain.doFilter(request, response);
//        } catch (Exception e) {
//            log.error("error!", e);
//        }
//        log.info("myFilter2 end");
//    }
//
//    @Override
//    public void destroy() {
//    }
//}

================================================
FILE: filter-demo/src/main/resources/application.properties
================================================



================================================
FILE: filter-demo/src/test/java/com/example/demo/DemoApplicationTests.java
================================================
package com.example.demo;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {

    @Test
    public void contextLoads() {
    }

}


================================================
FILE: jpa-demo/.gitignore
================================================
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/

### VS Code ###
.vscode/


================================================
FILE: jpa-demo/.mvn/wrapper/MavenWrapperDownloader.java
================================================
/*
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
*/

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.util.Properties;

public class MavenWrapperDownloader {

    /**
     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
     */
    private static final String DEFAULT_DOWNLOAD_URL =
            "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar";

    /**
     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
     * use instead of the default one.
     */
    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
            ".mvn/wrapper/maven-wrapper.properties";

    /**
     * Path where the maven-wrapper.jar will be saved to.
     */
    private static final String MAVEN_WRAPPER_JAR_PATH =
            ".mvn/wrapper/maven-wrapper.jar";

    /**
     * Name of the property which should be used to override the default download url for the wrapper.
     */
    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";

    public static void main(String args[]) {
        System.out.println("- Downloader started");
        File baseDirectory = new File(args[0]);
        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());

        // If the maven-wrapper.properties exists, read it and check if it contains a custom
        // wrapperUrl parameter.
        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
        String url = DEFAULT_DOWNLOAD_URL;
        if (mavenWrapperPropertyFile.exists()) {
            FileInputStream mavenWrapperPropertyFileInputStream = null;
            try {
                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
                Properties mavenWrapperProperties = new Properties();
                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
            } catch (IOException e) {
                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
            } finally {
                try {
                    if (mavenWrapperPropertyFileInputStream != null) {
                        mavenWrapperPropertyFileInputStream.close();
                    }
                } catch (IOException e) {
                    // Ignore ...
                }
            }
        }
        System.out.println("- Downloading from: : " + url);

        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
        if (!outputFile.getParentFile().exists()) {
            if (!outputFile.getParentFile().mkdirs()) {
                System.out.println(
                        "- ERROR creating output direcrory '" + outputFile.getParentFile().getAbsolutePath() + "'");
            }
        }
        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
        try {
            downloadFileFromURL(url, outputFile);
            System.out.println("Done");
            System.exit(0);
        } catch (Throwable e) {
            System.out.println("- Error downloading");
            e.printStackTrace();
            System.exit(1);
        }
    }

    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
        URL website = new URL(urlString);
        ReadableByteChannel rbc;
        rbc = Channels.newChannel(website.openStream());
        FileOutputStream fos = new FileOutputStream(destination);
        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
        fos.close();
        rbc.close();
    }

}


================================================
FILE: jpa-demo/.mvn/wrapper/maven-wrapper.properties
================================================
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip


================================================
FILE: jpa-demo/mvnw
================================================
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#    https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------

# ----------------------------------------------------------------------------
# Maven2 Start Up Batch script
#
# Required ENV vars:
# ------------------
#   JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
#   M2_HOME - location of maven2's installed home dir
#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
#     e.g. to debug Maven itself, use
#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------

if [ -z "$MAVEN_SKIP_RC" ] ; then

  if [ -f /etc/mavenrc ] ; then
    . /etc/mavenrc
  fi

  if [ -f "$HOME/.mavenrc" ] ; then
    . "$HOME/.mavenrc"
  fi

fi

# OS specific support.  $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
  CYGWIN*) cygwin=true ;;
  MINGW*) mingw=true;;
  Darwin*) darwin=true
    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
    if [ -z "$JAVA_HOME" ]; then
      if [ -x "/usr/libexec/java_home" ]; then
        export JAVA_HOME="`/usr/libexec/java_home`"
      else
        export JAVA_HOME="/Library/Java/Home"
      fi
    fi
    ;;
esac

if [ -z "$JAVA_HOME" ] ; then
  if [ -r /etc/gentoo-release ] ; then
    JAVA_HOME=`java-config --jre-home`
  fi
fi

if [ -z "$M2_HOME" ] ; then
  ## resolve links - $0 may be a link to maven's home
  PRG="$0"

  # need this for relative symlinks
  while [ -h "$PRG" ] ; do
    ls=`ls -ld "$PRG"`
    link=`expr "$ls" : '.*-> \(.*\)$'`
    if expr "$link" : '/.*' > /dev/null; then
      PRG="$link"
    else
      PRG="`dirname "$PRG"`/$link"
    fi
  done

  saveddir=`pwd`

  M2_HOME=`dirname "$PRG"`/..

  # make it fully qualified
  M2_HOME=`cd "$M2_HOME" && pwd`

  cd "$saveddir"
  # echo Using m2 at $M2_HOME
fi

# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --unix "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi

# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME="`(cd "$M2_HOME"; pwd)`"
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
  # TODO classpath?
fi

if [ -z "$JAVA_HOME" ]; then
  javaExecutable="`which javac`"
  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
    # readlink(1) is not available as standard on Solaris 10.
    readLink=`which readlink`
    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
      if $darwin ; then
        javaHome="`dirname \"$javaExecutable\"`"
        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
      else
        javaExecutable="`readlink -f \"$javaExecutable\"`"
      fi
      javaHome="`dirname \"$javaExecutable\"`"
      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
      JAVA_HOME="$javaHome"
      export JAVA_HOME
    fi
  fi
fi

if [ -z "$JAVACMD" ] ; then
  if [ -n "$JAVA_HOME"  ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
    else
      JAVACMD="$JAVA_HOME/bin/java"
    fi
  else
    JAVACMD="`which java`"
  fi
fi

if [ ! -x "$JAVACMD" ] ; then
  echo "Error: JAVA_HOME is not defined correctly." >&2
  echo "  We cannot execute $JAVACMD" >&2
  exit 1
fi

if [ -z "$JAVA_HOME" ] ; then
  echo "Warning: JAVA_HOME environment variable is not set."
fi

CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher

# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {

  if [ -z "$1" ]
  then
    echo "Path not specified to find_maven_basedir"
    return 1
  fi

  basedir="$1"
  wdir="$1"
  while [ "$wdir" != '/' ] ; do
    if [ -d "$wdir"/.mvn ] ; then
      basedir=$wdir
      break
    fi
    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
    if [ -d "${wdir}" ]; then
      wdir=`cd "$wdir/.."; pwd`
    fi
    # end of workaround
  done
  echo "${basedir}"
}

# concatenates all lines of a file
concat_lines() {
  if [ -f "$1" ]; then
    echo "$(tr -s '\n' ' ' < "$1")"
  fi
}

BASE_DIR=`find_maven_basedir "$(pwd)"`
if [ -z "$BASE_DIR" ]; then
  exit 1;
fi

##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Found .mvn/wrapper/maven-wrapper.jar"
    fi
else
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
    fi
    jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
    while IFS="=" read key value; do
      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
      esac
    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Downloading from: $jarUrl"
    fi
    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"

    if command -v wget > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found wget ... using wget"
        fi
        wget "$jarUrl" -O "$wrapperJarPath"
    elif command -v curl > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found curl ... using curl"
        fi
        curl -o "$wrapperJarPath" "$jarUrl"
    else
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Falling back to using Java to download"
        fi
        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
        if [ -e "$javaClass" ]; then
            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Compiling MavenWrapperDownloader.java ..."
                fi
                # Compiling the Java class
                ("$JAVA_HOME/bin/javac" "$javaClass")
            fi
            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                # Running the downloader
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Running MavenWrapperDownloader.java ..."
                fi
                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
            fi
        fi
    fi
fi
##########################################################################################
# End of extension
##########################################################################################

export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
if [ "$MVNW_VERBOSE" = true ]; then
  echo $MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"

# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --path --windows "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
fi

WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

exec "$JAVACMD" \
  $MAVEN_OPTS \
  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"


================================================
FILE: jpa-demo/mvnw.cmd
================================================
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements.  See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership.  The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License.  You may obtain a copy of the License at
@REM
@REM    https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied.  See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------

@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM     e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------

@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%

@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")

@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre

@setlocal

set ERROR_CODE=0

@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal

@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome

echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init

echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

@REM ==== END VALIDATION ====

:init

@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.

set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir

set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir

:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir

:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"

:endDetectBaseDir

IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig

@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%

:endReadAdditionalConfig

SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
FOR /F "tokens=1,2 delims==" %%A IN (%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties) DO (
	IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B 
)

@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
    echo Found %WRAPPER_JAR%
) else (
    echo Couldn't find %WRAPPER_JAR%, downloading it ...
	echo Downloading from: %DOWNLOAD_URL%
    powershell -Command "(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"
    echo Finished downloading %WRAPPER_JAR%
)
@REM End of extension

%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end

:error
set ERROR_CODE=1

:end
@endlocal & set ERROR_CODE=%ERROR_CODE%

if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost

@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause

if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%

exit /B %ERROR_CODE%


================================================
FILE: jpa-demo/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-boot-study-jpa</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>


================================================
FILE: jpa-demo/src/main/java/com/example/demo/SpringBootStudyJpaApplication.java
================================================
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootStudyJpaApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootStudyJpaApplication.class, args);
    }

}


================================================
FILE: jpa-demo/src/main/java/com/example/demo/controller/UserController.java
================================================
package com.example.demo.controller;

import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {
    @Autowired
    UserService service;

    /**
     * 根据id 查询
     */
    @RequestMapping("/getUser/{id}")
    public User getUser(@PathVariable("id") Integer id) {
        return service.getUser(id);
    }

    /**
     * 根据id 删除
     */
    @RequestMapping("/deleteUser/{id}")
    public String deleteUser(@PathVariable("id") Integer id) {
        service.deleteUser(id);
        return "删除成功!";
    }

}

================================================
FILE: jpa-demo/src/main/java/com/example/demo/entity/User.java
================================================
package com.example.demo.entity;

import javax.persistence.*;

@Entity
@Table(name = "user")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    private String name;
    private String password;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}

================================================
FILE: jpa-demo/src/main/java/com/example/demo/repository/UserRepository.java
================================================
package com.example.demo.repository;

import com.example.demo.entity.User;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;

/**
 * 注意:
 * 1.这里这里是interface,不是class
 * 2.CrudRepository里面的泛型,第一个是实体类,第二个是主键的类型
 */
public interface UserRepository extends CrudRepository<User, Integer> {

    @Query("from User where id =:id ")
    public User getUser(@Param("id") Integer id);
}

================================================
FILE: jpa-demo/src/main/java/com/example/demo/service/UserService.java
================================================
package com.example.demo.service;


import com.example.demo.entity.User;

public interface UserService {
    public User getUser(Integer id);

    public void deleteUser(Integer id);
}

================================================
FILE: jpa-demo/src/main/java/com/example/demo/service/impl/UserServiceImpl.java
================================================
package com.example.demo.service.impl;

import com.example.demo.entity.User;
import com.example.demo.repository.UserRepository;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


@Service
public class UserServiceImpl implements UserService {

    @Autowired
    UserRepository repository;
    
    @Override
    public User getUser(Integer id) {
        //有两种方式:
        //1.调用crudRepository的接口
//        return repository.findOne(id);
        //2.调用我们自己写的接口
        return repository.getUser(id);
    }

    @Override
    public void deleteUser(Integer id) {
        repository.deleteById(id);
    }

    
}

================================================
FILE: jpa-demo/src/main/resources/application.properties
================================================
#޸tomcatĬ϶˿ں
server.port=8090

#ԴϢ
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://192.168.0.1:3306/test
spring.datasource.username=root
spring.datasource.password=12345
#jpa
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jackson.serialization.indent_output=true

================================================
FILE: jpa-demo/src/test/java/com/example/demo/SpringBootStudyJpaApplicationTests.java
================================================
package com.example.demo;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootStudyJpaApplicationTests {

    @Test
    public void contextLoads() {
    }

}


================================================
FILE: pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>spring-boot-study</artifactId>
    <packaging>pom</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-boot-study</name>
    <description>Demo project for Spring Boot</description>

    <modules>
        <module>spring-boot-study-base</module>
        <module>sendmail</module>
    </modules>

</project>


================================================
FILE: qrcode/.gitignore
================================================
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/

### VS Code ###
.vscode/


================================================
FILE: qrcode/.mvn/wrapper/MavenWrapperDownloader.java
================================================
/*
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
*/

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.util.Properties;

public class MavenWrapperDownloader {

    /**
     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
     */
    private static final String DEFAULT_DOWNLOAD_URL =
            "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar";

    /**
     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
     * use instead of the default one.
     */
    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
            ".mvn/wrapper/maven-wrapper.properties";

    /**
     * Path where the maven-wrapper.jar will be saved to.
     */
    private static final String MAVEN_WRAPPER_JAR_PATH =
            ".mvn/wrapper/maven-wrapper.jar";

    /**
     * Name of the property which should be used to override the default download url for the wrapper.
     */
    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";

    public static void main(String args[]) {
        System.out.println("- Downloader started");
        File baseDirectory = new File(args[0]);
        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());

        // If the maven-wrapper.properties exists, read it and check if it contains a custom
        // wrapperUrl parameter.
        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
        String url = DEFAULT_DOWNLOAD_URL;
        if (mavenWrapperPropertyFile.exists()) {
            FileInputStream mavenWrapperPropertyFileInputStream = null;
            try {
                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
                Properties mavenWrapperProperties = new Properties();
                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
            } catch (IOException e) {
                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
            } finally {
                try {
                    if (mavenWrapperPropertyFileInputStream != null) {
                        mavenWrapperPropertyFileInputStream.close();
                    }
                } catch (IOException e) {
                    // Ignore ...
                }
            }
        }
        System.out.println("- Downloading from: : " + url);

        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
        if (!outputFile.getParentFile().exists()) {
            if (!outputFile.getParentFile().mkdirs()) {
                System.out.println(
                        "- ERROR creating output direcrory '" + outputFile.getParentFile().getAbsolutePath() + "'");
            }
        }
        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
        try {
            downloadFileFromURL(url, outputFile);
            System.out.println("Done");
            System.exit(0);
        } catch (Throwable e) {
            System.out.println("- Error downloading");
            e.printStackTrace();
            System.exit(1);
        }
    }

    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
        URL website = new URL(urlString);
        ReadableByteChannel rbc;
        rbc = Channels.newChannel(website.openStream());
        FileOutputStream fos = new FileOutputStream(destination);
        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
        fos.close();
        rbc.close();
    }

}


================================================
FILE: qrcode/.mvn/wrapper/maven-wrapper.properties
================================================
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip


================================================
FILE: qrcode/mvnw
================================================
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#    https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------

# ----------------------------------------------------------------------------
# Maven2 Start Up Batch script
#
# Required ENV vars:
# ------------------
#   JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
#   M2_HOME - location of maven2's installed home dir
#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
#     e.g. to debug Maven itself, use
#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------

if [ -z "$MAVEN_SKIP_RC" ] ; then

  if [ -f /etc/mavenrc ] ; then
    . /etc/mavenrc
  fi

  if [ -f "$HOME/.mavenrc" ] ; then
    . "$HOME/.mavenrc"
  fi

fi

# OS specific support.  $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
  CYGWIN*) cygwin=true ;;
  MINGW*) mingw=true;;
  Darwin*) darwin=true
    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
    if [ -z "$JAVA_HOME" ]; then
      if [ -x "/usr/libexec/java_home" ]; then
        export JAVA_HOME="`/usr/libexec/java_home`"
      else
        export JAVA_HOME="/Library/Java/Home"
      fi
    fi
    ;;
esac

if [ -z "$JAVA_HOME" ] ; then
  if [ -r /etc/gentoo-release ] ; then
    JAVA_HOME=`java-config --jre-home`
  fi
fi

if [ -z "$M2_HOME" ] ; then
  ## resolve links - $0 may be a link to maven's home
  PRG="$0"

  # need this for relative symlinks
  while [ -h "$PRG" ] ; do
    ls=`ls -ld "$PRG"`
    link=`expr "$ls" : '.*-> \(.*\)$'`
    if expr "$link" : '/.*' > /dev/null; then
      PRG="$link"
    else
      PRG="`dirname "$PRG"`/$link"
    fi
  done

  saveddir=`pwd`

  M2_HOME=`dirname "$PRG"`/..

  # make it fully qualified
  M2_HOME=`cd "$M2_HOME" && pwd`

  cd "$saveddir"
  # echo Using m2 at $M2_HOME
fi

# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --unix "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi

# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME="`(cd "$M2_HOME"; pwd)`"
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
  # TODO classpath?
fi

if [ -z "$JAVA_HOME" ]; then
  javaExecutable="`which javac`"
  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
    # readlink(1) is not available as standard on Solaris 10.
    readLink=`which readlink`
    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
      if $darwin ; then
        javaHome="`dirname \"$javaExecutable\"`"
        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
      else
        javaExecutable="`readlink -f \"$javaExecutable\"`"
      fi
      javaHome="`dirname \"$javaExecutable\"`"
      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
      JAVA_HOME="$javaHome"
      export JAVA_HOME
    fi
  fi
fi

if [ -z "$JAVACMD" ] ; then
  if [ -n "$JAVA_HOME"  ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
    else
      JAVACMD="$JAVA_HOME/bin/java"
    fi
  else
    JAVACMD="`which java`"
  fi
fi

if [ ! -x "$JAVACMD" ] ; then
  echo "Error: JAVA_HOME is not defined correctly." >&2
  echo "  We cannot execute $JAVACMD" >&2
  exit 1
fi

if [ -z "$JAVA_HOME" ] ; then
  echo "Warning: JAVA_HOME environment variable is not set."
fi

CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher

# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {

  if [ -z "$1" ]
  then
    echo "Path not specified to find_maven_basedir"
    return 1
  fi

  basedir="$1"
  wdir="$1"
  while [ "$wdir" != '/' ] ; do
    if [ -d "$wdir"/.mvn ] ; then
      basedir=$wdir
      break
    fi
    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
    if [ -d "${wdir}" ]; then
      wdir=`cd "$wdir/.."; pwd`
    fi
    # end of workaround
  done
  echo "${basedir}"
}

# concatenates all lines of a file
concat_lines() {
  if [ -f "$1" ]; then
    echo "$(tr -s '\n' ' ' < "$1")"
  fi
}

BASE_DIR=`find_maven_basedir "$(pwd)"`
if [ -z "$BASE_DIR" ]; then
  exit 1;
fi

##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Found .mvn/wrapper/maven-wrapper.jar"
    fi
else
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
    fi
    jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
    while IFS="=" read key value; do
      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
      esac
    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Downloading from: $jarUrl"
    fi
    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"

    if command -v wget > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found wget ... using wget"
        fi
        wget "$jarUrl" -O "$wrapperJarPath"
    elif command -v curl > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found curl ... using curl"
        fi
        curl -o "$wrapperJarPath" "$jarUrl"
    else
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Falling back to using Java to download"
        fi
        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
        if [ -e "$javaClass" ]; then
            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Compiling MavenWrapperDownloader.java ..."
                fi
                # Compiling the Java class
                ("$JAVA_HOME/bin/javac" "$javaClass")
            fi
            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                # Running the downloader
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Running MavenWrapperDownloader.java ..."
                fi
                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
            fi
        fi
    fi
fi
##########################################################################################
# End of extension
##########################################################################################

export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
if [ "$MVNW_VERBOSE" = true ]; then
  echo $MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"

# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --path --windows "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
fi

WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

exec "$JAVACMD" \
  $MAVEN_OPTS \
  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"


================================================
FILE: qrcode/mvnw.cmd
================================================
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements.  See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership.  The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License.  You may obtain a copy of the License at
@REM
@REM    https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied.  See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------

@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM     e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------

@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%

@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")

@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre

@setlocal

set ERROR_CODE=0

@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal

@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome

echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init

echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

@REM ==== END VALIDATION ====

:init

@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.

set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir

set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir

:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir

:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"

:endDetectBaseDir

IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig

@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%

:endReadAdditionalConfig

SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
FOR /F "tokens=1,2 delims==" %%A IN (%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties) DO (
	IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B 
)

@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
    echo Found %WRAPPER_JAR%
) else (
    echo Couldn't find %WRAPPER_JAR%, downloading it ...
	echo Downloading from: %DOWNLOAD_URL%
    powershell -Command "(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"
    echo Finished downloading %WRAPPER_JAR%
)
@REM End of extension

%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end

:error
set ERROR_CODE=1

:end
@endlocal & set ERROR_CODE=%ERROR_CODE%

if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost

@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause

if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%

exit /B %ERROR_CODE%


================================================
FILE: qrcode/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>qrcode</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- 二维码支持包 -->
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>core</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>javase</artifactId>
            <version>3.2.0</version>
        </dependency>


    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>


================================================
FILE: qrcode/src/main/java/com/example/demo/QrcodeApplication.java
================================================
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class QrcodeApplication {

    public static void main(String[] args) {
        SpringApplication.run(QrcodeApplication.class, args);
    }

}


================================================
FILE: qrcode/src/main/java/com/example/demo/controller/QrCodeController.java
================================================
package com.example.demo.controller;

import com.example.demo.util.QRCodeUtil;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.File;


@Controller
public class QrCodeController {


    /**
     * 根据 url 生成 普通二维码
     */
    @RequestMapping(value = "/createCommonQRCode")
    public void createCommonQRCode(HttpServletResponse response, String url) throws Exception {
        ServletOutputStream stream = null;
        try {
            stream = response.getOutputStream();
            //使用工具类生成二维码
            QRCodeUtil.encode(url, stream);
        } catch (Exception e) {
            e.getStackTrace();
        } finally {
            if (stream != null) {
                stream.flush();
                stream.close();
            }
        }
    }

    /**
     * 根据 url 生成 带有logo二维码
     */
    @RequestMapping(value = "/createLogoQRCode")
    public void createLogoQRCode(HttpServletResponse response, String url) throws Exception {
        ServletOutputStream stream = null;
        try {
            stream = response.getOutputStream();
            String logoPath = Thread.currentThread().getContextClassLoader().getResource("").getPath()
                    + "templates" + File.separator + "logo.jpg";
            //使用工具类生成二维码
            QRCodeUtil.encode(url, logoPath, stream, true);
        } catch (Exception e) {
            e.getStackTrace();
        } finally {
            if (stream != null) {
                stream.flush();
                stream.close();
            }
        }
    }


}



================================================
FILE: qrcode/src/main/java/com/example/demo/util/QRCodeUtil.java
================================================
package com.example.demo.util;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.OutputStream;
import java.util.Hashtable;

/**
 * QRCodeUtil 生成二维码工具类
 */
public class QRCodeUtil {

    private static final String CHARSET = "utf-8";
    private static final String FORMAT_NAME = "JPG";
    // 二维码尺寸
    private static final int QRCODE_SIZE = 300;
    // LOGO宽度
    private static final int WIDTH = 60;
    // LOGO高度
    private static final int HEIGHT = 60;

    private static BufferedImage createImage(String content, String imgPath, boolean needCompress) throws Exception {
        Hashtable hints = new Hashtable();
        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
        hints.put(EncodeHintType.CHARACTER_SET, CHARSET);
        hints.put(EncodeHintType.MARGIN, 1);
        BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, QRCODE_SIZE, QRCODE_SIZE,
                hints);
        int width = bitMatrix.getWidth();
        int height = bitMatrix.getHeight();
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        for (int x = 0; x < width; x++) {
            for (int y = 0; y < height; y++) {
                image.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);
            }
        }
        if (imgPath == null || "".equals(imgPath)) {
            return image;
        }
        // 插入图片
        QRCodeUtil.insertImage(image, imgPath, needCompress);
        return image;
    }

    private static void insertImage(BufferedImage source, String imgPath, boolean needCompress) throws Exception {
        File file = new File(imgPath);
        if (!file.exists()) {
            System.err.println("" + imgPath + "   该文件不存在!");
            return;
        }
        Image src = ImageIO.read(new File(imgPath));
        int width = src.getWidth(null);
        int height = src.getHeight(null);
        if (needCompress) { // 压缩LOGO
            if (width > WIDTH) {
                width = WIDTH;
            }
            if (height > HEIGHT) {
                height = HEIGHT;
            }
            Image image = src.getScaledInstance(width, height, Image.SCALE_SMOOTH);
            BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            Graphics g = tag.getGraphics();
            g.drawImage(image, 0, 0, null); // 绘制缩小后的图
            g.dispose();
            src = image;
        }
        // 插入LOGO
        Graphics2D graph = source.createGraphics();
        int x = (QRCODE_SIZE - width) / 2;
        int y = (QRCODE_SIZE - height) / 2;
        graph.drawImage(src, x, y, width, height, null);
        Shape shape = new RoundRectangle2D.Float(x, y, width, width, 6, 6);
        graph.setStroke(new BasicStroke(3f));
        graph.draw(shape);
        graph.dispose();
    }

    public static void encode(String content, String imgPath, String destPath, boolean needCompress) throws Exception {
        BufferedImage image = QRCodeUtil.createImage(content, imgPath, needCompress);
        mkdirs(destPath);
        ImageIO.write(image, FORMAT_NAME, new File(destPath));
    }

    public static BufferedImage encode(String content, String imgPath, boolean needCompress) throws Exception {
        BufferedImage image = QRCodeUtil.createImage(content, imgPath, needCompress);
        return image;
    }

    public static void mkdirs(String destPath) {
        File file = new File(destPath);
        // 当文件夹不存在时,mkdirs会自动创建多层目录,区别于mkdir.(mkdir如果父目录不存在则会抛出异常)
        if (!file.exists() && !file.isDirectory()) {
            file.mkdirs();
        }
    }

    public static void encode(String content, String imgPath, OutputStream output, boolean needCompress)
            throws Exception {
        BufferedImage image = QRCodeUtil.createImage(content, imgPath, needCompress);
        ImageIO.write(image, FORMAT_NAME, output);
    }

    public static void encode(String content, OutputStream output) throws Exception {
        QRCodeUtil.encode(content, null, output, false);
    }
}

================================================
FILE: qrcode/src/main/resources/application.properties
================================================



================================================
FILE: qrcode/src/test/java/com/example/demo/QrcodeApplicationTests.java
================================================
package com.example.demo;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class QrcodeApplicationTests {

    @Test
    public void contextLoads() {
    }

}


================================================
FILE: sendmail/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example.mail</groupId>
    <artifactId>sendmail</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>sendmail</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>





================================================
FILE: sendmail/src/main/java/com/example/mail/sendmail/SendMailApplication.java
================================================
package com.example.mail.sendmail;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication

public class SendMailApplication {

    public static void main(String[] args) {
        //java mail发邮件是附件名过长默认会被截断,附件名显示【tcmime.29121.29517.50430.bin】,主动设为false可正常显示附件名
        System.setProperty("mail.mime.splitlongparameters", "false");
        SpringApplication.run(SendMailApplication.class, args);
    }

}


================================================
FILE: sendmail/src/main/java/com/example/mail/sendmail/controller/MailController.java
================================================
package com.example.mail.sendmail.controller;

import com.example.mail.sendmail.dto.Email;
import com.example.mail.sendmail.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.ArrayList;
import java.util.List;

/**
 * @Auther: java碎碎念
 * @Description:
 */
@Controller
public class MailController {

    @Autowired
    private MailService mailService;


    @RequestMapping(value = "/sendMail")
    public String sendEmail() {
        Email email_email = new Email();
        List<String> addressList = new ArrayList<String>();
        addressList.add("xxx@163.com");
        email_email.setToAddress(addressList);
        email_email.setSubject("java碎碎念-主题测试");// 主题
        email_email.setContent("你好!<br><br> 测试邮件发送成功!");
        // 发送邮件
        mailService.sendMail(email_email);

        return "ok";
    }
}


================================================
FILE: sendmail/src/main/java/com/example/mail/sendmail/dto/Email.java
================================================
package com.example.mail.sendmail.dto;

import java.io.File;
import java.util.List;

/**
 * Email实体类
 *
 * @Author: lifq
 */
public class Email {

    /**
     * 发件人地址(为空时自动调用配置文件中设置的发件人)
     */
//    private String fromAddress;

    /**
     * 收件人地址
     */
    private List<String> toAddress;

    /**
     * 抄送人地址
     */
    private List<String> ccAddress;

    /**
     * 密送人地址
     */
    private List<String> bccAddress;

    /**
     * 邮件主题
     */
    private String subject;

    /**
     * 邮件内容
     */
    private String content;

    /**
     * 附件
     */
    private List<File> attachments;


    public List<String> getToAddress() {

        return toAddress;
    }

    public void setToAddress(List<String> toAddress) {

        this.toAddress = toAddress;
    }

    public List<String> getCcAddress() {

        return ccAddress;
    }

    public void setCcAddress(List<String> ccAddress) {

        this.ccAddress = ccAddress;
    }

    public List<String> getBccAddress() {

        return bccAddress;
    }

    public void setBccAddress(List<String> bccAddress) {

        this.bccAddress = bccAddress;
    }

    public String getSubject() {

        return subject;
    }

    public void setSubject(String subject) {

        this.subject = subject;
    }

    public String getContent() {

        return content;
    }

    public void setContent(String content) {

        this.content = content;
    }

    public List<File> getAttachments() {

        return attachments;
    }

    public void setAttachments(List<File> attachments) {

        this.attachments = attachments;
    }

}


================================================
FILE: sendmail/src/main/java/com/example/mail/sendmail/service/MailService.java
================================================
package com.example.mail.sendmail.service;


import com.example.mail.sendmail.dto.Email;

public interface MailService {


    /**
     * 发送邮件
     *
     * @Author: lifq
     */
    public void sendMail(Email email);

}

================================================
FILE: sendmail/src/main/java/com/example/mail/sendmail/service/impl/MailServiceImpl.java
================================================
package com.example.mail.sendmail.service.impl;

import com.example.mail.sendmail.dto.Email;
import com.example.mail.sendmail.service.MailService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;

import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
import java.io.File;

/**
 * 邮件实现类
 *
 * @Auther: java碎碎念
 * @Description:
 */
@Service
public class MailServiceImpl implements MailService {


    @Autowired
    private JavaMailSender javaMailSender;

    @Value("${spring.mail.username}")
    private String mailUserName;

    Logger log = LoggerFactory.getLogger(MailServiceImpl.class);


    /**
     * 发送邮件
     *
     * @Author: java碎碎念
     */
    public void sendMail(Email email) {
        long start = System.currentTimeMillis();
        try {
            MimeMessage mimeMessage = javaMailSender.createMimeMessage();
            //true表示需要创建一个multipart message
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
            helper.setFrom(mailUserName);
            helper.setTo(email.getToAddress().toArray(new String[email.getToAddress().size()]));
            helper.setSubject(email.getSubject());
            helper.setText(email.getContent(), true);

            if (null != email.getAttachments() && email.getAttachments().size() > 0) {
                for (File curFile : email.getAttachments()) {
                    FileSystemResource file = new FileSystemResource(curFile);
                    helper.addAttachment(MimeUtility.encodeWord(file.getFilename(), "utf-8", "B"), file);
                }
            }
            log.info("邮件开始发送");
            javaMailSender.send(mimeMessage);
            long sendMillTimes = System.currentTimeMillis() - start;
            log.info("邮件发送成功,sendTimes=" + sendMillTimes);
        } catch (Exception e) {
            log.error("发送html邮件时发生异常!", e);
        }
    }

}


================================================
FILE: sendmail/src/main/resources/application.properties
================================================
spring.mail.host = smtp.163.com
spring.mail.port = 465
spring.mail.username = xxx@163.com
spring.mail.password = xxx
spring.mail.properties.mail.smtp.auth = true
spring.mail.properties.mail.smtp.timeout = 25000
spring.mail.properties.mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.starttls.enable = true
spring.mail.properties.mail.smtp.starttls.required = true

================================================
FILE: spirng-boot-kaptcha/.gitignore
================================================
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/

### VS Code ###
.vscode/


================================================
FILE: spirng-boot-kaptcha/.mvn/wrapper/MavenWrapperDownloader.java
================================================
/*
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
*/

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.util.Properties;

public class MavenWrapperDownloader {

    /**
     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
     */
    private static final String DEFAULT_DOWNLOAD_URL =
            "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar";

    /**
     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
     * use instead of the default one.
     */
    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
            ".mvn/wrapper/maven-wrapper.properties";

    /**
     * Path where the maven-wrapper.jar will be saved to.
     */
    private static final String MAVEN_WRAPPER_JAR_PATH =
            ".mvn/wrapper/maven-wrapper.jar";

    /**
     * Name of the property which should be used to override the default download url for the wrapper.
     */
    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";

    public static void main(String args[]) {
        System.out.println("- Downloader started");
        File baseDirectory = new File(args[0]);
        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());

        // If the maven-wrapper.properties exists, read it and check if it contains a custom
        // wrapperUrl parameter.
        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
        String url = DEFAULT_DOWNLOAD_URL;
        if (mavenWrapperPropertyFile.exists()) {
            FileInputStream mavenWrapperPropertyFileInputStream = null;
            try {
                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
                Properties mavenWrapperProperties = new Properties();
                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
            } catch (IOException e) {
                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
            } finally {
                try {
                    if (mavenWrapperPropertyFileInputStream != null) {
                        mavenWrapperPropertyFileInputStream.close();
                    }
                } catch (IOException e) {
                    // Ignore ...
                }
            }
        }
        System.out.println("- Downloading from: : " + url);

        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
        if (!outputFile.getParentFile().exists()) {
            if (!outputFile.getParentFile().mkdirs()) {
                System.out.println(
                        "- ERROR creating output direcrory '" + outputFile.getParentFile().getAbsolutePath() + "'");
            }
        }
        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
        try {
            downloadFileFromURL(url, outputFile);
            System.out.println("Done");
            System.exit(0);
        } catch (Throwable e) {
            System.out.println("- Error downloading");
            e.printStackTrace();
            System.exit(1);
        }
    }

    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
        URL website = new URL(urlString);
        ReadableByteChannel rbc;
        rbc = Channels.newChannel(website.openStream());
        FileOutputStream fos = new FileOutputStream(destination);
        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
        fos.close();
        rbc.close();
    }

}


================================================
FILE: spirng-boot-kaptcha/.mvn/wrapper/maven-wrapper.properties
================================================
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip


================================================
FILE: spirng-boot-kaptcha/mvnw
================================================
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#    https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------

# ----------------------------------------------------------------------------
# Maven2 Start Up Batch script
#
# Required ENV vars:
# ------------------
#   JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
#   M2_HOME - location of maven2's installed home dir
#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
#     e.g. to debug Maven itself, use
#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------

if [ -z "$MAVEN_SKIP_RC" ] ; then

  if [ -f /etc/mavenrc ] ; then
    . /etc/mavenrc
  fi

  if [ -f "$HOME/.mavenrc" ] ; then
    . "$HOME/.mavenrc"
  fi

fi

# OS specific support.  $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
  CYGWIN*) cygwin=true ;;
  MINGW*) mingw=true;;
  Darwin*) darwin=true
    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
    if [ -z "$JAVA_HOME" ]; then
      if [ -x "/usr/libexec/java_home" ]; then
        export JAVA_HOME="`/usr/libexec/java_home`"
      else
        export JAVA_HOME="/Library/Java/Home"
      fi
    fi
    ;;
esac

if [ -z "$JAVA_HOME" ] ; then
  if [ -r /etc/gentoo-release ] ; then
    JAVA_HOME=`java-config --jre-home`
  fi
fi

if [ -z "$M2_HOME" ] ; then
  ## resolve links - $0 may be a link to maven's home
  PRG="$0"

  # need this for relative symlinks
  while [ -h "$PRG" ] ; do
    ls=`ls -ld "$PRG"`
    link=`expr "$ls" : '.*-> \(.*\)$'`
    if expr "$link" : '/.*' > /dev/null; then
      PRG="$link"
    else
      PRG="`dirname "$PRG"`/$link"
    fi
  done

  saveddir=`pwd`

  M2_HOME=`dirname "$PRG"`/..

  # make it fully qualified
  M2_HOME=`cd "$M2_HOME" && pwd`

  cd "$saveddir"
  # echo Using m2 at $M2_HOME
fi

# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --unix "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi

# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME="`(cd "$M2_HOME"; pwd)`"
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
  # TODO classpath?
fi

if [ -z "$JAVA_HOME" ]; then
  javaExecutable="`which javac`"
  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
    # readlink(1) is not available as standard on Solaris 10.
    readLink=`which readlink`
    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
      if $darwin ; then
        javaHome="`dirname \"$javaExecutable\"`"
        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
      else
        javaExecutable="`readlink -f \"$javaExecutable\"`"
      fi
      javaHome="`dirname \"$javaExecutable\"`"
      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
      JAVA_HOME="$javaHome"
      export JAVA_HOME
    fi
  fi
fi

if [ -z "$JAVACMD" ] ; then
  if [ -n "$JAVA_HOME"  ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
    else
      JAVACMD="$JAVA_HOME/bin/java"
    fi
  else
    JAVACMD="`which java`"
  fi
fi

if [ ! -x "$JAVACMD" ] ; then
  echo "Error: JAVA_HOME is not defined correctly." >&2
  echo "  We cannot execute $JAVACMD" >&2
  exit 1
fi

if [ -z "$JAVA_HOME" ] ; then
  echo "Warning: JAVA_HOME environment variable is not set."
fi

CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher

# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {

  if [ -z "$1" ]
  then
    echo "Path not specified to find_maven_basedir"
    return 1
  fi

  basedir="$1"
  wdir="$1"
  while [ "$wdir" != '/' ] ; do
    if [ -d "$wdir"/.mvn ] ; then
      basedir=$wdir
      break
    fi
    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
    if [ -d "${wdir}" ]; then
      wdir=`cd "$wdir/.."; pwd`
    fi
    # end of workaround
  done
  echo "${basedir}"
}

# concatenates all lines of a file
concat_lines() {
  if [ -f "$1" ]; then
    echo "$(tr -s '\n' ' ' < "$1")"
  fi
}

BASE_DIR=`find_maven_basedir "$(pwd)"`
if [ -z "$BASE_DIR" ]; then
  exit 1;
fi

##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Found .mvn/wrapper/maven-wrapper.jar"
    fi
else
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
    fi
    jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
    while IFS="=" read key value; do
      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
      esac
    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Downloading from: $jarUrl"
    fi
    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"

    if command -v wget > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found wget ... using wget"
        fi
        wget "$jarUrl" -O "$wrapperJarPath"
    elif command -v curl > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found curl ... using curl"
        fi
        curl -o "$wrapperJarPath" "$jarUrl"
    else
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Falling back to using Java to download"
        fi
        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
        if [ -e "$javaClass" ]; then
            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Compiling MavenWrapperDownloader.java ..."
                fi
                # Compiling the Java class
                ("$JAVA_HOME/bin/javac" "$javaClass")
            fi
            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                # Running the downloader
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Running MavenWrapperDownloader.java ..."
                fi
                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
            fi
        fi
    fi
fi
##########################################################################################
# End of extension
##########################################################################################

export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
if [ "$MVNW_VERBOSE" = true ]; then
  echo $MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"

# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --path --windows "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
fi

WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

exec "$JAVACMD" \
  $MAVEN_OPTS \
  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"


================================================
FILE: spirng-boot-kaptcha/mvnw.cmd
================================================
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements.  See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership.  The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License.  You may obtain a copy of the License at
@REM
@REM    https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied.  See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------

@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM     e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------

@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%

@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")

@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre

@setlocal

set ERROR_CODE=0

@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal

@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome

echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init

echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

@REM ==== END VALIDATION ====

:init

@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.

set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir

set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir

:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir

:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"

:endDetectBaseDir

IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig

@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%

:endReadAdditionalConfig

SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
FOR /F "tokens=1,2 delims==" %%A IN (%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties) DO (
	IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B 
)

@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
    echo Found %WRAPPER_JAR%
) else (
    echo Couldn't find %WRAPPER_JAR%, downloading it ...
	echo Downloading from: %DOWNLOAD_URL%
    powershell -Command "(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"
    echo Finished downloading %WRAPPER_JAR%
)
@REM End of extension

%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end

:error
set ERROR_CODE=1

:end
@endlocal & set ERROR_CODE=%ERROR_CODE%

if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost

@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause

if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%

exit /B %ERROR_CODE%


================================================
FILE: spirng-boot-kaptcha/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

<!-- 验证码 -->
<dependency>
    <groupId>com.github.penggle</groupId>
    <artifactId>kaptcha</artifactId>
    <version>2.3.2</version>
</dependency>


    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>


================================================
FILE: spirng-boot-kaptcha/src/main/java/com/example/demo/DemoApplication.java
================================================
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}


================================================
FILE: spirng-boot-kaptcha/src/main/java/com/example/demo/config/KaptchaConfig.java
================================================
package com.example.demo.config;


import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.Properties;

/**
 * KaptchaConfig
 */
@Configuration
public class KaptchaConfig implements WebMvcConfigurer {

    /**
     * 验证码 生成的bean
     */
    @Bean
    public DefaultKaptcha captchaProducer() {
        DefaultKaptcha captchaProducer = new DefaultKaptcha();
        Properties properties = new Properties();
        properties.setProperty(Constants.KAPTCHA_IMAGE_WIDTH, "100");
        properties.setProperty(Constants.KAPTCHA_IMAGE_HEIGHT, "30");
        properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_SIZE, "22");
        properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4");
        properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_SPACE, "6");
        properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_COLOR, "black");
        properties.setProperty(Constants.KAPTCHA_BORDER_COLOR, "LIGHT_GRAY");
        properties.setProperty(Constants.KAPTCHA_BACKGROUND_CLR_FROM, "WHITE");
        properties.setProperty(Constants.KAPTCHA_NOISE_IMPL, "com.google.code.kaptcha.impl.NoNoise");
        properties.setProperty(Constants.KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy");
        properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_STRING, "0123456789");
        properties.setProperty(Constants.KAPTCHA_SESSION_CONFIG_KEY, "checkCode");
        Config config = new Config(properties);
        captchaProducer.setConfig(config);
        return captchaProducer;
    }

}

================================================
FILE: spirng-boot-kaptcha/src/main/java/com/example/demo/config/WebConfig.java
================================================


================================================
FILE: spirng-boot-kaptcha/src/main/java/com/example/demo/controller/KaptchaController.java
================================================
package com.example.demo.controller;

import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.Producer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;

@Slf4j
@Controller
@RequestMapping("/kaptcha")
public class KaptchaController {

    @Autowired
    private Producer captchaProducer;

    @RequestMapping("/getCode")
    public ModelAndView getKaptchaImage(HttpServletRequest request, HttpServletResponse response) throws Exception {
        response.setDateHeader("Expires", 0);
        // Set standard HTTP/1.1 no-cache headers.
        response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
        // Set IE extended HTTP/1.1 no-cache headers (use addHeader).
        response.addHeader("Cache-Control", "post-check=0, pre-check=0");
        // Set standard HTTP/1.0 no-cache header.
        response.setHeader("Pragma", "no-cache");
        response.setContentType("image/jpeg");
        // create the text for the image
        String capText = captchaProducer.createText();
        log.info("******************验证码是: " + capText + "******************");
        // store the text in the session
        request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);
        // create the image with the text
        BufferedImage bi = captchaProducer.createImage(capText);
        ServletOutputStream out = response.getOutputStream();
        // write the data out
        ImageIO.write(bi, "jpg", out);
        try {
            out.flush();
        } finally {
            out.close();
        }
        return null;
    }
}
  


================================================
FILE: spirng-boot-kaptcha/src/main/resources/application.properties
================================================
server.port=8081


================================================
FILE: spirng-boot-kaptcha/src/test/java/com/example/demo/DemoApplicationTests.java
================================================
package com.example.demo;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {

    @Test
    public void contextLoads() {
    }

}


================================================
FILE: spring-boot-encry/.gitignore
================================================
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/

### VS Code ###
.vscode/


================================================
FILE: spring-boot-encry/.mvn/wrapper/MavenWrapperDownloader.java
================================================
/*
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
*/

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.util.Properties;

public class MavenWrapperDownloader {

    /**
     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
     */
    private static final String DEFAULT_DOWNLOAD_URL =
            "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar";

    /**
     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
     * use instead of the default one.
     */
    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
            ".mvn/wrapper/maven-wrapper.properties";

    /**
     * Path where the maven-wrapper.jar will be saved to.
     */
    private static final String MAVEN_WRAPPER_JAR_PATH =
            ".mvn/wrapper/maven-wrapper.jar";

    /**
     * Name of the property which should be used to override the default download url for the wrapper.
     */
    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";

    public static void main(String args[]) {
        System.out.println("- Downloader started");
        File baseDirectory = new File(args[0]);
        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());

        // If the maven-wrapper.properties exists, read it and check if it contains a custom
        // wrapperUrl parameter.
        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
        String url = DEFAULT_DOWNLOAD_URL;
        if (mavenWrapperPropertyFile.exists()) {
            FileInputStream mavenWrapperPropertyFileInputStream = null;
            try {
                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
                Properties mavenWrapperProperties = new Properties();
                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
            } catch (IOException e) {
                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
            } finally {
                try {
                    if (mavenWrapperPropertyFileInputStream != null) {
                        mavenWrapperPropertyFileInputStream.close();
                    }
                } catch (IOException e) {
                    // Ignore ...
                }
            }
        }
        System.out.println("- Downloading from: : " + url);

        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
        if (!outputFile.getParentFile().exists()) {
            if (!outputFile.getParentFile().mkdirs()) {
                System.out.println(
                        "- ERROR creating output direcrory '" + outputFile.getParentFile().getAbsolutePath() + "'");
            }
        }
        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
        try {
            downloadFileFromURL(url, outputFile);
            System.out.println("Done");
            System.exit(0);
        } catch (Throwable e) {
            System.out.println("- Error downloading");
            e.printStackTrace();
            System.exit(1);
        }
    }

    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
        URL website = new URL(urlString);
        ReadableByteChannel rbc;
        rbc = Channels.newChannel(website.openStream());
        FileOutputStream fos = new FileOutputStream(destination);
        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
        fos.close();
        rbc.close();
    }

}


================================================
FILE: spring-boot-encry/.mvn/wrapper/maven-wrapper.properties
================================================
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip


================================================
FILE: spring-boot-encry/mvnw
================================================
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#    https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------

# ----------------------------------------------------------------------------
# Maven2 Start Up Batch script
#
# Required ENV vars:
# ------------------
#   JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
#   M2_HOME - location of maven2's installed home dir
#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
#     e.g. to debug Maven itself, use
#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------

if [ -z "$MAVEN_SKIP_RC" ] ; then

  if [ -f /etc/mavenrc ] ; then
    . /etc/mavenrc
  fi

  if [ -f "$HOME/.mavenrc" ] ; then
    . "$HOME/.mavenrc"
  fi

fi

# OS specific support.  $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
  CYGWIN*) cygwin=true ;;
  MINGW*) mingw=true;;
  Darwin*) darwin=true
    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
    if [ -z "$JAVA_HOME" ]; then
      if [ -x "/usr/libexec/java_home" ]; then
        export JAVA_HOME="`/usr/libexec/java_home`"
      else
        export JAVA_HOME="/Library/Java/Home"
      fi
    fi
    ;;
esac

if [ -z "$JAVA_HOME" ] ; then
  if [ -r /etc/gentoo-release ] ; then
    JAVA_HOME=`java-config --jre-home`
  fi
fi

if [ -z "$M2_HOME" ] ; then
  ## resolve links - $0 may be a link to maven's home
  PRG="$0"

  # need this for relative symlinks
  while [ -h "$PRG" ] ; do
    ls=`ls -ld "$PRG"`
    link=`expr "$ls" : '.*-> \(.*\)$'`
    if expr "$link" : '/.*' > /dev/null; then
      PRG="$link"
    else
      PRG="`dirname "$PRG"`/$link"
    fi
  done

  saveddir=`pwd`

  M2_HOME=`dirname "$PRG"`/..

  # make it fully qualified
  M2_HOME=`cd "$M2_HOME" && pwd`

  cd "$saveddir"
  # echo Using m2 at $M2_HOME
fi

# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --unix "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi

# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME="`(cd "$M2_HOME"; pwd)`"
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
  # TODO classpath?
fi

if [ -z "$JAVA_HOME" ]; then
  javaExecutable="`which javac`"
  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
    # readlink(1) is not available as standard on Solaris 10.
    readLink=`which readlink`
    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
      if $darwin ; then
        javaHome="`dirname \"$javaExecutable\"`"
        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
      else
        javaExecutable="`readlink -f \"$javaExecutable\"`"
      fi
      javaHome="`dirname \"$javaExecutable\"`"
      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
      JAVA_HOME="$javaHome"
      export JAVA_HOME
    fi
  fi
fi

if [ -z "$JAVACMD" ] ; then
  if [ -n "$JAVA_HOME"  ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
    else
      JAVACMD="$JAVA_HOME/bin/java"
    fi
  else
    JAVACMD="`which java`"
  fi
fi

if [ ! -x "$JAVACMD" ] ; then
  echo "Error: JAVA_HOME is not defined correctly." >&2
  echo "  We cannot execute $JAVACMD" >&2
  exit 1
fi

if [ -z "$JAVA_HOME" ] ; then
  echo "Warning: JAVA_HOME environment variable is not set."
fi

CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher

# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {

  if [ -z "$1" ]
  then
    echo "Path not specified to find_maven_basedir"
    return 1
  fi

  basedir="$1"
  wdir="$1"
  while [ "$wdir" != '/' ] ; do
    if [ -d "$wdir"/.mvn ] ; then
      basedir=$wdir
      break
    fi
    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
    if [ -d "${wdir}" ]; then
      wdir=`cd "$wdir/.."; pwd`
    fi
    # end of workaround
  done
  echo "${basedir}"
}

# concatenates all lines of a file
concat_lines() {
  if [ -f "$1" ]; then
    echo "$(tr -s '\n' ' ' < "$1")"
  fi
}

BASE_DIR=`find_maven_basedir "$(pwd)"`
if [ -z "$BASE_DIR" ]; then
  exit 1;
fi

##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Found .mvn/wrapper/maven-wrapper.jar"
    fi
else
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
    fi
    jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
    while IFS="=" read key value; do
      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
      esac
    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
    if [ "$MVNW_VERBOSE" = true ]; then
      echo "Downloading from: $jarUrl"
    fi
    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"

    if command -v wget > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found wget ... using wget"
        fi
        wget "$jarUrl" -O "$wrapperJarPath"
    elif command -v curl > /dev/null; then
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Found curl ... using curl"
        fi
        curl -o "$wrapperJarPath" "$jarUrl"
    else
        if [ "$MVNW_VERBOSE" = true ]; then
          echo "Falling back to using Java to download"
        fi
        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
        if [ -e "$javaClass" ]; then
            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Compiling MavenWrapperDownloader.java ..."
                fi
                # Compiling the Java class
                ("$JAVA_HOME/bin/javac" "$javaClass")
            fi
            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
                # Running the downloader
                if [ "$MVNW_VERBOSE" = true ]; then
                  echo " - Running MavenWrapperDownloader.java ..."
                fi
                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
            fi
        fi
    fi
fi
##########################################################################################
# End of extension
##########################################################################################

export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
if [ "$MVNW_VERBOSE" = true ]; then
  echo $MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"

# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --path --windows "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
fi

WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

exec "$JAVACMD" \
  $MAVEN_OPTS \
  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"


================================================
FILE: spring-boot-encry/mvnw.cmd
================================================
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements.  See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership.  The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License.  You may obtain a copy of the License at
@REM
@REM    https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied.  See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------

@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM     e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------

@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%

@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")

@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre

@setlocal

set ERROR_CODE=0

@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal

@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome

echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init

echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

@REM ==== END VALIDATION ====

:init

@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.

set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir

set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir

:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir

:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"

:endDetectBaseDir

IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig

@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%

:endReadAdditionalConfig

SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
FOR /F "tokens=1,2 delims==" %%A IN (%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties) DO (
	IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B 
)

@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
    echo Found %WRAPPER_JAR%
) else (
    echo Couldn't find %WRAPPER_JAR%, downloading it ...
	echo Downloading from: %DOWNLOAD_URL%
    powershell -Command "(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"
    echo Finished downloading %WRAPPER_JAR%
)
@REM End of extension

%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end

:error
set ERROR_CODE=1

:end
@endlocal & set ERROR_CODE=%ERROR_CODE%

if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost

@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause

if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%

exit /B %ERROR_CODE%


================================================
FILE: spring-boot-encry/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>spring-boot-encry</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-boot-encry</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage
Download .txt
gitextract_bd2aiknn/

├── README.md
├── activemq-demo/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               ├── DemoApplication.java
│       │   │               ├── config/
│       │   │               │   └── ActivemqConfig.java
│       │   │               └── controller/
│       │   │                   ├── QueueCustomerController.java
│       │   │                   ├── SendController.java
│       │   │                   └── TopicCustomerController.java
│       │   └── resources/
│       │       └── application.properties
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           └── DemoApplicationTests.java
├── exception-demo/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               ├── ExceptionDemoApplication.java
│       │   │               ├── controller/
│       │   │               │   └── DemoController.java
│       │   │               └── util/
│       │   │                   ├── GlobleExceptionHandler.java
│       │   │                   └── Result.java
│       │   └── resources/
│       │       └── application.properties
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           └── ExceptionDemoApplicationTests.java
├── filter-demo/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               ├── DemoApplication.java
│       │   │               ├── config/
│       │   │               │   └── WebConfig.java
│       │   │               ├── controller/
│       │   │               │   └── DemoController.java
│       │   │               └── filter/
│       │   │                   ├── MyFilter1.java
│       │   │                   └── MyFilter2.java
│       │   └── resources/
│       │       └── application.properties
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           └── DemoApplicationTests.java
├── jpa-demo/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               ├── SpringBootStudyJpaApplication.java
│       │   │               ├── controller/
│       │   │               │   └── UserController.java
│       │   │               ├── entity/
│       │   │               │   └── User.java
│       │   │               ├── repository/
│       │   │               │   └── UserRepository.java
│       │   │               └── service/
│       │   │                   ├── UserService.java
│       │   │                   └── impl/
│       │   │                       └── UserServiceImpl.java
│       │   └── resources/
│       │       └── application.properties
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           └── SpringBootStudyJpaApplicationTests.java
├── pom.xml
├── qrcode/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               ├── QrcodeApplication.java
│       │   │               ├── controller/
│       │   │               │   └── QrCodeController.java
│       │   │               └── util/
│       │   │                   └── QRCodeUtil.java
│       │   └── resources/
│       │       └── application.properties
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           └── QrcodeApplicationTests.java
├── sendmail/
│   ├── pom.xml
│   └── src/
│       └── main/
│           ├── java/
│           │   └── com/
│           │       └── example/
│           │           └── mail/
│           │               └── sendmail/
│           │                   ├── SendMailApplication.java
│           │                   ├── controller/
│           │                   │   └── MailController.java
│           │                   ├── dto/
│           │                   │   └── Email.java
│           │                   └── service/
│           │                       ├── MailService.java
│           │                       └── impl/
│           │                           └── MailServiceImpl.java
│           └── resources/
│               └── application.properties
├── spirng-boot-kaptcha/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               ├── DemoApplication.java
│       │   │               ├── config/
│       │   │               │   ├── KaptchaConfig.java
│       │   │               │   └── WebConfig.java
│       │   │               └── controller/
│       │   │                   └── KaptchaController.java
│       │   └── resources/
│       │       └── application.properties
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           └── DemoApplicationTests.java
├── spring-boot-encry/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       └── main/
│           ├── java/
│           │   └── com/
│           │       └── example/
│           │           └── springbootencry/
│           │               ├── SpringBootEncryApplication.java
│           │               ├── advice/
│           │               │   ├── DecryptRequestBodyAdvice.java
│           │               │   └── EncryResponseBodyAdvice.java
│           │               ├── controller/
│           │               │   └── TestController.java
│           │               └── util/
│           │                   ├── DesUtil.java
│           │                   └── Result.java
│           └── resources/
│               └── application.yml
├── spring-boot-init/
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── com/
│       │           └── example/
│       │               └── springbootinit/
│       │                   └── component/
│       │                       ├── ApplicationRunnerImpl.java
│       │                       ├── CommandLineRunnerImpl.java
│       │                       ├── PostConstructInit.java
│       │                       └── TestService.java
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── springbootinit/
│                           └── Test.java
├── spring-boot-jwt/
│   └── src/
│       └── main/
│           ├── java/
│           │   └── com/
│           │       └── example/
│           │           └── springbootjwt/
│           │               ├── controller/
│           │               │   ├── LoginController.java
│           │               │   └── SecureController.java
│           │               ├── entity/
│           │               │   └── User.java
│           │               ├── filter/
│           │               │   └── JwtFilter.java
│           │               └── util/
│           │                   └── JwtUtil.java
│           └── resources/
│               └── application.yml
├── spring-boot-log/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── springbootlog/
│       │   │               ├── SpringBootLogApplication.java
│       │   │               ├── config/
│       │   │               │   └── InterceptorConfig.java
│       │   │               ├── controller/
│       │   │               │   └── TestLogController.java
│       │   │               └── interceptor/
│       │   │                   └── SessionInterceptor.java
│       │   └── resources/
│       │       ├── application.yml
│       │       └── logback-spring.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── springbootlog/
│                           └── SpringBootLogApplicationTests.java
├── spring-boot-mybatis-annotation/
│   └── src/
│       └── main/
│           ├── java/
│           │   └── com/
│           │       └── example/
│           │           └── springboot/
│           │               └── mybatisannotation/
│           │                   ├── config/
│           │                   │   └── MybatisConfig.java
│           │                   ├── controller/
│           │                   │   └── UserController.java
│           │                   ├── dao/
│           │                   │   └── mapper/
│           │                   │       ├── UserMapper.java
│           │                   │       └── UserRoleMapper.java
│           │                   ├── entity/
│           │                   │   ├── User.java
│           │                   │   └── UserRole.java
│           │                   └── service/
│           │                       ├── UserRoleService.java
│           │                       ├── UserService.java
│           │                       └── impl/
│           │                           ├── UserRoleServiceImpl.java
│           │                           └── UserServiceImpl.java
│           └── resources/
│               └── application.yml
├── spring-boot-mybatis-generator/
│   ├── .gitignore
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── springbootmybatis/
│       │   │               └── generator/
│       │   │                   ├── SpringBootMybatisGeneratorApplication.java
│       │   │                   ├── dao/
│       │   │                   │   ├── UserMapper.java
│       │   │                   │   └── UserRoleMapper.java
│       │   │                   └── entity/
│       │   │                       ├── User.java
│       │   │                       └── UserRole.java
│       │   └── resources/
│       │       ├── application.properties
│       │       ├── mapper/
│       │       │   ├── UserMapper.xml
│       │       │   └── UserRoleMapper.xml
│       │       └── mybatis-generator.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── springbootmybatis/
│                           └── generator/
│                               └── SpringBootMybatisGeneratorApplicationTests.java
├── spring-boot-mybatis-xml/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── springboot/
│       │   │               └── mybatisxml/
│       │   │                   ├── SpringBootMybatisXmlApplication.java
│       │   │                   ├── controller/
│       │   │                   │   └── UserController.java
│       │   │                   ├── dao/
│       │   │                   │   └── mapper/
│       │   │                   │       └── UserMapper.java
│       │   │                   ├── entity/
│       │   │                   │   └── User.java
│       │   │                   └── service/
│       │   │                       ├── UserService.java
│       │   │                       └── impl/
│       │   │                           └── UserServiceImpl.java
│       │   └── resources/
│       │       ├── application.yml
│       │       ├── mapper/
│       │       │   └── UserMapper.xml
│       │       └── mybatis-config.xml
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── springboot/
│                           └── mybatisxml/
│                               └── SpringBootMybatisXmlApplicationTests.java
├── spring-boot-read-yml/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── springbootreadyml/
│       │   │               ├── SpringBootReadYmlApplication.java
│       │   │               ├── config/
│       │   │               │   └── WxMpProperties.java
│       │   │               └── controller/
│       │   │                   └── TestReadYmlController.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── springbootreadyml/
│                           └── SpringBootReadYmlApplicationTests.java
├── spring-boot-security/
│   ├── .gitignore
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── springboot/
│       │   │               └── security/
│       │   │                   ├── SpringBootSecurityApplication.java
│       │   │                   ├── config/
│       │   │                   │   ├── MyPasswordEncoder.java
│       │   │                   │   └── WebSecurityConfig.java
│       │   │                   └── controller/
│       │   │                       ├── AdminController.java
│       │   │                       ├── AppController.java
│       │   │                       └── UserController.java
│       │   └── resources/
│       │       └── application.properties
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── springboot/
│                           └── security/
│                               └── SpringBootSecurityApplicationTests.java
├── spring-boot-study-base/
│   ├── pom.xml
│   └── src/
│       └── main/
│           └── java/
│               └── com/
│                   └── study/
│                       └── day01/
│                           ├── Config.java
│                           ├── LinuxCondition.java
│                           ├── LinuxService.java
│                           ├── ListService.java
│                           ├── Main01.java
│                           ├── WindowsCondition.java
│                           └── WindowsService.java
├── spring-boot-websocket/
│   ├── .gitignore
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── springboot/
│       │   │               └── websocket/
│       │   │                   ├── SpringBootWebsocketApplication.java
│       │   │                   ├── config/
│       │   │                   │   └── WebSocketConfig.java
│       │   │                   ├── controller/
│       │   │                   │   └── WebSocketController.java
│       │   │                   ├── dto/
│       │   │                   │   └── SocketMessage.java
│       │   │                   └── util/
│       │   │                       └── WebSocketServer.java
│       │   └── resources/
│       │       ├── application.properties
│       │       └── static/
│       │           └── index.html
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── springboot/
│                           └── websocket/
│                               └── SpringBootWebsocketApplicationTests.java
├── spring-cache-demo/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               ├── DemoApplication.java
│       │   │               ├── aop/
│       │   │               │   └── LogRecordAspect.java
│       │   │               ├── config/
│       │   │               │   └── WebConfig.java
│       │   │               ├── controller/
│       │   │               │   └── UserController.java
│       │   │               ├── entity/
│       │   │               │   └── User.java
│       │   │               ├── repository/
│       │   │               │   └── UserRepository.java
│       │   │               └── service/
│       │   │                   ├── UserService.java
│       │   │                   └── impl/
│       │   │                       └── UserServiceImpl.java
│       │   └── resources/
│       │       └── application.properties
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           └── DemoApplicationTests.java
├── spring-cloud-consumer-fegin/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── springcloudconsumerfegin/
│       │   │               ├── SpringCloudConsumerFeginApplication.java
│       │   │               ├── controller/
│       │   │               │   └── FeginController.java
│       │   │               └── service/
│       │   │                   └── IFeginService.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── springcloudconsumerfegin/
│                           └── SpringCloudConsumerFeginApplicationTests.java
├── spring-cloud-consumer-fegin-hystrix/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── springcloudconsumerfeginhystrix/
│       │   │               ├── SpringCloudConsumerFeginHystrixApplication.java
│       │   │               ├── controller/
│       │   │               │   └── FeginHystrixController.java
│       │   │               └── service/
│       │   │                   ├── UserFeginService.java
│       │   │                   └── impl/
│       │   │                       └── UserFeginFailBackImpl.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── springcloudconsumerfeginhystrix/
│                           └── SpringCloudConsumerFeginHystrixApplicationTests.java
├── spring-cloud-consumer-ribbon/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               ├── RibbonConsumerApplication.java
│       │   │               └── controller/
│       │   │                   ├── HystrixConsumerController.java
│       │   │                   └── RibbonConsumerController.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           └── RibbonConsumerApplicationTests.java
├── spring-cloud-eureka/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               └── SpringCloudEurekaApplication.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           └── SpringCloudEurekaApplicationTests.java
├── spring-cloud-user-consumer/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               ├── SpringCloudUserConsumerApplication.java
│       │   │               └── controller/
│       │   │                   └── ConsumerController.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           └── SpringCloudUserConsumerApplicationTests.java
├── spring-cloud-user-service/
│   ├── .gitignore
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── MavenWrapperDownloader.java
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── mvnw
│   ├── mvnw.cmd
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── com/
│       │   │       └── example/
│       │   │           └── demo/
│       │   │               ├── UserServiceDemoApplication.java
│       │   │               ├── controller/
│       │   │               │   └── UserController.java
│       │   │               └── entity/
│       │   │                   └── User.java
│       │   └── resources/
│       │       └── application.yml
│       └── test/
│           └── java/
│               └── com/
│                   └── example/
│                       └── demo/
│                           ├── DemoApplicationTests.java
│                           └── Test.java
└── spring-mybatis-generator/
    └── src/
        └── main/
            └── resources/
                ├── application.yml
                └── mybatis-generator.xml
Download .txt
SYMBOL INDEX (435 symbols across 152 files)

FILE: activemq-demo/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 29) | public class MavenWrapperDownloader {
    method main (line 55) | public static void main(String args[]) {
    method downloadFileFromURL (line 104) | private static void downloadFileFromURL(String urlString, File destina...

FILE: activemq-demo/src/main/java/com/example/demo/DemoApplication.java
  class DemoApplication (line 10) | @SpringBootApplication
    method main (line 16) | public static void main(String[] args) {

FILE: activemq-demo/src/main/java/com/example/demo/config/ActivemqConfig.java
  class ActivemqConfig (line 14) | @Configuration
    method queue (line 20) | @Bean
    method topic (line 28) | @Bean

FILE: activemq-demo/src/main/java/com/example/demo/controller/QueueCustomerController.java
  class QueueCustomerController (line 6) | @RestController
    method readActiveQueue (line 11) | @JmsListener(destination="active.queue")

FILE: activemq-demo/src/main/java/com/example/demo/controller/SendController.java
  class SendController (line 15) | @RestController
    method sendQueue (line 30) | @RequestMapping("/sendQueue")
    method sendTopic (line 41) | @RequestMapping("/sendTopic")

FILE: activemq-demo/src/main/java/com/example/demo/controller/TopicCustomerController.java
  class TopicCustomerController (line 6) | @RestController
    method readActiveTopic1 (line 11) | @JmsListener(destination = "active.topic")
    method readActiveTopic2 (line 19) | @JmsListener(destination = "active.topic")

FILE: activemq-demo/src/test/java/com/example/demo/DemoApplicationTests.java
  class DemoApplicationTests (line 8) | @RunWith(SpringRunner.class)
    method contextLoads (line 12) | @Test

FILE: exception-demo/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 29) | public class MavenWrapperDownloader {
    method main (line 55) | public static void main(String args[]) {
    method downloadFileFromURL (line 104) | private static void downloadFileFromURL(String urlString, File destina...

FILE: exception-demo/src/main/java/com/example/demo/ExceptionDemoApplication.java
  class ExceptionDemoApplication (line 6) | @SpringBootApplication
    method main (line 9) | public static void main(String[] args) {

FILE: exception-demo/src/main/java/com/example/demo/controller/DemoController.java
  class DemoController (line 9) | @Controller
    method testException (line 15) | @ResponseBody
    method testRight (line 27) | @ResponseBody

FILE: exception-demo/src/main/java/com/example/demo/util/GlobleExceptionHandler.java
  class GlobleExceptionHandler (line 15) | @Slf4j
    method handlerException (line 19) | @ExceptionHandler(Exception.class)

FILE: exception-demo/src/main/java/com/example/demo/util/Result.java
  class Result (line 10) | @Data
    method Result (line 27) | public Result(Integer code, String message) {
    method Result (line 32) | public Result(Integer code, String message, Object object) {

FILE: exception-demo/src/test/java/com/example/demo/ExceptionDemoApplicationTests.java
  class ExceptionDemoApplicationTests (line 8) | @RunWith(SpringRunner.class)
    method contextLoads (line 12) | @Test

FILE: filter-demo/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 29) | public class MavenWrapperDownloader {
    method main (line 55) | public static void main(String args[]) {
    method downloadFileFromURL (line 104) | private static void downloadFileFromURL(String urlString, File destina...

FILE: filter-demo/src/main/java/com/example/demo/DemoApplication.java
  class DemoApplication (line 7) | @SpringBootApplication
    method main (line 11) | public static void main(String[] args) {

FILE: filter-demo/src/main/java/com/example/demo/controller/DemoController.java
  class DemoController (line 8) | @Controller
    method test (line 15) | @ResponseBody

FILE: filter-demo/src/main/java/com/example/demo/filter/MyFilter1.java
  class MyFilter1 (line 8) | @Slf4j
    method init (line 11) | @Override
    method doFilter (line 16) | @Override
    method destroy (line 28) | @Override

FILE: filter-demo/src/test/java/com/example/demo/DemoApplicationTests.java
  class DemoApplicationTests (line 8) | @RunWith(SpringRunner.class)
    method contextLoads (line 12) | @Test

FILE: jpa-demo/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 29) | public class MavenWrapperDownloader {
    method main (line 55) | public static void main(String args[]) {
    method downloadFileFromURL (line 104) | private static void downloadFileFromURL(String urlString, File destina...

FILE: jpa-demo/src/main/java/com/example/demo/SpringBootStudyJpaApplication.java
  class SpringBootStudyJpaApplication (line 6) | @SpringBootApplication
    method main (line 9) | public static void main(String[] args) {

FILE: jpa-demo/src/main/java/com/example/demo/controller/UserController.java
  class UserController (line 10) | @RestController
    method getUser (line 18) | @RequestMapping("/getUser/{id}")
    method deleteUser (line 26) | @RequestMapping("/deleteUser/{id}")

FILE: jpa-demo/src/main/java/com/example/demo/entity/User.java
  class User (line 5) | @Entity
    method getId (line 15) | public Integer getId() {
    method setId (line 19) | public void setId(Integer id) {
    method getName (line 23) | public String getName() {
    method setName (line 27) | public void setName(String name) {
    method getPassword (line 31) | public String getPassword() {
    method setPassword (line 35) | public void setPassword(String password) {

FILE: jpa-demo/src/main/java/com/example/demo/repository/UserRepository.java
  type UserRepository (line 13) | public interface UserRepository extends CrudRepository<User, Integer> {
    method getUser (line 15) | @Query("from User where id =:id ")

FILE: jpa-demo/src/main/java/com/example/demo/service/UserService.java
  type UserService (line 6) | public interface UserService {
    method getUser (line 7) | public User getUser(Integer id);
    method deleteUser (line 9) | public void deleteUser(Integer id);

FILE: jpa-demo/src/main/java/com/example/demo/service/impl/UserServiceImpl.java
  class UserServiceImpl (line 10) | @Service
    method getUser (line 16) | @Override
    method deleteUser (line 25) | @Override

FILE: jpa-demo/src/test/java/com/example/demo/SpringBootStudyJpaApplicationTests.java
  class SpringBootStudyJpaApplicationTests (line 8) | @RunWith(SpringRunner.class)
    method contextLoads (line 12) | @Test

FILE: qrcode/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 29) | public class MavenWrapperDownloader {
    method main (line 55) | public static void main(String args[]) {
    method downloadFileFromURL (line 104) | private static void downloadFileFromURL(String urlString, File destina...

FILE: qrcode/src/main/java/com/example/demo/QrcodeApplication.java
  class QrcodeApplication (line 6) | @SpringBootApplication
    method main (line 9) | public static void main(String[] args) {

FILE: qrcode/src/main/java/com/example/demo/controller/QrCodeController.java
  class QrCodeController (line 12) | @Controller
    method createCommonQRCode (line 19) | @RequestMapping(value = "/createCommonQRCode")
    method createLogoQRCode (line 39) | @RequestMapping(value = "/createLogoQRCode")

FILE: qrcode/src/main/java/com/example/demo/util/QRCodeUtil.java
  class QRCodeUtil (line 20) | public class QRCodeUtil {
    method createImage (line 31) | private static BufferedImage createImage(String content, String imgPat...
    method insertImage (line 54) | private static void insertImage(BufferedImage source, String imgPath, ...
    method encode (line 88) | public static void encode(String content, String imgPath, String destP...
    method encode (line 94) | public static BufferedImage encode(String content, String imgPath, boo...
    method mkdirs (line 99) | public static void mkdirs(String destPath) {
    method encode (line 107) | public static void encode(String content, String imgPath, OutputStream...
    method encode (line 113) | public static void encode(String content, OutputStream output) throws ...

FILE: qrcode/src/test/java/com/example/demo/QrcodeApplicationTests.java
  class QrcodeApplicationTests (line 8) | @RunWith(SpringRunner.class)
    method contextLoads (line 12) | @Test

FILE: sendmail/src/main/java/com/example/mail/sendmail/SendMailApplication.java
  class SendMailApplication (line 7) | @SpringBootApplication
    method main (line 11) | public static void main(String[] args) {

FILE: sendmail/src/main/java/com/example/mail/sendmail/controller/MailController.java
  class MailController (line 16) | @Controller
    method sendEmail (line 23) | @RequestMapping(value = "/sendMail")

FILE: sendmail/src/main/java/com/example/mail/sendmail/dto/Email.java
  class Email (line 11) | public class Email {
    method getToAddress (line 49) | public List<String> getToAddress() {
    method setToAddress (line 54) | public void setToAddress(List<String> toAddress) {
    method getCcAddress (line 59) | public List<String> getCcAddress() {
    method setCcAddress (line 64) | public void setCcAddress(List<String> ccAddress) {
    method getBccAddress (line 69) | public List<String> getBccAddress() {
    method setBccAddress (line 74) | public void setBccAddress(List<String> bccAddress) {
    method getSubject (line 79) | public String getSubject() {
    method setSubject (line 84) | public void setSubject(String subject) {
    method getContent (line 89) | public String getContent() {
    method setContent (line 94) | public void setContent(String content) {
    method getAttachments (line 99) | public List<File> getAttachments() {
    method setAttachments (line 104) | public void setAttachments(List<File> attachments) {

FILE: sendmail/src/main/java/com/example/mail/sendmail/service/MailService.java
  type MailService (line 6) | public interface MailService {
    method sendMail (line 14) | public void sendMail(Email email);

FILE: sendmail/src/main/java/com/example/mail/sendmail/service/impl/MailServiceImpl.java
  class MailServiceImpl (line 24) | @Service
    method sendMail (line 42) | public void sendMail(Email email) {

FILE: spirng-boot-kaptcha/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 29) | public class MavenWrapperDownloader {
    method main (line 55) | public static void main(String args[]) {
    method downloadFileFromURL (line 104) | private static void downloadFileFromURL(String urlString, File destina...

FILE: spirng-boot-kaptcha/src/main/java/com/example/demo/DemoApplication.java
  class DemoApplication (line 6) | @SpringBootApplication
    method main (line 9) | public static void main(String[] args) {

FILE: spirng-boot-kaptcha/src/main/java/com/example/demo/config/KaptchaConfig.java
  class KaptchaConfig (line 16) | @Configuration
    method captchaProducer (line 22) | @Bean

FILE: spirng-boot-kaptcha/src/main/java/com/example/demo/controller/KaptchaController.java
  class KaptchaController (line 17) | @Slf4j
    method getKaptchaImage (line 25) | @RequestMapping("/getCode")

FILE: spirng-boot-kaptcha/src/test/java/com/example/demo/DemoApplicationTests.java
  class DemoApplicationTests (line 8) | @RunWith(SpringRunner.class)
    method contextLoads (line 12) | @Test

FILE: spring-boot-encry/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 29) | public class MavenWrapperDownloader {
    method main (line 55) | public static void main(String args[]) {
    method downloadFileFromURL (line 104) | private static void downloadFileFromURL(String urlString, File destina...

FILE: spring-boot-encry/src/main/java/com/example/springbootencry/SpringBootEncryApplication.java
  class SpringBootEncryApplication (line 6) | @SpringBootApplication
    method main (line 9) | public static void main(String[] args) {

FILE: spring-boot-encry/src/main/java/com/example/springbootencry/advice/DecryptRequestBodyAdvice.java
  class DecryptRequestBodyAdvice (line 25) | @Component
    method supports (line 31) | @Override
    method beforeBodyRead (line 36) | @Override
    method afterBodyRead (line 41) | @Override
    method handleEmptyBody (line 58) | @Override

FILE: spring-boot-encry/src/main/java/com/example/springbootencry/advice/EncryResponseBodyAdvice.java
  class EncryResponseBodyAdvice (line 25) | @Component
    method supports (line 31) | @Override
    method beforeBodyWrite (line 36) | @Override

FILE: spring-boot-encry/src/main/java/com/example/springbootencry/controller/TestController.java
  class TestController (line 14) | @RestController
    method sendResponseEncryData (line 22) | @RequestMapping(value = "/sendResponseEncryData")
    method getRequestData (line 33) | @RequestMapping(value = "/getRequestData")

FILE: spring-boot-encry/src/main/java/com/example/springbootencry/util/DesUtil.java
  class DesUtil (line 22) | public class DesUtil {
    method main (line 28) | public static void main(String[] args) throws Exception {
    method encrypt (line 43) | public static String encrypt(String data) throws Exception {
    method decrypt (line 55) | public static String decrypt(String data) throws IOException, Exception {
    method encrypt (line 72) | public static String encrypt(String data, String key) throws Exception {
    method decrypt (line 87) | public static String decrypt(String data, String key) throws IOException,
    method encrypt (line 105) | private static byte[] encrypt(byte[] data, byte[] key) throws Exception {
    method decrypt (line 133) | private static byte[] decrypt(byte[] data, byte[] key) throws Exception {

FILE: spring-boot-encry/src/main/java/com/example/springbootencry/util/Result.java
  class Result (line 6) | public class Result implements java.io.Serializable {
    method isSuccess (line 11) | public boolean isSuccess() {
    method setSuccess (line 15) | public Result setSuccess(boolean success) {
    method createResult (line 20) | public static Result createResult() {
    method getData (line 24) | public Map getData() {
    method setData (line 28) | public void setData(Map data) {
    method setDataValue (line 32) | public void setDataValue(String key, Object value) {

FILE: spring-boot-init/src/main/java/com/example/springbootinit/component/ApplicationRunnerImpl.java
  class ApplicationRunnerImpl (line 8) | @Component
    method run (line 11) | @Override
    method hello (line 17) | public void hello(){

FILE: spring-boot-init/src/main/java/com/example/springbootinit/component/CommandLineRunnerImpl.java
  class CommandLineRunnerImpl (line 7) | @Component
    method run (line 11) | @Override
    method askForLeave (line 16) | public void askForLeave(){

FILE: spring-boot-init/src/main/java/com/example/springbootinit/component/PostConstructInit.java
  class PostConstructInit (line 11) | @Component
    method init (line 17) | @PostConstruct

FILE: spring-boot-init/src/main/java/com/example/springbootinit/component/TestService.java
  class TestService (line 8) | @Slf4j
    method getTestData (line 12) | void getTestData() {

FILE: spring-boot-init/src/test/java/com/example/springbootinit/Test.java
  class Test (line 32) | @Slf4j
    method main (line 36) | public static void main(String[] args) {
    method testGetComment (line 97) | @org.junit.jupiter.api.Test
    method testSplit (line 170) | @org.junit.jupiter.api.Test

FILE: spring-boot-jwt/src/main/java/com/example/springbootjwt/controller/LoginController.java
  class LoginController (line 15) | @Slf4j
    method login (line 32) | @RequestMapping("/login")

FILE: spring-boot-jwt/src/main/java/com/example/springbootjwt/controller/SecureController.java
  class SecureController (line 12) | @Slf4j
    method login (line 19) | @RequestMapping("/secure/getUserInfo")

FILE: spring-boot-jwt/src/main/java/com/example/springbootjwt/entity/User.java
  class User (line 9) | @Data

FILE: spring-boot-jwt/src/main/java/com/example/springbootjwt/filter/JwtFilter.java
  class JwtFilter (line 17) | @Slf4j
    method init (line 20) | @Override
    method doFilter (line 24) | @Override
    method destroy (line 61) | @Override

FILE: spring-boot-jwt/src/main/java/com/example/springbootjwt/util/JwtUtil.java
  class JwtUtil (line 20) | public class JwtUtil {
    method createToken (line 36) | public static String createToken(User user) {
    method verifyToken (line 57) | public static Map<String, Claim> verifyToken(String token) {

FILE: spring-boot-log/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 29) | public class MavenWrapperDownloader {
    method main (line 55) | public static void main(String args[]) {
    method downloadFileFromURL (line 104) | private static void downloadFileFromURL(String urlString, File destina...

FILE: spring-boot-log/src/main/java/com/example/springbootlog/SpringBootLogApplication.java
  class SpringBootLogApplication (line 6) | @SpringBootApplication
    method main (line 9) | public static void main(String[] args) {

FILE: spring-boot-log/src/main/java/com/example/springbootlog/config/InterceptorConfig.java
  class InterceptorConfig (line 10) | @Configuration
    method getSessionInterceptor (line 13) | @Bean
    method addInterceptors (line 18) | @Override

FILE: spring-boot-log/src/main/java/com/example/springbootlog/controller/TestLogController.java
  class TestLogController (line 11) | @RestController
    method testLogin (line 19) | @RequestMapping(value = "/testLogin")
    method testNewOrder (line 28) | @RequestMapping(value = "/testNewOrder")
    method testPay (line 38) | @RequestMapping(value = "/testPay")

FILE: spring-boot-log/src/main/java/com/example/springbootlog/interceptor/SessionInterceptor.java
  class SessionInterceptor (line 10) | public class SessionInterceptor extends HandlerInterceptorAdapter {
    method postHandle (line 17) | @Override
    method preHandle (line 22) | @Override
    method afterCompletion (line 33) | @Override

FILE: spring-boot-log/src/test/java/com/example/springbootlog/SpringBootLogApplicationTests.java
  class SpringBootLogApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: spring-boot-mybatis-annotation/src/main/java/com/example/springboot/mybatisannotation/config/MybatisConfig.java
  class MybatisConfig (line 10) | @Configuration
    method configurationCustomizer (line 13) | @Bean

FILE: spring-boot-mybatis-annotation/src/main/java/com/example/springboot/mybatisannotation/controller/UserController.java
  class UserController (line 18) | @Slf4j
    method queryAllUsers (line 28) | @GetMapping("/queryAllUsers")
    method add (line 33) | @GetMapping("/add")

FILE: spring-boot-mybatis-annotation/src/main/java/com/example/springboot/mybatisannotation/dao/mapper/UserMapper.java
  type UserMapper (line 12) | @Mapper
    method queryAllUsers (line 18) | @Select("SELECT * FROM user ")
    method add (line 25) | @Options(useGeneratedKeys = true, keyProperty = "id")

FILE: spring-boot-mybatis-annotation/src/main/java/com/example/springboot/mybatisannotation/dao/mapper/UserRoleMapper.java
  type UserRoleMapper (line 9) | @Mapper
    method add (line 16) | @Options(useGeneratedKeys = true, keyProperty = "id")

FILE: spring-boot-mybatis-annotation/src/main/java/com/example/springboot/mybatisannotation/entity/User.java
  class User (line 11) | @Data

FILE: spring-boot-mybatis-annotation/src/main/java/com/example/springboot/mybatisannotation/entity/UserRole.java
  class UserRole (line 11) | @Data

FILE: spring-boot-mybatis-annotation/src/main/java/com/example/springboot/mybatisannotation/service/UserRoleService.java
  type UserRoleService (line 6) | public interface UserRoleService {
    method add (line 11) | int add(UserRole userRole);

FILE: spring-boot-mybatis-annotation/src/main/java/com/example/springboot/mybatisannotation/service/UserService.java
  type UserService (line 8) | public interface UserService {
    method queryAllUsers (line 9) | List<User> queryAllUsers();
    method add (line 15) | int add(User user);

FILE: spring-boot-mybatis-annotation/src/main/java/com/example/springboot/mybatisannotation/service/impl/UserRoleServiceImpl.java
  class UserRoleServiceImpl (line 17) | @Slf4j
    method add (line 29) | @Transactional(propagation = Propagation.NESTED)

FILE: spring-boot-mybatis-annotation/src/main/java/com/example/springboot/mybatisannotation/service/impl/UserServiceImpl.java
  class UserServiceImpl (line 14) | @Slf4j
    method queryAllUsers (line 21) | @Override
    method add (line 30) | @Transactional(propagation = Propagation.NESTED)

FILE: spring-boot-mybatis-generator/src/main/java/com/example/springbootmybatis/generator/SpringBootMybatisGeneratorApplication.java
  class SpringBootMybatisGeneratorApplication (line 6) | @SpringBootApplication
    method main (line 9) | public static void main(String[] args) {

FILE: spring-boot-mybatis-generator/src/main/java/com/example/springbootmybatis/generator/dao/UserMapper.java
  type UserMapper (line 6) | public interface UserMapper {
    method deleteByPrimaryKey (line 7) | int deleteByPrimaryKey(Integer id);
    method insert (line 9) | int insert(User record);
    method selectByPrimaryKey (line 11) | User selectByPrimaryKey(Integer id);
    method selectAll (line 13) | List<User> selectAll();
    method updateByPrimaryKey (line 15) | int updateByPrimaryKey(User record);

FILE: spring-boot-mybatis-generator/src/main/java/com/example/springbootmybatis/generator/dao/UserRoleMapper.java
  type UserRoleMapper (line 6) | public interface UserRoleMapper {
    method deleteByPrimaryKey (line 7) | int deleteByPrimaryKey(Integer id);
    method insert (line 9) | int insert(UserRole record);
    method selectByPrimaryKey (line 11) | UserRole selectByPrimaryKey(Integer id);
    method selectAll (line 13) | List<UserRole> selectAll();
    method updateByPrimaryKey (line 15) | int updateByPrimaryKey(UserRole record);

FILE: spring-boot-mybatis-generator/src/main/java/com/example/springbootmybatis/generator/entity/User.java
  class User (line 5) | public class User implements Serializable {
    method getId (line 20) | public Integer getId() {
    method setId (line 24) | public void setId(Integer id) {
    method getName (line 28) | public String getName() {
    method setName (line 32) | public void setName(String name) {
    method getPassword (line 36) | public String getPassword() {
    method setPassword (line 40) | public void setPassword(String password) {
    method getSex (line 44) | public Integer getSex() {
    method setSex (line 48) | public void setSex(Integer sex) {
    method getDes (line 52) | public String getDes() {
    method setDes (line 56) | public void setDes(String des) {
    method getUserType (line 60) | public Integer getUserType() {
    method setUserType (line 64) | public void setUserType(Integer userType) {
    method toString (line 68) | @Override

FILE: spring-boot-mybatis-generator/src/main/java/com/example/springbootmybatis/generator/entity/UserRole.java
  class UserRole (line 5) | public class UserRole implements Serializable {
    method getId (line 14) | public Integer getId() {
    method setId (line 18) | public void setId(Integer id) {
    method getUserId (line 22) | public Integer getUserId() {
    method setUserId (line 26) | public void setUserId(Integer userId) {
    method getRoleId (line 30) | public Integer getRoleId() {
    method setRoleId (line 34) | public void setRoleId(Integer roleId) {
    method toString (line 38) | @Override

FILE: spring-boot-mybatis-generator/src/test/java/com/example/springbootmybatis/generator/SpringBootMybatisGeneratorApplicationTests.java
  class SpringBootMybatisGeneratorApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: spring-boot-mybatis-xml/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 22) | public class MavenWrapperDownloader {
    method main (line 49) | public static void main(String args[]) {
    method downloadFileFromURL (line 98) | private static void downloadFileFromURL(String urlString, File destina...

FILE: spring-boot-mybatis-xml/src/main/java/com/example/springboot/mybatisxml/SpringBootMybatisXmlApplication.java
  class SpringBootMybatisXmlApplication (line 6) | @MapperScan("com.example.springboot.mybatisxml.dao.mapper")
    method main (line 10) | public static void main(String[] args) {

FILE: spring-boot-mybatis-xml/src/main/java/com/example/springboot/mybatisxml/controller/UserController.java
  class UserController (line 19) | @Slf4j
    method queryAllUsers (line 30) | @GetMapping("/queryAllUsers")

FILE: spring-boot-mybatis-xml/src/main/java/com/example/springboot/mybatisxml/dao/mapper/UserMapper.java
  type UserMapper (line 8) | public interface UserMapper {
    method queryAllUsers (line 10) | List<User> queryAllUsers();

FILE: spring-boot-mybatis-xml/src/main/java/com/example/springboot/mybatisxml/entity/User.java
  class User (line 10) | @Data

FILE: spring-boot-mybatis-xml/src/main/java/com/example/springboot/mybatisxml/service/UserService.java
  type UserService (line 8) | public interface UserService {
    method queryAllUsers (line 9) | List<User> queryAllUsers();

FILE: spring-boot-mybatis-xml/src/main/java/com/example/springboot/mybatisxml/service/impl/UserServiceImpl.java
  class UserServiceImpl (line 12) | @Slf4j
    method queryAllUsers (line 19) | @Override

FILE: spring-boot-mybatis-xml/src/test/java/com/example/springboot/mybatisxml/SpringBootMybatisXmlApplicationTests.java
  class SpringBootMybatisXmlApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: spring-boot-read-yml/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 29) | public class MavenWrapperDownloader {
    method main (line 55) | public static void main(String args[]) {
    method downloadFileFromURL (line 104) | private static void downloadFileFromURL(String urlString, File destina...

FILE: spring-boot-read-yml/src/main/java/com/example/springbootreadyml/SpringBootReadYmlApplication.java
  class SpringBootReadYmlApplication (line 6) | @SpringBootApplication
    method main (line 9) | public static void main(String[] args) {

FILE: spring-boot-read-yml/src/main/java/com/example/springbootreadyml/config/WxMpProperties.java
  class WxMpProperties (line 11) | @Data
    class MpConfig (line 17) | @Data

FILE: spring-boot-read-yml/src/main/java/com/example/springbootreadyml/controller/TestReadYmlController.java
  class TestReadYmlController (line 16) | @Slf4j
    method readYml (line 26) | @RequestMapping("/readYml")

FILE: spring-boot-read-yml/src/test/java/com/example/springbootreadyml/SpringBootReadYmlApplicationTests.java
  class SpringBootReadYmlApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: spring-boot-security/src/main/java/com/example/springboot/security/SpringBootSecurityApplication.java
  class SpringBootSecurityApplication (line 6) | @SpringBootApplication
    method main (line 9) | public static void main(String[] args) {

FILE: spring-boot-security/src/main/java/com/example/springboot/security/config/MyPasswordEncoder.java
  class MyPasswordEncoder (line 5) | public class MyPasswordEncoder implements PasswordEncoder {
    method encode (line 6) | @Override
    method matches (line 11) | @Override

FILE: spring-boot-security/src/main/java/com/example/springboot/security/config/WebSecurityConfig.java
  class WebSecurityConfig (line 14) | @EnableWebSecurity
    method configure (line 18) | @Override
    method configure (line 25) | @Override

FILE: spring-boot-security/src/main/java/com/example/springboot/security/controller/AdminController.java
  class AdminController (line 9) | @RestController
    method hello (line 12) | @GetMapping("/admin")

FILE: spring-boot-security/src/main/java/com/example/springboot/security/controller/AppController.java
  class AppController (line 9) | @RestController
    method hello (line 12) | @GetMapping("/hello")

FILE: spring-boot-security/src/main/java/com/example/springboot/security/controller/UserController.java
  class UserController (line 9) | @RestController
    method hello (line 12) | @GetMapping("/user")

FILE: spring-boot-security/src/test/java/com/example/springboot/security/SpringBootSecurityApplicationTests.java
  class SpringBootSecurityApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: spring-boot-study-base/src/main/java/com/study/day01/Config.java
  class Config (line 11) | @Configuration
    method window (line 14) | @Bean
    method linux (line 20) | @Bean

FILE: spring-boot-study-base/src/main/java/com/study/day01/LinuxCondition.java
  class LinuxCondition (line 11) | public class LinuxCondition implements Condition {
    method matches (line 12) | public boolean matches(ConditionContext context, AnnotatedTypeMetadata...

FILE: spring-boot-study-base/src/main/java/com/study/day01/LinuxService.java
  class LinuxService (line 7) | public class LinuxService implements ListService {
    method showListCmd (line 8) | public String showListCmd() {

FILE: spring-boot-study-base/src/main/java/com/study/day01/ListService.java
  type ListService (line 9) | public interface ListService {
    method showListCmd (line 11) | public String showListCmd();

FILE: spring-boot-study-base/src/main/java/com/study/day01/Main01.java
  class Main01 (line 9) | public class Main01 {
    method main (line 11) | public static void main (String []args) {

FILE: spring-boot-study-base/src/main/java/com/study/day01/WindowsCondition.java
  class WindowsCondition (line 11) | public class WindowsCondition implements Condition {
    method matches (line 12) | public boolean matches(ConditionContext context, AnnotatedTypeMetadata...

FILE: spring-boot-study-base/src/main/java/com/study/day01/WindowsService.java
  class WindowsService (line 7) | public class WindowsService implements ListService {
    method showListCmd (line 8) | public String showListCmd() {

FILE: spring-boot-websocket/src/main/java/com/example/springboot/websocket/SpringBootWebsocketApplication.java
  class SpringBootWebsocketApplication (line 6) | @SpringBootApplication
    method main (line 9) | public static void main(String[] args) {

FILE: spring-boot-websocket/src/main/java/com/example/springboot/websocket/config/WebSocketConfig.java
  class WebSocketConfig (line 8) | @Configuration
    method serverEndpointExporter (line 21) | @Bean

FILE: spring-boot-websocket/src/main/java/com/example/springboot/websocket/controller/WebSocketController.java
  class WebSocketController (line 13) | @RestController
    method sendAllMessage (line 24) | @RequestMapping(value = "/sendAll", method = RequestMethod.GET)
    method sendOneMessage (line 41) | @RequestMapping(value = "/sendOne", method = RequestMethod.GET)

FILE: spring-boot-websocket/src/main/java/com/example/springboot/websocket/dto/SocketMessage.java
  class SocketMessage (line 3) | public class SocketMessage {

FILE: spring-boot-websocket/src/main/java/com/example/springboot/websocket/util/WebSocketServer.java
  class WebSocketServer (line 14) | @ServerEndpoint(value = "/ws/asset")
    method init (line 18) | @PostConstruct
    method onOpen (line 31) | @OnOpen
    method onClose (line 42) | @OnClose
    method onMessage (line 55) | @OnMessage
    method onError (line 67) | @OnError
    method SendMessage (line 78) | public static void SendMessage(Session session, String message) {
    method BroadCastInfo (line 93) | public static void BroadCastInfo(String message) throws IOException {
    method SendMessage (line 107) | public static void SendMessage(String message,String sessionId) throws...

FILE: spring-boot-websocket/src/test/java/com/example/springboot/websocket/SpringBootWebsocketApplicationTests.java
  class SpringBootWebsocketApplicationTests (line 6) | @SpringBootTest
    method contextLoads (line 9) | @Test

FILE: spring-cache-demo/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 29) | public class MavenWrapperDownloader {
    method main (line 55) | public static void main(String args[]) {
    method downloadFileFromURL (line 104) | private static void downloadFileFromURL(String urlString, File destina...

FILE: spring-cache-demo/src/main/java/com/example/demo/DemoApplication.java
  class DemoApplication (line 12) | @SpringBootApplication
    method main (line 15) | public static void main(String[] args) {

FILE: spring-cache-demo/src/main/java/com/example/demo/aop/LogRecordAspect.java
  class LogRecordAspect (line 24) | @Aspect // 定义一个切面
    method excudeService (line 30) | @Pointcut("execution(* com.example.demo.controller.*Controller.*(..))")
    method doAround (line 34) | @Around("excudeService()")

FILE: spring-cache-demo/src/main/java/com/example/demo/config/WebConfig.java
  class WebConfig (line 19) | @Configuration
    method redisTemplate (line 22) | @Bean(name = "redisTemplate")
    method cacheManager (line 35) | @Primary
    method keySerializer (line 51) | private RedisSerializer<String> keySerializer() {
    method valueSerializer (line 55) | private RedisSerializer<Object> valueSerializer() {

FILE: spring-cache-demo/src/main/java/com/example/demo/controller/UserController.java
  class UserController (line 11) | @RestController
    method getUser (line 20) | @RequestMapping("/getUser/{id}")
    method deleteUser (line 28) | @RequestMapping("/deleteUser/{id}")
    method updateUser (line 35) | @RequestMapping("/updateUser/{id}")

FILE: spring-cache-demo/src/main/java/com/example/demo/entity/User.java
  class User (line 5) | @Entity
    method getId (line 15) | public Integer getId() {
    method setId (line 19) | public void setId(Integer id) {
    method getName (line 23) | public String getName() {
    method setName (line 27) | public void setName(String name) {
    method getPassword (line 31) | public String getPassword() {
    method setPassword (line 35) | public void setPassword(String password) {

FILE: spring-cache-demo/src/main/java/com/example/demo/repository/UserRepository.java
  type UserRepository (line 13) | public interface UserRepository extends CrudRepository<User, Integer> {
    method getUser (line 15) | @Query("from User where id =:id ")

FILE: spring-cache-demo/src/main/java/com/example/demo/service/UserService.java
  type UserService (line 6) | public interface UserService {
    method getUser (line 9) | public User getUser(Integer id);
    method deleteUser (line 11) | public void deleteUser(Integer id);
    method updateUser (line 14) | public User updateUser(User updateUser);

FILE: spring-cache-demo/src/main/java/com/example/demo/service/impl/UserServiceImpl.java
  class UserServiceImpl (line 13) | @Service
    method getUser (line 20) | @Override
    method deleteUser (line 27) | @Override
    method updateUser (line 35) | @Override

FILE: spring-cache-demo/src/test/java/com/example/demo/DemoApplicationTests.java
  class DemoApplicationTests (line 8) | @RunWith(SpringRunner.class)
    method contextLoads (line 12) | @Test

FILE: spring-cloud-consumer-fegin-hystrix/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 29) | public class MavenWrapperDownloader {
    method main (line 55) | public static void main(String args[]) {
    method downloadFileFromURL (line 104) | private static void downloadFileFromURL(String urlString, File destina...

FILE: spring-cloud-consumer-fegin-hystrix/src/main/java/com/example/springcloudconsumerfeginhystrix/SpringCloudConsumerFeginHystrixApplication.java
  class SpringCloudConsumerFeginHystrixApplication (line 8) | @EnableEurekaClient
    method main (line 13) | public static void main(String[] args) {

FILE: spring-cloud-consumer-fegin-hystrix/src/main/java/com/example/springcloudconsumerfeginhystrix/controller/FeginHystrixController.java
  class FeginHystrixController (line 9) | @RestController
    method getUser (line 16) | @GetMapping("/getUser")

FILE: spring-cloud-consumer-fegin-hystrix/src/main/java/com/example/springcloudconsumerfeginhystrix/service/UserFeginService.java
  type UserFeginService (line 9) | @FeignClient(value = "user-service", fallback = UserFeginFailBackImpl.cl...
    method getUser (line 12) | @RequestMapping(value = "/provider/getUser")

FILE: spring-cloud-consumer-fegin-hystrix/src/main/java/com/example/springcloudconsumerfeginhystrix/service/impl/UserFeginFailBackImpl.java
  class UserFeginFailBackImpl (line 7) | @Slf4j
    method getUser (line 11) | @Override

FILE: spring-cloud-consumer-fegin-hystrix/src/test/java/com/example/springcloudconsumerfeginhystrix/SpringCloudConsumerFeginHystrixApplicationTests.java
  class SpringCloudConsumerFeginHystrixApplicationTests (line 8) | @RunWith(SpringRunner.class)
    method contextLoads (line 12) | @Test

FILE: spring-cloud-consumer-fegin/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 29) | public class MavenWrapperDownloader {
    method main (line 55) | public static void main(String args[]) {
    method downloadFileFromURL (line 104) | private static void downloadFileFromURL(String urlString, File destina...

FILE: spring-cloud-consumer-fegin/src/main/java/com/example/springcloudconsumerfegin/SpringCloudConsumerFeginApplication.java
  class SpringCloudConsumerFeginApplication (line 9) | @EnableEurekaClient
    method main (line 14) | public static void main(String[] args) {

FILE: spring-cloud-consumer-fegin/src/main/java/com/example/springcloudconsumerfegin/controller/FeginController.java
  class FeginController (line 9) | @RestController
    method getUser (line 16) | @GetMapping("/getUser")

FILE: spring-cloud-consumer-fegin/src/main/java/com/example/springcloudconsumerfegin/service/IFeginService.java
  type IFeginService (line 8) | @FeignClient(value = "user-service")
    method getUser (line 11) | @RequestMapping(value = "/provider/getUser")

FILE: spring-cloud-consumer-fegin/src/test/java/com/example/springcloudconsumerfegin/SpringCloudConsumerFeginApplicationTests.java
  class SpringCloudConsumerFeginApplicationTests (line 8) | @RunWith(SpringRunner.class)
    method contextLoads (line 12) | @Test

FILE: spring-cloud-consumer-ribbon/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 29) | public class MavenWrapperDownloader {
    method main (line 55) | public static void main(String args[]) {
    method downloadFileFromURL (line 104) | private static void downloadFileFromURL(String urlString, File destina...

FILE: spring-cloud-consumer-ribbon/src/main/java/com/example/demo/RibbonConsumerApplication.java
  class RibbonConsumerApplication (line 13) | @EnableHystrix //在启动类上添加@EnableHystrix注解开启Hystrix的熔断器功能。
    method restTemplate (line 19) | @LoadBalanced
    method main (line 25) | public static void main(String[] args) {

FILE: spring-cloud-consumer-ribbon/src/main/java/com/example/demo/controller/HystrixConsumerController.java
  class HystrixConsumerController (line 15) | @Slf4j
    method getUser (line 26) | @HystrixCommand(fallbackMethod = "getDefaultUser")
    method getDefaultUser (line 33) | public String getDefaultUser(Integer id) {

FILE: spring-cloud-consumer-ribbon/src/main/java/com/example/demo/controller/RibbonConsumerController.java
  class RibbonConsumerController (line 15) | @Slf4j
    method getUser (line 26) | @GetMapping("getUser")

FILE: spring-cloud-consumer-ribbon/src/test/java/com/example/demo/RibbonConsumerApplicationTests.java
  class RibbonConsumerApplicationTests (line 8) | @RunWith(SpringRunner.class)
    method contextLoads (line 12) | @Test

FILE: spring-cloud-eureka/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 29) | public class MavenWrapperDownloader {
    method main (line 55) | public static void main(String args[]) {
    method downloadFileFromURL (line 104) | private static void downloadFileFromURL(String urlString, File destina...

FILE: spring-cloud-eureka/src/main/java/com/example/demo/SpringCloudEurekaApplication.java
  class SpringCloudEurekaApplication (line 7) | @EnableEurekaServer
    method main (line 10) | public static void main(String[] args) {

FILE: spring-cloud-eureka/src/test/java/com/example/demo/SpringCloudEurekaApplicationTests.java
  class SpringCloudEurekaApplicationTests (line 8) | @RunWith(SpringRunner.class)
    method contextLoads (line 12) | @Test

FILE: spring-cloud-user-consumer/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 29) | public class MavenWrapperDownloader {
    method main (line 55) | public static void main(String args[]) {
    method downloadFileFromURL (line 104) | private static void downloadFileFromURL(String urlString, File destina...

FILE: spring-cloud-user-consumer/src/main/java/com/example/demo/SpringCloudUserConsumerApplication.java
  class SpringCloudUserConsumerApplication (line 9) | @EnableDiscoveryClient
    method restTemplate (line 13) | @Bean
    method main (line 18) | public static void main(String[] args) {

FILE: spring-cloud-user-consumer/src/main/java/com/example/demo/controller/ConsumerController.java
  class ConsumerController (line 15) | @Slf4j
    method getUser (line 29) | @GetMapping("getUser")

FILE: spring-cloud-user-consumer/src/test/java/com/example/demo/SpringCloudUserConsumerApplicationTests.java
  class SpringCloudUserConsumerApplicationTests (line 8) | @RunWith(SpringRunner.class)
    method contextLoads (line 12) | @Test

FILE: spring-cloud-user-service/.mvn/wrapper/MavenWrapperDownloader.java
  class MavenWrapperDownloader (line 29) | public class MavenWrapperDownloader {
    method main (line 55) | public static void main(String args[]) {
    method downloadFileFromURL (line 104) | private static void downloadFileFromURL(String urlString, File destina...

FILE: spring-cloud-user-service/src/main/java/com/example/demo/UserServiceDemoApplication.java
  class UserServiceDemoApplication (line 7) | @EnableEurekaClient
    method main (line 11) | public static void main(String[] args) {

FILE: spring-cloud-user-service/src/main/java/com/example/demo/controller/UserController.java
  class UserController (line 15) | @Slf4j
    method getUser (line 33) | @RequestMapping("/getUser")

FILE: spring-cloud-user-service/src/main/java/com/example/demo/entity/User.java
  class User (line 10) | @Data

FILE: spring-cloud-user-service/src/test/java/com/example/demo/DemoApplicationTests.java
  class DemoApplicationTests (line 8) | @RunWith(SpringRunner.class)
    method contextLoads (line 12) | @Test

FILE: spring-cloud-user-service/src/test/java/com/example/demo/Test.java
  class Test (line 11) | public class Test {
    method testFastJson (line 14) | @org.junit.Test
Condensed preview — 299 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (575K chars).
[
  {
    "path": "README.md",
    "chars": 579,
    "preview": "#### 本项目记录 SpringBoot和SpringCloud 学习过程中遇到的问题,下面的是我的公众号二维码图片,欢迎关注,欢迎留言,一起学习,一起进步。\n\n![](https://mmbiz.qpic.cn/mmbiz_jpg/OX"
  },
  {
    "path": "activemq-demo/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "activemq-demo/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4629,
    "preview": "/*\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE fi"
  },
  {
    "path": "activemq-demo/.mvn/wrapper/maven-wrapper.properties",
    "chars": 116,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip\n"
  },
  {
    "path": "activemq-demo/mvnw",
    "chars": 9114,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "activemq-demo/mvnw.cmd",
    "chars": 5811,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "activemq-demo/pom.xml",
    "chars": 1779,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "activemq-demo/src/main/java/com/example/demo/DemoApplication.java",
    "chars": 447,
    "preview": "package com.example.demo;\n\nimport org.apache.activemq.command.ActiveMQQueue;\nimport org.springframework.boot.SpringAppli"
  },
  {
    "path": "activemq-demo/src/main/java/com/example/demo/config/ActivemqConfig.java",
    "chars": 562,
    "preview": "package com.example.demo.config;\n\nimport org.apache.activemq.command.ActiveMQQueue;\nimport org.apache.activemq.command.A"
  },
  {
    "path": "activemq-demo/src/main/java/com/example/demo/controller/QueueCustomerController.java",
    "chars": 366,
    "preview": "package com.example.demo.controller;\n\nimport org.springframework.jms.annotation.JmsListener;\nimport org.springframework."
  },
  {
    "path": "activemq-demo/src/main/java/com/example/demo/controller/SendController.java",
    "chars": 1093,
    "preview": "package com.example.demo.controller;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springfr"
  },
  {
    "path": "activemq-demo/src/main/java/com/example/demo/controller/TopicCustomerController.java",
    "chars": 544,
    "preview": "package com.example.demo.controller;\n\nimport org.springframework.jms.annotation.JmsListener;\nimport org.springframework."
  },
  {
    "path": "activemq-demo/src/main/resources/application.properties",
    "chars": 113,
    "preview": "#ӵַ\nspring.activemq.broker-url=tcp://192.168.0.1:61616\n#ǵԵ㣨queueô˴ĬӦfalseģôһΪtrue\nspring.jms.pub-sub-domain=true\n"
  },
  {
    "path": "activemq-demo/src/test/java/com/example/demo/DemoApplicationTests.java",
    "chars": 340,
    "preview": "package com.example.demo;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.boot.test."
  },
  {
    "path": "exception-demo/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "exception-demo/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4629,
    "preview": "/*\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE fi"
  },
  {
    "path": "exception-demo/.mvn/wrapper/maven-wrapper.properties",
    "chars": 116,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip\n"
  },
  {
    "path": "exception-demo/mvnw",
    "chars": 9114,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "exception-demo/mvnw.cmd",
    "chars": 5811,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "exception-demo/pom.xml",
    "chars": 1602,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "exception-demo/src/main/java/com/example/demo/ExceptionDemoApplication.java",
    "chars": 335,
    "preview": "package com.example.demo;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfig"
  },
  {
    "path": "exception-demo/src/main/java/com/example/demo/controller/DemoController.java",
    "chars": 790,
    "preview": "package com.example.demo.controller;\n\nimport com.example.demo.util.Result;\nimport org.springframework.stereotype.Control"
  },
  {
    "path": "exception-demo/src/main/java/com/example/demo/util/GlobleExceptionHandler.java",
    "chars": 702,
    "preview": "package com.example.demo.util;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.springframework.web.bind.annotation.Control"
  },
  {
    "path": "exception-demo/src/main/java/com/example/demo/util/Result.java",
    "chars": 691,
    "preview": "package com.example.demo.util;\n\nimport lombok.Data;\n\nimport java.io.Serializable;\n\n/**\n * 封装返回类\n */\n@Data\npublic class R"
  },
  {
    "path": "exception-demo/src/main/resources/application.properties",
    "chars": 1,
    "preview": "\n"
  },
  {
    "path": "exception-demo/src/test/java/com/example/demo/ExceptionDemoApplicationTests.java",
    "chars": 349,
    "preview": "package com.example.demo;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.boot.test."
  },
  {
    "path": "filter-demo/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "filter-demo/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4629,
    "preview": "/*\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE fi"
  },
  {
    "path": "filter-demo/.mvn/wrapper/maven-wrapper.properties",
    "chars": 116,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip\n"
  },
  {
    "path": "filter-demo/mvnw",
    "chars": 9114,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "filter-demo/mvnw.cmd",
    "chars": 5811,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "filter-demo/pom.xml",
    "chars": 1772,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "filter-demo/src/main/java/com/example/demo/DemoApplication.java",
    "chars": 446,
    "preview": "package com.example.demo;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfig"
  },
  {
    "path": "filter-demo/src/main/java/com/example/demo/config/WebConfig.java",
    "chars": 643,
    "preview": "//package com.example.demo.config;\n//\n//import com.example.demo.filter.MyFilter2;\n//import org.springframework.boot.web."
  },
  {
    "path": "filter-demo/src/main/java/com/example/demo/controller/DemoController.java",
    "chars": 399,
    "preview": "package com.example.demo.controller;\n\nimport org.springframework.stereotype.Controller;\nimport org.springframework.web.b"
  },
  {
    "path": "filter-demo/src/main/java/com/example/demo/filter/MyFilter1.java",
    "chars": 809,
    "preview": "package com.example.demo.filter;\n\nimport lombok.extern.slf4j.Slf4j;\n\nimport javax.servlet.*;\nimport javax.servlet.annota"
  },
  {
    "path": "filter-demo/src/main/java/com/example/demo/filter/MyFilter2.java",
    "chars": 806,
    "preview": "//package com.example.demo.filter;\n//\n//import lombok.extern.slf4j.Slf4j;\n//\n//import javax.servlet.*;\n//import javax.se"
  },
  {
    "path": "filter-demo/src/main/resources/application.properties",
    "chars": 1,
    "preview": "\n"
  },
  {
    "path": "filter-demo/src/test/java/com/example/demo/DemoApplicationTests.java",
    "chars": 340,
    "preview": "package com.example.demo;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.boot.test."
  },
  {
    "path": "jpa-demo/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "jpa-demo/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4629,
    "preview": "/*\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE fi"
  },
  {
    "path": "jpa-demo/.mvn/wrapper/maven-wrapper.properties",
    "chars": 116,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip\n"
  },
  {
    "path": "jpa-demo/mvnw",
    "chars": 9114,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "jpa-demo/mvnw.cmd",
    "chars": 5811,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "jpa-demo/pom.xml",
    "chars": 1968,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "jpa-demo/src/main/java/com/example/demo/SpringBootStudyJpaApplication.java",
    "chars": 345,
    "preview": "package com.example.demo;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfig"
  },
  {
    "path": "jpa-demo/src/main/java/com/example/demo/controller/UserController.java",
    "chars": 825,
    "preview": "package com.example.demo.controller;\n\nimport com.example.demo.entity.User;\nimport com.example.demo.service.UserService;\n"
  },
  {
    "path": "jpa-demo/src/main/java/com/example/demo/entity/User.java",
    "chars": 658,
    "preview": "package com.example.demo.entity;\n\nimport javax.persistence.*;\n\n@Entity\n@Table(name = \"user\")\npublic class User {\n\n    @I"
  },
  {
    "path": "jpa-demo/src/main/java/com/example/demo/repository/UserRepository.java",
    "chars": 494,
    "preview": "package com.example.demo.repository;\n\nimport com.example.demo.entity.User;\nimport org.springframework.data.jpa.repositor"
  },
  {
    "path": "jpa-demo/src/main/java/com/example/demo/service/UserService.java",
    "chars": 184,
    "preview": "package com.example.demo.service;\n\n\nimport com.example.demo.entity.User;\n\npublic interface UserService {\n    public User"
  },
  {
    "path": "jpa-demo/src/main/java/com/example/demo/service/impl/UserServiceImpl.java",
    "chars": 714,
    "preview": "package com.example.demo.service.impl;\n\nimport com.example.demo.entity.User;\nimport com.example.demo.repository.UserRepo"
  },
  {
    "path": "jpa-demo/src/main/resources/application.properties",
    "chars": 329,
    "preview": "#޸tomcatĬ϶˿ں\nserver.port=8090\n\n#ԴϢ\nspring.datasource.driver-class-name=com.mysql.jdbc.Driver\nspring.datasource.url=jdbc:"
  },
  {
    "path": "jpa-demo/src/test/java/com/example/demo/SpringBootStudyJpaApplicationTests.java",
    "chars": 354,
    "preview": "package com.example.demo;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.boot.test."
  },
  {
    "path": "pom.xml",
    "chars": 662,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "qrcode/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "qrcode/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4629,
    "preview": "/*\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE fi"
  },
  {
    "path": "qrcode/.mvn/wrapper/maven-wrapper.properties",
    "chars": 116,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip\n"
  },
  {
    "path": "qrcode/mvnw",
    "chars": 9114,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "qrcode/mvnw.cmd",
    "chars": 5811,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "qrcode/pom.xml",
    "chars": 1811,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "qrcode/src/main/java/com/example/demo/QrcodeApplication.java",
    "chars": 321,
    "preview": "package com.example.demo;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfig"
  },
  {
    "path": "qrcode/src/main/java/com/example/demo/controller/QrCodeController.java",
    "chars": 1685,
    "preview": "package com.example.demo.controller;\n\nimport com.example.demo.util.QRCodeUtil;\nimport org.springframework.stereotype.Con"
  },
  {
    "path": "qrcode/src/main/java/com/example/demo/util/QRCodeUtil.java",
    "chars": 4402,
    "preview": "package com.example.demo.util;\n\nimport com.google.zxing.BarcodeFormat;\nimport com.google.zxing.EncodeHintType;\nimport co"
  },
  {
    "path": "qrcode/src/main/resources/application.properties",
    "chars": 1,
    "preview": "\n"
  },
  {
    "path": "qrcode/src/test/java/com/example/demo/QrcodeApplicationTests.java",
    "chars": 342,
    "preview": "package com.example.demo;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.boot.test."
  },
  {
    "path": "sendmail/pom.xml",
    "chars": 1618,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "sendmail/src/main/java/com/example/mail/sendmail/SendMailApplication.java",
    "chars": 495,
    "preview": "package com.example.mail.sendmail;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.a"
  },
  {
    "path": "sendmail/src/main/java/com/example/mail/sendmail/controller/MailController.java",
    "chars": 976,
    "preview": "package com.example.mail.sendmail.controller;\n\nimport com.example.mail.sendmail.dto.Email;\nimport com.example.mail.sendm"
  },
  {
    "path": "sendmail/src/main/java/com/example/mail/sendmail/dto/Email.java",
    "chars": 1620,
    "preview": "package com.example.mail.sendmail.dto;\n\nimport java.io.File;\nimport java.util.List;\n\n/**\n * Email实体类\n *\n * @Author: lifq"
  },
  {
    "path": "sendmail/src/main/java/com/example/mail/sendmail/service/MailService.java",
    "chars": 220,
    "preview": "package com.example.mail.sendmail.service;\n\n\nimport com.example.mail.sendmail.dto.Email;\n\npublic interface MailService {"
  },
  {
    "path": "sendmail/src/main/java/com/example/mail/sendmail/service/impl/MailServiceImpl.java",
    "chars": 2250,
    "preview": "package com.example.mail.sendmail.service.impl;\n\nimport com.example.mail.sendmail.dto.Email;\nimport com.example.mail.sen"
  },
  {
    "path": "sendmail/src/main/resources/application.properties",
    "chars": 410,
    "preview": "spring.mail.host = smtp.163.com\nspring.mail.port = 465\nspring.mail.username = xxx@163.com\nspring.mail.password = xxx\nspr"
  },
  {
    "path": "spirng-boot-kaptcha/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "spirng-boot-kaptcha/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4629,
    "preview": "/*\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE fi"
  },
  {
    "path": "spirng-boot-kaptcha/.mvn/wrapper/maven-wrapper.properties",
    "chars": 116,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip\n"
  },
  {
    "path": "spirng-boot-kaptcha/mvnw",
    "chars": 9114,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "spirng-boot-kaptcha/mvnw.cmd",
    "chars": 5811,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "spirng-boot-kaptcha/pom.xml",
    "chars": 1765,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "spirng-boot-kaptcha/src/main/java/com/example/demo/DemoApplication.java",
    "chars": 317,
    "preview": "package com.example.demo;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfig"
  },
  {
    "path": "spirng-boot-kaptcha/src/main/java/com/example/demo/config/KaptchaConfig.java",
    "chars": 1838,
    "preview": "package com.example.demo.config;\n\n\nimport com.google.code.kaptcha.Constants;\nimport com.google.code.kaptcha.impl.Default"
  },
  {
    "path": "spirng-boot-kaptcha/src/main/java/com/example/demo/config/WebConfig.java",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "spirng-boot-kaptcha/src/main/java/com/example/demo/controller/KaptchaController.java",
    "chars": 2007,
    "preview": "package com.example.demo.controller;\n\nimport com.google.code.kaptcha.Constants;\nimport com.google.code.kaptcha.Producer;"
  },
  {
    "path": "spirng-boot-kaptcha/src/main/resources/application.properties",
    "chars": 17,
    "preview": "server.port=8081\n"
  },
  {
    "path": "spirng-boot-kaptcha/src/test/java/com/example/demo/DemoApplicationTests.java",
    "chars": 340,
    "preview": "package com.example.demo;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.boot.test."
  },
  {
    "path": "spring-boot-encry/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "spring-boot-encry/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4629,
    "preview": "/*\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE fi"
  },
  {
    "path": "spring-boot-encry/.mvn/wrapper/maven-wrapper.properties",
    "chars": 116,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip\n"
  },
  {
    "path": "spring-boot-encry/mvnw",
    "chars": 9114,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "spring-boot-encry/mvnw.cmd",
    "chars": 5811,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "spring-boot-encry/pom.xml",
    "chars": 2042,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "spring-boot-encry/src/main/java/com/example/springbootencry/SpringBootEncryApplication.java",
    "chars": 350,
    "preview": "package com.example.springbootencry;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot"
  },
  {
    "path": "spring-boot-encry/src/main/java/com/example/springbootencry/advice/DecryptRequestBodyAdvice.java",
    "chars": 2150,
    "preview": "package com.example.springbootencry.advice;\n\nimport com.alibaba.fastjson.JSON;\nimport com.example.springbootencry.util.D"
  },
  {
    "path": "spring-boot-encry/src/main/java/com/example/springbootencry/advice/EncryResponseBodyAdvice.java",
    "chars": 2233,
    "preview": "package com.example.springbootencry.advice;\n\nimport com.alibaba.fastjson.JSON;\nimport com.example.springbootencry.util.D"
  },
  {
    "path": "spring-boot-encry/src/main/java/com/example/springbootencry/controller/TestController.java",
    "chars": 1119,
    "preview": "package com.example.springbootencry.controller;\n\nimport com.example.springbootencry.util.Result;\nimport org.slf4j.Logger"
  },
  {
    "path": "spring-boot-encry/src/main/java/com/example/springbootencry/util/DesUtil.java",
    "chars": 4099,
    "preview": "package com.example.springbootencry.util;\n\nimport com.alibaba.fastjson.JSON;\nimport sun.misc.BASE64Decoder;\nimport sun.m"
  },
  {
    "path": "spring-boot-encry/src/main/java/com/example/springbootencry/util/Result.java",
    "chars": 801,
    "preview": "package com.example.springbootencry.util;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class Result implemen"
  },
  {
    "path": "spring-boot-encry/src/main/resources/application.yml",
    "chars": 21,
    "preview": "server:\n  port: 8888\n"
  },
  {
    "path": "spring-boot-init/src/main/java/com/example/springbootinit/component/ApplicationRunnerImpl.java",
    "chars": 543,
    "preview": "package com.example.springbootinit.component;\n\nimport org.springframework.boot.ApplicationArguments;\nimport org.springfr"
  },
  {
    "path": "spring-boot-init/src/main/java/com/example/springbootinit/component/CommandLineRunnerImpl.java",
    "chars": 494,
    "preview": "package com.example.springbootinit.component;\n\nimport org.springframework.boot.CommandLineRunner;\nimport org.springframe"
  },
  {
    "path": "spring-boot-init/src/main/java/com/example/springbootinit/component/PostConstructInit.java",
    "chars": 495,
    "preview": "package com.example.springbootinit.component;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org"
  },
  {
    "path": "spring-boot-init/src/main/java/com/example/springbootinit/component/TestService.java",
    "chars": 270,
    "preview": "package com.example.springbootinit.component;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.springframework.stereotype.C"
  },
  {
    "path": "spring-boot-init/src/test/java/com/example/springbootinit/Test.java",
    "chars": 7803,
    "preview": "package com.example.springbootinit;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONArray;\nimport com"
  },
  {
    "path": "spring-boot-jwt/src/main/java/com/example/springbootjwt/controller/LoginController.java",
    "chars": 1152,
    "preview": "package com.example.springbootjwt.controller;\n\nimport com.example.springbootjwt.entity.User;\nimport com.example.springbo"
  },
  {
    "path": "spring-boot-jwt/src/main/java/com/example/springbootjwt/controller/SecureController.java",
    "chars": 746,
    "preview": "package com.example.springbootjwt.controller;\n\nimport lombok.extern.slf4j.Slf4j;\nimport org.springframework.web.bind.ann"
  },
  {
    "path": "spring-boot-jwt/src/main/java/com/example/springbootjwt/entity/User.java",
    "chars": 333,
    "preview": "package com.example.springbootjwt.entity;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\n\n/**\n * @Description:\n "
  },
  {
    "path": "spring-boot-jwt/src/main/java/com/example/springbootjwt/filter/JwtFilter.java",
    "chars": 2084,
    "preview": "package com.example.springbootjwt.filter;\n\nimport com.auth0.jwt.interfaces.Claim;\nimport com.example.springbootjwt.util."
  },
  {
    "path": "spring-boot-jwt/src/main/java/com/example/springbootjwt/util/JwtUtil.java",
    "chars": 2020,
    "preview": "package com.example.springbootjwt.util;\n\nimport com.auth0.jwt.JWT;\nimport com.auth0.jwt.JWTVerifier;\nimport com.auth0.jw"
  },
  {
    "path": "spring-boot-jwt/src/main/resources/application.yml",
    "chars": 1,
    "preview": "\n"
  },
  {
    "path": "spring-boot-log/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "spring-boot-log/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4629,
    "preview": "/*\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE fi"
  },
  {
    "path": "spring-boot-log/.mvn/wrapper/maven-wrapper.properties",
    "chars": 116,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip\n"
  },
  {
    "path": "spring-boot-log/mvnw",
    "chars": 9114,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "spring-boot-log/mvnw.cmd",
    "chars": 5811,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "spring-boot-log/pom.xml",
    "chars": 1693,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "spring-boot-log/src/main/java/com/example/springbootlog/SpringBootLogApplication.java",
    "chars": 344,
    "preview": "package com.example.springbootlog;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.a"
  },
  {
    "path": "spring-boot-log/src/main/java/com/example/springbootlog/config/InterceptorConfig.java",
    "chars": 734,
    "preview": "package com.example.springbootlog.config;\n\nimport com.example.springbootlog.interceptor.SessionInterceptor;\nimport org.s"
  },
  {
    "path": "spring-boot-log/src/main/java/com/example/springbootlog/controller/TestLogController.java",
    "chars": 878,
    "preview": "package com.example.springbootlog.controller;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.sprin"
  },
  {
    "path": "spring-boot-log/src/main/java/com/example/springbootlog/interceptor/SessionInterceptor.java",
    "chars": 1264,
    "preview": "package com.example.springbootlog.interceptor;\n\nimport org.slf4j.MDC;\nimport org.springframework.web.servlet.ModelAndVie"
  },
  {
    "path": "spring-boot-log/src/main/resources/application.yml",
    "chars": 20,
    "preview": "server:\n  port: 8888"
  },
  {
    "path": "spring-boot-log/src/main/resources/logback-spring.xml",
    "chars": 1023,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<configuration>\n    <property name=\"log.base\" value=\"./log/logback\"/>\n\n    <appen"
  },
  {
    "path": "spring-boot-log/src/test/java/com/example/springbootlog/SpringBootLogApplicationTests.java",
    "chars": 233,
    "preview": "package com.example.springbootlog;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.context.Spri"
  },
  {
    "path": "spring-boot-mybatis-annotation/src/main/java/com/example/springboot/mybatisannotation/config/MybatisConfig.java",
    "chars": 655,
    "preview": "package com.example.springboot.mybatisannotation.config;\n\nimport org.mybatis.spring.boot.autoconfigure.ConfigurationCust"
  },
  {
    "path": "spring-boot-mybatis-annotation/src/main/java/com/example/springboot/mybatisannotation/controller/UserController.java",
    "chars": 967,
    "preview": "package com.example.springboot.mybatisannotation.controller;\n\nimport com.example.springboot.mybatisannotation.entity.Use"
  },
  {
    "path": "spring-boot-mybatis-annotation/src/main/java/com/example/springboot/mybatisannotation/dao/mapper/UserMapper.java",
    "chars": 667,
    "preview": "package com.example.springboot.mybatisannotation.dao.mapper;\n\n\nimport com.example.springboot.mybatisannotation.entity.Us"
  },
  {
    "path": "spring-boot-mybatis-annotation/src/main/java/com/example/springboot/mybatisannotation/dao/mapper/UserRoleMapper.java",
    "chars": 525,
    "preview": "package com.example.springboot.mybatisannotation.dao.mapper;\n\n\nimport com.example.springboot.mybatisannotation.entity.Us"
  },
  {
    "path": "spring-boot-mybatis-annotation/src/main/java/com/example/springboot/mybatisannotation/entity/User.java",
    "chars": 283,
    "preview": "package com.example.springboot.mybatisannotation.entity;\n\nimport lombok.Data;\n\n/**\n * User实体类\n *\n * @Author: java_suisui"
  },
  {
    "path": "spring-boot-mybatis-annotation/src/main/java/com/example/springboot/mybatisannotation/entity/UserRole.java",
    "chars": 244,
    "preview": "package com.example.springboot.mybatisannotation.entity;\n\nimport lombok.Data;\n\n/**\n * UserRole实体类\n *\n * @Author: java_su"
  },
  {
    "path": "spring-boot-mybatis-annotation/src/main/java/com/example/springboot/mybatisannotation/service/UserRoleService.java",
    "chars": 225,
    "preview": "package com.example.springboot.mybatisannotation.service;\n\n\nimport com.example.springboot.mybatisannotation.entity.UserR"
  },
  {
    "path": "spring-boot-mybatis-annotation/src/main/java/com/example/springboot/mybatisannotation/service/UserService.java",
    "chars": 270,
    "preview": "package com.example.springboot.mybatisannotation.service;\n\n\nimport com.example.springboot.mybatisannotation.entity.User;"
  },
  {
    "path": "spring-boot-mybatis-annotation/src/main/java/com/example/springboot/mybatisannotation/service/impl/UserRoleServiceImpl.java",
    "chars": 1105,
    "preview": "package com.example.springboot.mybatisannotation.service.impl;\n\nimport com.example.springboot.mybatisannotation.dao.mapp"
  },
  {
    "path": "spring-boot-mybatis-annotation/src/main/java/com/example/springboot/mybatisannotation/service/impl/UserServiceImpl.java",
    "chars": 1005,
    "preview": "package com.example.springboot.mybatisannotation.service.impl;\n\nimport com.example.springboot.mybatisannotation.dao.mapp"
  },
  {
    "path": "spring-boot-mybatis-annotation/src/main/resources/application.yml",
    "chars": 243,
    "preview": "spring:\n  #数据源\n  datasource:\n    url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&zeroDateT"
  },
  {
    "path": "spring-boot-mybatis-generator/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "spring-boot-mybatis-generator/pom.xml",
    "chars": 3355,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "spring-boot-mybatis-generator/src/main/java/com/example/springbootmybatis/generator/SpringBootMybatisGeneratorApplication.java",
    "chars": 384,
    "preview": "package com.example.springbootmybatis.generator;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springfr"
  },
  {
    "path": "spring-boot-mybatis-generator/src/main/java/com/example/springbootmybatis/generator/dao/UserMapper.java",
    "chars": 352,
    "preview": "package com.example.springbootmybatis.generator.dao;\n\nimport com.example.springbootmybatis.generator.entity.User;\nimport"
  },
  {
    "path": "spring-boot-mybatis-generator/src/main/java/com/example/springbootmybatis/generator/dao/UserRoleMapper.java",
    "chars": 376,
    "preview": "package com.example.springbootmybatis.generator.dao;\n\nimport com.example.springbootmybatis.generator.entity.UserRole;\nim"
  },
  {
    "path": "spring-boot-mybatis-generator/src/main/java/com/example/springbootmybatis/generator/entity/User.java",
    "chars": 1856,
    "preview": "package com.example.springbootmybatis.generator.entity;\n\nimport java.io.Serializable;\n\npublic class User implements Seri"
  },
  {
    "path": "spring-boot-mybatis-generator/src/main/java/com/example/springbootmybatis/generator/entity/UserRole.java",
    "chars": 1155,
    "preview": "package com.example.springbootmybatis.generator.entity;\n\nimport java.io.Serializable;\n\npublic class UserRole implements "
  },
  {
    "path": "spring-boot-mybatis-generator/src/main/resources/application.properties",
    "chars": 1,
    "preview": "\n"
  },
  {
    "path": "spring-boot-mybatis-generator/src/main/resources/mapper/UserMapper.xml",
    "chars": 2060,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org"
  },
  {
    "path": "spring-boot-mybatis-generator/src/main/resources/mapper/UserRoleMapper.xml",
    "chars": 1619,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org"
  },
  {
    "path": "spring-boot-mybatis-generator/src/main/resources/mybatis-generator.xml",
    "chars": 3065,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE generatorConfiguration\n        PUBLIC \"-//mybatis.org//DTD MyBatis Gene"
  },
  {
    "path": "spring-boot-mybatis-generator/src/test/java/com/example/springbootmybatis/generator/SpringBootMybatisGeneratorApplicationTests.java",
    "chars": 260,
    "preview": "package com.example.springbootmybatis.generator;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.tes"
  },
  {
    "path": "spring-boot-mybatis-xml/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "spring-boot-mybatis-xml/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4948,
    "preview": "/*\n * Copyright 2012-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lic"
  },
  {
    "path": "spring-boot-mybatis-xml/.mvn/wrapper/maven-wrapper.properties",
    "chars": 218,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip\nwrap"
  },
  {
    "path": "spring-boot-mybatis-xml/mvnw",
    "chars": 10079,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "spring-boot-mybatis-xml/mvnw.cmd",
    "chars": 6610,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "spring-boot-mybatis-xml/pom.xml",
    "chars": 2190,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "spring-boot-mybatis-xml/src/main/java/com/example/springboot/mybatisxml/SpringBootMybatisXmlApplication.java",
    "chars": 474,
    "preview": "package com.example.springboot.mybatisxml;\n\nimport org.mybatis.spring.annotation.MapperScan;\nimport org.springframework."
  },
  {
    "path": "spring-boot-mybatis-xml/src/main/java/com/example/springboot/mybatisxml/controller/UserController.java",
    "chars": 828,
    "preview": "package com.example.springboot.mybatisxml.controller;\n\nimport com.example.springboot.mybatisxml.entity.User;\nimport com."
  },
  {
    "path": "spring-boot-mybatis-xml/src/main/java/com/example/springboot/mybatisxml/dao/mapper/UserMapper.java",
    "chars": 199,
    "preview": "package com.example.springboot.mybatisxml.dao.mapper;\n\n\nimport com.example.springboot.mybatisxml.entity.User;\n\nimport ja"
  },
  {
    "path": "spring-boot-mybatis-xml/src/main/java/com/example/springboot/mybatisxml/entity/User.java",
    "chars": 275,
    "preview": "package com.example.springboot.mybatisxml.entity;\n\nimport lombok.Data;\n/**\n * User实体类\n *\n * @Author: java_suisui\n *\n */\n"
  },
  {
    "path": "spring-boot-mybatis-xml/src/main/java/com/example/springboot/mybatisxml/service/UserService.java",
    "chars": 196,
    "preview": "package com.example.springboot.mybatisxml.service;\n\n\nimport com.example.springboot.mybatisxml.entity.User;\n\nimport java."
  },
  {
    "path": "spring-boot-mybatis-xml/src/main/java/com/example/springboot/mybatisxml/service/impl/UserServiceImpl.java",
    "chars": 678,
    "preview": "package com.example.springboot.mybatisxml.service.impl;\n\nimport com.example.springboot.mybatisxml.dao.mapper.UserMapper;"
  },
  {
    "path": "spring-boot-mybatis-xml/src/main/resources/application.yml",
    "chars": 404,
    "preview": "spring:\n  #数据源\n  datasource:\n    url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&zeroDateT"
  },
  {
    "path": "spring-boot-mybatis-xml/src/main/resources/mapper/UserMapper.xml",
    "chars": 712,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org"
  },
  {
    "path": "spring-boot-mybatis-xml/src/main/resources/mybatis-config.xml",
    "chars": 323,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE configuration\n        PUBLIC \"-//mybatis.org//DTD Config 3.0//EN\"\n     "
  },
  {
    "path": "spring-boot-mybatis-xml/src/test/java/com/example/springboot/mybatisxml/SpringBootMybatisXmlApplicationTests.java",
    "chars": 248,
    "preview": "package com.example.springboot.mybatisxml;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.cont"
  },
  {
    "path": "spring-boot-read-yml/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "spring-boot-read-yml/.mvn/wrapper/MavenWrapperDownloader.java",
    "chars": 4629,
    "preview": "/*\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE fi"
  },
  {
    "path": "spring-boot-read-yml/.mvn/wrapper/maven-wrapper.properties",
    "chars": 116,
    "preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip\n"
  },
  {
    "path": "spring-boot-read-yml/mvnw",
    "chars": 9114,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "spring-boot-read-yml/mvnw.cmd",
    "chars": 5811,
    "preview": "@REM ----------------------------------------------------------------------------\n@REM Licensed to the Apache Software F"
  },
  {
    "path": "spring-boot-read-yml/pom.xml",
    "chars": 2030,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "spring-boot-read-yml/src/main/java/com/example/springbootreadyml/SpringBootReadYmlApplication.java",
    "chars": 356,
    "preview": "package com.example.springbootreadyml;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.bo"
  },
  {
    "path": "spring-boot-read-yml/src/main/java/com/example/springbootreadyml/config/WxMpProperties.java",
    "chars": 702,
    "preview": "package com.example.springbootreadyml.config;\n\nimport lombok.Data;\nimport org.springframework.boot.context.properties.Co"
  },
  {
    "path": "spring-boot-read-yml/src/main/java/com/example/springbootreadyml/controller/TestReadYmlController.java",
    "chars": 840,
    "preview": "package com.example.springbootreadyml.controller;\n\nimport com.alibaba.fastjson.JSON;\nimport com.example.springbootreadym"
  },
  {
    "path": "spring-boot-read-yml/src/main/resources/application.yml",
    "chars": 317,
    "preview": "wechat:\n  mp:\n    configs:\n    - appid: appid1\n      secret: arr1_secret\n      token: arr1_token\n      aesKey: arr1_key\n"
  },
  {
    "path": "spring-boot-read-yml/src/test/java/com/example/springbootreadyml/SpringBootReadYmlApplicationTests.java",
    "chars": 241,
    "preview": "package com.example.springbootreadyml;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.context."
  },
  {
    "path": "spring-boot-security/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "spring-boot-security/pom.xml",
    "chars": 1871,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "spring-boot-security/src/main/java/com/example/springboot/security/SpringBootSecurityApplication.java",
    "chars": 360,
    "preview": "package com.example.springboot.security;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework."
  },
  {
    "path": "spring-boot-security/src/main/java/com/example/springboot/security/config/MyPasswordEncoder.java",
    "chars": 444,
    "preview": "package com.example.springboot.security.config;\n\nimport org.springframework.security.crypto.password.PasswordEncoder;\n\np"
  },
  {
    "path": "spring-boot-security/src/main/java/com/example/springboot/security/config/WebSecurityConfig.java",
    "chars": 1485,
    "preview": "package com.example.springboot.security.config;\n\nimport org.springframework.context.annotation.Configuration;\nimport org"
  },
  {
    "path": "spring-boot-security/src/main/java/com/example/springboot/security/controller/AdminController.java",
    "chars": 344,
    "preview": "package com.example.springboot.security.controller;\n\nimport org.springframework.web.bind.annotation.GetMapping;\nimport o"
  },
  {
    "path": "spring-boot-security/src/main/java/com/example/springboot/security/controller/AppController.java",
    "chars": 350,
    "preview": "package com.example.springboot.security.controller;\n\nimport org.springframework.web.bind.annotation.GetMapping;\nimport o"
  },
  {
    "path": "spring-boot-security/src/main/java/com/example/springboot/security/controller/UserController.java",
    "chars": 340,
    "preview": "package com.example.springboot.security.controller;\n\nimport org.springframework.web.bind.annotation.GetMapping;\nimport o"
  },
  {
    "path": "spring-boot-security/src/main/resources/application.properties",
    "chars": 74,
    "preview": "spring.security.user.name=java_suisui\nspring.security.user.password=123456"
  },
  {
    "path": "spring-boot-security/src/test/java/com/example/springboot/security/SpringBootSecurityApplicationTests.java",
    "chars": 244,
    "preview": "package com.example.springboot.security;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.contex"
  },
  {
    "path": "spring-boot-study-base/pom.xml",
    "chars": 1808,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www"
  },
  {
    "path": "spring-boot-study-base/src/main/java/com/study/day01/Config.java",
    "chars": 533,
    "preview": "package com.study.day01;\n\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotat"
  },
  {
    "path": "spring-boot-study-base/src/main/java/com/study/day01/LinuxCondition.java",
    "chars": 478,
    "preview": "package com.study.day01;\n\nimport org.springframework.context.annotation.Condition;\nimport org.springframework.context.an"
  },
  {
    "path": "spring-boot-study-base/src/main/java/com/study/day01/LinuxService.java",
    "chars": 182,
    "preview": "package com.study.day01;\n\n/**\n * @Auther: lifq\n * @Description:\n */\npublic class LinuxService implements ListService {\n "
  },
  {
    "path": "spring-boot-study-base/src/main/java/com/study/day01/ListService.java",
    "chars": 184,
    "preview": "package com.study.day01;\n\nimport org.springframework.stereotype.Service;\n\n/**\n * @Auther: lifq\n * @Description:\n */\npubl"
  },
  {
    "path": "spring-boot-study-base/src/main/java/com/study/day01/Main01.java",
    "chars": 566,
    "preview": "package com.study.day01;\n\nimport org.springframework.context.annotation.AnnotationConfigApplicationContext;\n\n/**\n * @Aut"
  },
  {
    "path": "spring-boot-study-base/src/main/java/com/study/day01/WindowsCondition.java",
    "chars": 482,
    "preview": "package com.study.day01;\n\nimport org.springframework.context.annotation.Condition;\nimport org.springframework.context.an"
  },
  {
    "path": "spring-boot-study-base/src/main/java/com/study/day01/WindowsService.java",
    "chars": 185,
    "preview": "package com.study.day01;\n\n/**\n * @Auther: lifq\n * @Description:\n */\npublic class WindowsService implements ListService {"
  },
  {
    "path": "spring-boot-websocket/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  },
  {
    "path": "spring-boot-websocket/pom.xml",
    "chars": 2213,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "spring-boot-websocket/src/main/java/com/example/springboot/websocket/SpringBootWebsocketApplication.java",
    "chars": 363,
    "preview": "package com.example.springboot.websocket;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework"
  },
  {
    "path": "spring-boot-websocket/src/main/java/com/example/springboot/websocket/config/WebSocketConfig.java",
    "chars": 752,
    "preview": "package com.example.springboot.websocket.config;\n\nimport org.springframework.context.annotation.Bean;\nimport org.springf"
  },
  {
    "path": "spring-boot-websocket/src/main/java/com/example/springboot/websocket/controller/WebSocketController.java",
    "chars": 1354,
    "preview": "package com.example.springboot.websocket.controller;\n\nimport com.example.springboot.websocket.util.WebSocketServer;\nimpo"
  },
  {
    "path": "spring-boot-websocket/src/main/java/com/example/springboot/websocket/dto/SocketMessage.java",
    "chars": 131,
    "preview": "package com.example.springboot.websocket.dto;\n\npublic class SocketMessage {\n\n    public String message;\n\n    public Stri"
  },
  {
    "path": "spring-boot-websocket/src/main/java/com/example/springboot/websocket/util/WebSocketServer.java",
    "chars": 3284,
    "preview": "package com.example.springboot.websocket.util;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.spri"
  },
  {
    "path": "spring-boot-websocket/src/main/resources/application.properties",
    "chars": 1,
    "preview": "\n"
  },
  {
    "path": "spring-boot-websocket/src/main/resources/static/index.html",
    "chars": 1460,
    "preview": "<!DOCTYPE html>\n<html>\n<head>\n    <meta charset=\"UTF-8\">\n    <title>websocket测试</title>\n    <script src=\"http://libs.bai"
  },
  {
    "path": "spring-boot-websocket/src/test/java/com/example/springboot/websocket/SpringBootWebsocketApplicationTests.java",
    "chars": 246,
    "preview": "package com.example.springboot.websocket;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.test.conte"
  },
  {
    "path": "spring-cache-demo/.gitignore",
    "chars": 333,
    "preview": "HELP.md\ntarget/\n!.mvn/wrapper/maven-wrapper.jar\n!**/src/main/**\n!**/src/test/**\n\n### STS ###\n.apt_generated\n.classpath\n."
  }
]

// ... and 99 more files (download for full content)

About this extraction

This page contains the full source code of the suisui2019/springboot-study GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 299 files (505.8 KB), approximately 143.6k tokens, and a symbol index with 435 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!