gitextract_zh464p81/ ├── .gitignore ├── 01.Start-Spring-Boot/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── springboot/ │ │ │ └── demo/ │ │ │ └── DemoApplication.java │ │ └── resources/ │ │ └── application.properties │ └── test/ │ └── java/ │ └── com/ │ └── springboot/ │ └── demo/ │ └── DemoApplicationTests.java ├── 02.Spring-Boot-Config/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── springboot/ │ │ │ ├── Application.java │ │ │ ├── bean/ │ │ │ │ ├── BlogProperties.java │ │ │ │ ├── ConfigBean.java │ │ │ │ └── TestConfigBean.java │ │ │ └── controller/ │ │ │ └── IndexController.java │ │ └── resources/ │ │ ├── application-dev.properties │ │ ├── application-prod.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ └── test.properties │ └── test/ │ └── java/ │ └── com/ │ └── springboot/ │ └── demo/ │ └── DemoApplicationTests.java ├── 03.Spring-Boot-MyBatis/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── springboot/ │ │ ├── Application.java │ │ ├── bean/ │ │ │ └── Student.java │ │ ├── controller/ │ │ │ └── TestController.java │ │ ├── mapper/ │ │ │ └── StudentMapper.java │ │ └── service/ │ │ ├── StudentService.java │ │ └── impl/ │ │ └── StudentServiceImp.java │ └── resources/ │ ├── application.yml │ └── init.sql ├── 04.Spring-Boot-JdbcTemplate/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── springboot/ │ │ ├── Application.java │ │ ├── bean/ │ │ │ └── Student.java │ │ ├── controller/ │ │ │ └── TestController.java │ │ ├── dao/ │ │ │ ├── StudentDao.java │ │ │ └── impl/ │ │ │ └── StudentDaoImp.java │ │ ├── mapper/ │ │ │ └── StudentMapper.java │ │ └── service/ │ │ ├── StudentService.java │ │ └── impl/ │ │ └── StudentServiceImp.java │ └── resources/ │ ├── application.yml │ └── init.sql ├── 05.Spring-Boot-MyBatis-MultiDataSource/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── springboot/ │ │ ├── Application.java │ │ ├── controller/ │ │ │ └── StudentController.java │ │ ├── datasource/ │ │ │ ├── MysqlDatasourceConfig.java │ │ │ └── OracleDatasourceConfig.java │ │ ├── mysqldao/ │ │ │ └── MysqlStudentMapper.java │ │ ├── oracledao/ │ │ │ └── OracleStudentMapper.java │ │ └── service/ │ │ ├── StudentService.java │ │ └── impl/ │ │ └── StudentServiceImp.java │ └── resources/ │ ├── application.yml │ ├── mapper/ │ │ ├── mysql/ │ │ │ └── MysqlStudentMapper.xml │ │ └── oracle/ │ │ └── OracleStudentMapper.xml │ ├── mysql_sql.sql │ └── oracle_sql.sql ├── 06.Spring-Boot-JdbcTemplate-MultiDataSource/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── springboot/ │ │ ├── Application.java │ │ ├── controller/ │ │ │ └── StudentController.java │ │ ├── dao/ │ │ │ ├── MysqlStudentDao.java │ │ │ ├── OracleStudentDao.java │ │ │ └── impl/ │ │ │ ├── MysqlStudentDaoImp.java │ │ │ └── OracleStudentDaoImp.java │ │ ├── datasource/ │ │ │ └── DataSourceConfig.java │ │ └── service/ │ │ ├── StudentService.java │ │ └── impl/ │ │ └── StudentServiceImp.java │ └── resources/ │ ├── application.yml │ ├── mysql_sql.sql │ └── oracle_sql.sql ├── 07.Spring-Boot-AOP-Log/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── springboot/ │ │ ├── Application.java │ │ ├── annotation/ │ │ │ └── Log.java │ │ ├── aspect/ │ │ │ └── LogAspect.java │ │ ├── controller/ │ │ │ └── TestController.java │ │ ├── dao/ │ │ │ ├── SysLogDao.java │ │ │ └── impl/ │ │ │ └── SysLogDaoImp.java │ │ ├── domain/ │ │ │ └── SysLog.java │ │ └── util/ │ │ ├── HttpContextUtils.java │ │ └── IPUtils.java │ └── resources/ │ ├── application.yml │ └── init.sql ├── 08.Spring-Boot-Thymeleaf/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── springboot/ │ │ ├── Application.java │ │ ├── bean/ │ │ │ └── Account.java │ │ └── controller/ │ │ └── IndexController.java │ └── resources/ │ ├── application.properties │ ├── static/ │ │ └── css/ │ │ └── style.css │ └── templates/ │ └── account.html ├── 09.Spring-Boot-Redis-Cache/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── springboot/ │ │ ├── Application.java │ │ ├── ApplicationTest.java │ │ ├── bean/ │ │ │ └── Student.java │ │ ├── config/ │ │ │ └── RedisConfig.java │ │ ├── mapper/ │ │ │ └── StudentMapper.java │ │ └── service/ │ │ ├── StudentService.java │ │ └── impl/ │ │ └── StudentServiceImpl.java │ └── resources/ │ ├── application.yml │ └── init.sql ├── 10.Spring-Boot-Ehcache-Cache/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── springboot/ │ │ ├── Application.java │ │ ├── ApplicationTest.java │ │ ├── bean/ │ │ │ └── Student.java │ │ ├── mapper/ │ │ │ └── StudentMapper.java │ │ └── service/ │ │ ├── StudentService.java │ │ └── impl/ │ │ └── StudentServiceImpl.java │ └── resources/ │ ├── application.yml │ ├── ehcache.xml │ └── init.sql ├── 11.Spring-Boot-Shiro-Authentication/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── springboot/ │ │ ├── Application.java │ │ ├── config/ │ │ │ └── ShiroConfig.java │ │ ├── controller/ │ │ │ └── LoginController.java │ │ ├── dao/ │ │ │ └── UserMapper.java │ │ ├── pojo/ │ │ │ ├── ResponseBo.java │ │ │ └── User.java │ │ ├── shiro/ │ │ │ └── ShiroRealm.java │ │ └── util/ │ │ └── MD5Utils.java │ └── resources/ │ ├── application.yml │ ├── init.sql │ ├── mapper/ │ │ └── UserMapper.xml │ ├── static/ │ │ └── css/ │ │ └── login.css │ └── templates/ │ ├── index.html │ └── login.html ├── 12.Spring-Boot-Shiro-RememberMe/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── springboot/ │ │ ├── Application.java │ │ ├── config/ │ │ │ └── ShiroConfig.java │ │ ├── controller/ │ │ │ └── LoginController.java │ │ ├── dao/ │ │ │ └── UserMapper.java │ │ ├── pojo/ │ │ │ ├── ResponseBo.java │ │ │ └── User.java │ │ ├── shiro/ │ │ │ └── ShiroRealm.java │ │ └── util/ │ │ └── MD5Utils.java │ └── resources/ │ ├── application.yml │ ├── init.sql │ ├── mapper/ │ │ └── UserMapper.xml │ ├── static/ │ │ └── css/ │ │ └── login.css │ └── templates/ │ ├── index.html │ └── login.html ├── 13.Spring-Boot-Shiro-Authorization/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── springboot/ │ │ ├── Application.java │ │ ├── config/ │ │ │ └── ShiroConfig.java │ │ ├── controller/ │ │ │ ├── LoginController.java │ │ │ └── UserController.java │ │ ├── dao/ │ │ │ ├── UserMapper.java │ │ │ ├── UserPermissionMapper.java │ │ │ └── UserRoleMapper.java │ │ ├── handler/ │ │ │ └── GlobalExceptionHandler.java │ │ ├── pojo/ │ │ │ ├── Permission.java │ │ │ ├── ResponseBo.java │ │ │ ├── Role.java │ │ │ └── User.java │ │ ├── shiro/ │ │ │ └── ShiroRealm.java │ │ └── util/ │ │ └── MD5Utils.java │ └── resources/ │ ├── application.yml │ ├── init.sql │ ├── mapper/ │ │ ├── UserMapper.xml │ │ ├── UserPermissionMapper.xml │ │ └── UserRoleMapper.xml │ ├── static/ │ │ └── css/ │ │ └── login.css │ └── templates/ │ ├── 403.html │ ├── index.html │ ├── login.html │ └── user.html ├── 14.Spring-Boot-Shiro-Redis/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── springboot/ │ │ ├── Application.java │ │ ├── config/ │ │ │ └── ShiroConfig.java │ │ ├── controller/ │ │ │ ├── LoginController.java │ │ │ └── UserController.java │ │ ├── dao/ │ │ │ ├── UserMapper.java │ │ │ ├── UserPermissionMapper.java │ │ │ └── UserRoleMapper.java │ │ ├── handler/ │ │ │ └── GlobalExceptionHandler.java │ │ ├── pojo/ │ │ │ ├── Permission.java │ │ │ ├── ResponseBo.java │ │ │ ├── Role.java │ │ │ └── User.java │ │ ├── shiro/ │ │ │ └── ShiroRealm.java │ │ └── util/ │ │ └── MD5Utils.java │ └── resources/ │ ├── application.yml │ ├── init.sql │ ├── mapper/ │ │ ├── UserMapper.xml │ │ ├── UserPermissionMapper.xml │ │ └── UserRoleMapper.xml │ ├── static/ │ │ └── css/ │ │ └── login.css │ └── templates/ │ ├── 403.html │ ├── index.html │ ├── login.html │ └── user.html ├── 15.Spring-Boot-Shiro-Ehcache/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── springboot/ │ │ ├── Application.java │ │ ├── config/ │ │ │ └── ShiroConfig.java │ │ ├── controller/ │ │ │ ├── LoginController.java │ │ │ └── UserController.java │ │ ├── dao/ │ │ │ ├── UserMapper.java │ │ │ ├── UserPermissionMapper.java │ │ │ └── UserRoleMapper.java │ │ ├── handler/ │ │ │ └── GlobalExceptionHandler.java │ │ ├── pojo/ │ │ │ ├── Permission.java │ │ │ ├── ResponseBo.java │ │ │ ├── Role.java │ │ │ └── User.java │ │ ├── shiro/ │ │ │ └── ShiroRealm.java │ │ └── util/ │ │ └── MD5Utils.java │ └── resources/ │ ├── application.yml │ ├── config/ │ │ └── shiro-ehcache.xml │ ├── init.sql │ ├── mapper/ │ │ ├── UserMapper.xml │ │ ├── UserPermissionMapper.xml │ │ └── UserRoleMapper.xml │ ├── static/ │ │ └── css/ │ │ └── login.css │ └── templates/ │ ├── 403.html │ ├── index.html │ ├── login.html │ └── user.html ├── 16.Spring-Boot-Shiro-Thymeleaf-Tag/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── springboot/ │ │ ├── Application.java │ │ ├── config/ │ │ │ └── ShiroConfig.java │ │ ├── controller/ │ │ │ ├── LoginController.java │ │ │ └── UserController.java │ │ ├── dao/ │ │ │ ├── UserMapper.java │ │ │ ├── UserPermissionMapper.java │ │ │ └── UserRoleMapper.java │ │ ├── handler/ │ │ │ └── GlobalExceptionHandler.java │ │ ├── pojo/ │ │ │ ├── Permission.java │ │ │ ├── ResponseBo.java │ │ │ ├── Role.java │ │ │ └── User.java │ │ ├── shiro/ │ │ │ └── ShiroRealm.java │ │ └── util/ │ │ └── MD5Utils.java │ └── resources/ │ ├── application.yml │ ├── config/ │ │ └── shiro-ehcache.xml │ ├── init.sql │ ├── mapper/ │ │ ├── UserMapper.xml │ │ ├── UserPermissionMapper.xml │ │ └── UserRoleMapper.xml │ ├── static/ │ │ └── css/ │ │ └── login.css │ └── templates/ │ ├── 403.html │ ├── index.html │ ├── login.html │ └── user.html ├── 17.Spring-Boot-Shiro-Session/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── springboot/ │ │ ├── Application.java │ │ ├── config/ │ │ │ └── ShiroConfig.java │ │ ├── controller/ │ │ │ ├── LoginController.java │ │ │ ├── SessionController.java │ │ │ └── UserController.java │ │ ├── dao/ │ │ │ ├── UserMapper.java │ │ │ ├── UserPermissionMapper.java │ │ │ └── UserRoleMapper.java │ │ ├── handler/ │ │ │ └── GlobalExceptionHandler.java │ │ ├── listener/ │ │ │ └── ShiroSessionListener.java │ │ ├── pojo/ │ │ │ ├── Permission.java │ │ │ ├── ResponseBo.java │ │ │ ├── Role.java │ │ │ ├── User.java │ │ │ └── UserOnline.java │ │ ├── service/ │ │ │ ├── SessionService.java │ │ │ └── impl/ │ │ │ └── SessionServiceImpl.java │ │ ├── shiro/ │ │ │ └── ShiroRealm.java │ │ └── util/ │ │ └── MD5Utils.java │ └── resources/ │ ├── application.yml │ ├── config/ │ │ └── shiro-ehcache.xml │ ├── init.sql │ ├── mapper/ │ │ ├── UserMapper.xml │ │ ├── UserPermissionMapper.xml │ │ └── UserRoleMapper.xml │ ├── static/ │ │ ├── css/ │ │ │ └── login.css │ │ └── js/ │ │ └── dateFormat.js │ └── templates/ │ ├── 403.html │ ├── index.html │ ├── login.html │ ├── online.html │ └── user.html ├── 18.Spring-Boot-Jackson/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ ├── DemoApplication.java │ │ │ ├── config/ │ │ │ │ ├── JacksonConfig.java │ │ │ │ ├── UserDeserializer.java │ │ │ │ └── UserSerializer.java │ │ │ ├── controller/ │ │ │ │ └── TestJsonController.java │ │ │ └── pojo/ │ │ │ └── User.java │ │ └── resources/ │ │ └── application.properties │ └── test/ │ └── java/ │ └── com/ │ └── example/ │ └── demo/ │ └── DemoApplicationTests.java ├── 19.Spring-Boot-Testing/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── demo/ │ │ │ └── springboot/ │ │ │ └── test/ │ │ │ ├── TestApplication.java │ │ │ ├── config/ │ │ │ │ └── MyMapper.java │ │ │ ├── controller/ │ │ │ │ └── UserController.java │ │ │ ├── domain/ │ │ │ │ └── User.java │ │ │ ├── mapper/ │ │ │ │ ├── SeqenceMapper.java │ │ │ │ └── UserMapper.java │ │ │ └── service/ │ │ │ ├── IService.java │ │ │ ├── UserService.java │ │ │ └── impl/ │ │ │ ├── BaseService.java │ │ │ └── UserServiceImpl.java │ │ └── resources/ │ │ ├── application.yml │ │ ├── config/ │ │ │ └── mybatis-config.xml │ │ └── init.sql │ └── test/ │ └── java/ │ └── demo/ │ └── springboot/ │ └── test/ │ └── UserControllerTest.java ├── 20.Spring-Boot-Swagger2/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ ├── config/ │ │ │ │ ├── SwaggerConfig.java │ │ │ │ └── WebConfig.java │ │ │ ├── controller/ │ │ │ │ └── UserController.java │ │ │ └── domain/ │ │ │ └── User.java │ │ └── resources/ │ │ └── application.yml │ └── test/ │ └── java/ │ └── com/ │ └── example/ │ └── demo/ │ └── DemoApplicationTests.java ├── 21.Spring-Boot-Actuator/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── springboot/ │ │ │ └── demo/ │ │ │ └── DemoApplication.java │ │ └── resources/ │ │ └── application.yml │ └── test/ │ └── java/ │ └── com/ │ └── springboot/ │ └── demo/ │ └── DemoApplicationTests.java ├── 22.Spring-Boot-Email/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── springboot/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ └── controller/ │ │ │ └── EmailController.java │ │ └── resources/ │ │ ├── application.yml │ │ ├── static/ │ │ │ └── file/ │ │ │ └── 项目文档.docx │ │ └── templates/ │ │ └── emailTemplate.html │ └── test/ │ └── java/ │ └── com/ │ └── springboot/ │ └── demo/ │ └── DemoApplicationTests.java ├── 23.Spring-Boot-Admin/ │ ├── Spring Boot Admin Client/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── example/ │ │ │ │ └── demo/ │ │ │ │ └── DemoApplication.java │ │ │ └── resources/ │ │ │ └── application.yml │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── example/ │ │ └── demo/ │ │ └── DemoApplicationTests.java │ └── Spring Boot Admin Server/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ └── DemoApplication.java │ │ └── resources/ │ │ └── application.yml │ └── test/ │ └── java/ │ └── com/ │ └── example/ │ └── demo/ │ └── DemoApplicationTests.java ├── 24.Spring-Boot-Devtools/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── springboot/ │ │ │ └── demo/ │ │ │ └── DemoApplication.java │ │ └── resources/ │ │ └── application.yml │ └── test/ │ └── java/ │ └── com/ │ └── springboot/ │ └── demo/ │ └── DemoApplicationTests.java ├── 25.Spring-Boot-Exception/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── cc/ │ │ │ └── mrbird/ │ │ │ ├── Application.java │ │ │ ├── controller/ │ │ │ │ └── UserController.java │ │ │ ├── exception/ │ │ │ │ └── UserNotExistException.java │ │ │ └── handler/ │ │ │ └── ControllerExceptionHandler.java │ │ └── resources/ │ │ ├── application.properties │ │ └── resources/ │ │ └── error/ │ │ └── 500.html │ └── test/ │ └── java/ │ └── cc/ │ └── mrbird/ │ └── cc/ │ └── mrbird/ │ └── demo/ │ └── ApplicationTests.java ├── 26.Spring-Boot-Filter-Interceptor/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── cc/ │ │ │ └── mrbird/ │ │ │ ├── Application.java │ │ │ ├── config/ │ │ │ │ └── WebConfig.java │ │ │ ├── controller/ │ │ │ │ └── UserController.java │ │ │ ├── filter/ │ │ │ │ └── TimeFilter.java │ │ │ └── interceptor/ │ │ │ └── TimeInterceptor.java │ │ └── resources/ │ │ ├── application.properties │ │ └── resources/ │ │ └── error/ │ │ └── 500.html │ └── test/ │ └── java/ │ └── cc/ │ └── mrbird/ │ └── cc/ │ └── mrbird/ │ └── demo/ │ └── ApplicationTests.java ├── 27.Spring-Boot-Mapper-PageHelper/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── springboot/ │ │ ├── Application.java │ │ ├── ApplicationTest.java │ │ ├── bean/ │ │ │ └── User.java │ │ ├── config/ │ │ │ └── MyMapper.java │ │ ├── mapper/ │ │ │ ├── SeqenceMapper.java │ │ │ └── UserMapper.java │ │ └── service/ │ │ ├── IService.java │ │ ├── UserService.java │ │ └── impl/ │ │ ├── BaseService.java │ │ └── UserServiceImpl.java │ └── resources/ │ ├── application.yml │ ├── mapper/ │ │ └── UserMapper.xml │ └── mybatis-generator.xml ├── 28.Spring-Cloud-Eureka-Server-Discovery/ │ ├── Eureka-Client/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ └── controller/ │ │ │ └── TestController.java │ │ └── resources/ │ │ └── application.yml │ ├── Eureka-Service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ └── DemoApplication.java │ │ └── resources/ │ │ ├── application-peer1.yml │ │ ├── application-peer2.yml │ │ └── application.yml │ └── Server-Consumer/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── example/ │ │ └── demo/ │ │ ├── DemoApplication.java │ │ └── controller/ │ │ └── TestController.java │ └── resources/ │ └── application.yml ├── 29.Spring-Cloud-Ribbon-LoadBalance/ │ ├── Eureka-Client/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ ├── controller/ │ │ │ │ ├── TestController.java │ │ │ │ └── UserController.java │ │ │ └── domain/ │ │ │ └── User.java │ │ └── resources/ │ │ └── application.yml │ ├── Eureka-Service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ └── DemoApplication.java │ │ └── resources/ │ │ ├── application-peer1.yml │ │ ├── application-peer2.yml │ │ └── application.yml │ └── Ribbon-Consumer/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── example/ │ │ └── demo/ │ │ ├── DemoApplication.java │ │ ├── controller/ │ │ │ └── TestController.java │ │ └── domain/ │ │ └── User.java │ └── resources/ │ └── application.yml ├── 30.Spring-Cloud-Hystrix-Circuit-Breaker/ │ ├── Eureka-Client/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ ├── controller/ │ │ │ │ ├── TestController.java │ │ │ │ └── UserController.java │ │ │ └── domain/ │ │ │ └── User.java │ │ └── resources/ │ │ └── application.yml │ ├── Eureka-Service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ └── DemoApplication.java │ │ └── resources/ │ │ ├── application-peer1.yml │ │ ├── application-peer2.yml │ │ └── application.yml │ └── Ribbon-Consumer/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── example/ │ │ └── demo/ │ │ ├── DemoApplication.java │ │ ├── Service/ │ │ │ └── UserService.java │ │ ├── controller/ │ │ │ └── TestController.java │ │ ├── domain/ │ │ │ └── User.java │ │ └── filter/ │ │ └── HystrixRequestContextServletFilter.java │ └── resources/ │ └── application.yml ├── 31.Spring-Cloud-Hystrix-Dashboard-Turbine/ │ ├── Eureka-Client/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ ├── controller/ │ │ │ │ ├── TestController.java │ │ │ │ └── UserController.java │ │ │ └── domain/ │ │ │ └── User.java │ │ └── resources/ │ │ └── application.yml │ ├── Eureka-Service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ └── DemoApplication.java │ │ └── resources/ │ │ ├── application-peer1.yml │ │ ├── application-peer2.yml │ │ └── application.yml │ ├── Hystrix-Dashboard/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ └── DemoApplication.java │ │ └── resources/ │ │ └── application.yml │ ├── Ribbon-Consumer/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ ├── Service/ │ │ │ │ └── UserService.java │ │ │ ├── controller/ │ │ │ │ └── TestController.java │ │ │ ├── domain/ │ │ │ │ └── User.java │ │ │ └── filter/ │ │ │ └── HystrixRequestContextServletFilter.java │ │ └── resources/ │ │ └── application.yml │ └── Turbine/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── example/ │ │ └── demo/ │ │ └── DemoApplication.java │ └── resources/ │ └── application.yml ├── 32.Spring-Cloud-Hystrix-Dashboard-Turbine-RabbitMQ/ │ ├── Eureka-Client/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ ├── controller/ │ │ │ │ ├── TestController.java │ │ │ │ └── UserController.java │ │ │ └── domain/ │ │ │ └── User.java │ │ └── resources/ │ │ └── application.yml │ ├── Eureka-Service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ └── DemoApplication.java │ │ └── resources/ │ │ ├── application-peer1.yml │ │ ├── application-peer2.yml │ │ └── application.yml │ ├── Hystrix-Dashboard/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ └── DemoApplication.java │ │ └── resources/ │ │ └── application.yml │ ├── Ribbon-Consumer/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ ├── Service/ │ │ │ │ └── UserService.java │ │ │ ├── controller/ │ │ │ │ └── TestController.java │ │ │ ├── domain/ │ │ │ │ └── User.java │ │ │ └── filter/ │ │ │ └── HystrixRequestContextServletFilter.java │ │ └── resources/ │ │ └── application.yml │ └── Turbine-Stream/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── example/ │ │ └── demo/ │ │ └── DemoApplication.java │ └── resources/ │ └── application.yml ├── 33.Spring-Cloud-Feign-Declarative-REST-Client/ │ ├── Eureka-Client/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ ├── controller/ │ │ │ │ ├── TestController.java │ │ │ │ └── UserController.java │ │ │ └── domain/ │ │ │ └── User.java │ │ └── resources/ │ │ └── application.yml │ ├── Eureka-Service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ └── DemoApplication.java │ │ └── resources/ │ │ ├── application-peer1.yml │ │ ├── application-peer2.yml │ │ └── application.yml │ └── Feign-Consumer/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── example/ │ │ └── demo/ │ │ ├── DemoApplication.java │ │ ├── controller/ │ │ │ └── TestController.java │ │ ├── domain/ │ │ │ └── User.java │ │ └── service/ │ │ ├── UserService.java │ │ └── UserServiceFallback.java │ └── resources/ │ └── application.yml ├── 34.Start-Spring-Security/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ ├── SecurityApplication.java │ │ ├── security/ │ │ │ └── browser/ │ │ │ └── BrowserSecurityConfig.java │ │ └── web/ │ │ └── controller/ │ │ └── TestController.java │ └── resources/ │ └── application.yml ├── 35.Spring-Security-Authentication/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ ├── SecurityApplication.java │ │ ├── domain/ │ │ │ └── MyUser.java │ │ ├── handler/ │ │ │ ├── MyAuthenticationFailureHandler.java │ │ │ └── MyAuthenticationSucessHandler.java │ │ ├── security/ │ │ │ └── browser/ │ │ │ ├── BrowserSecurityConfig.java │ │ │ └── UserDetailService.java │ │ └── web/ │ │ └── controller/ │ │ ├── BrowserSecurityController.java │ │ └── TestController.java │ └── resources/ │ ├── application.yml │ └── resources/ │ ├── css/ │ │ └── login.css │ └── login.html ├── 36.Spring-Security-ValidateCode/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ ├── SecurityApplication.java │ │ ├── domain/ │ │ │ └── MyUser.java │ │ ├── handler/ │ │ │ ├── MyAuthenticationFailureHandler.java │ │ │ └── MyAuthenticationSucessHandler.java │ │ ├── security/ │ │ │ └── browser/ │ │ │ ├── BrowserSecurityConfig.java │ │ │ └── UserDetailService.java │ │ ├── validate/ │ │ │ └── code/ │ │ │ ├── ImageCode.java │ │ │ ├── ValidateCodeException.java │ │ │ └── ValidateCodeFilter.java │ │ └── web/ │ │ └── controller/ │ │ ├── BrowserSecurityController.java │ │ ├── TestController.java │ │ └── ValidateController.java │ └── resources/ │ ├── application.yml │ └── resources/ │ ├── css/ │ │ └── login.css │ └── login.html ├── 37.Spring-Security-RememberMe/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ ├── SecurityApplication.java │ │ ├── domain/ │ │ │ └── MyUser.java │ │ ├── handler/ │ │ │ ├── MyAuthenticationFailureHandler.java │ │ │ └── MyAuthenticationSucessHandler.java │ │ ├── security/ │ │ │ └── browser/ │ │ │ ├── BrowserSecurityConfig.java │ │ │ └── UserDetailService.java │ │ ├── validate/ │ │ │ └── code/ │ │ │ ├── ImageCode.java │ │ │ ├── ValidateCodeException.java │ │ │ └── ValidateCodeFilter.java │ │ └── web/ │ │ └── controller/ │ │ ├── BrowserSecurityController.java │ │ ├── TestController.java │ │ └── ValidateController.java │ └── resources/ │ ├── application.yml │ └── resources/ │ ├── css/ │ │ └── login.css │ └── login.html ├── 38.Spring-Security-SmsCode/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ ├── SecurityApplication.java │ │ ├── domain/ │ │ │ └── MyUser.java │ │ ├── handler/ │ │ │ ├── MyAuthenticationFailureHandler.java │ │ │ └── MyAuthenticationSucessHandler.java │ │ ├── security/ │ │ │ └── browser/ │ │ │ ├── BrowserSecurityConfig.java │ │ │ └── UserDetailService.java │ │ ├── validate/ │ │ │ ├── code/ │ │ │ │ ├── ImageCode.java │ │ │ │ ├── ValidateCodeException.java │ │ │ │ └── ValidateCodeFilter.java │ │ │ └── smscode/ │ │ │ ├── SmsAuthenticationConfig.java │ │ │ ├── SmsAuthenticationFilter.java │ │ │ ├── SmsAuthenticationProvider.java │ │ │ ├── SmsAuthenticationToken.java │ │ │ ├── SmsCode.java │ │ │ └── SmsCodeFilter.java │ │ └── web/ │ │ └── controller/ │ │ ├── BrowserSecurityController.java │ │ ├── TestController.java │ │ └── ValidateController.java │ └── resources/ │ ├── application.yml │ └── resources/ │ ├── css/ │ │ └── login.css │ └── login.html ├── 39.Spring-Cloud-Zuul-Router/ │ ├── Eureka-Client/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ ├── controller/ │ │ │ │ ├── TestController.java │ │ │ │ └── UserController.java │ │ │ └── domain/ │ │ │ └── User.java │ │ └── resources/ │ │ └── application.yml │ ├── Eureka-Service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ └── DemoApplication.java │ │ └── resources/ │ │ ├── application-peer1.yml │ │ ├── application-peer2.yml │ │ └── application.yml │ ├── Feign-Consumer/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ ├── controller/ │ │ │ │ └── TestController.java │ │ │ ├── domain/ │ │ │ │ └── User.java │ │ │ └── service/ │ │ │ ├── UserService.java │ │ │ └── UserServiceFallback.java │ │ └── resources/ │ │ └── application.yml │ └── Zuul-Gateway/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── example/ │ │ └── demo/ │ │ ├── DemoApplication.java │ │ └── filter/ │ │ └── PreSendForwardFilter.java │ └── resources/ │ └── application.yml ├── 40.Spring-Boot-Dubbo-Zookeeper/ │ ├── common-api/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ └── common/ │ │ └── api/ │ │ └── HelloService.java │ ├── pom.xml │ ├── server-consumer/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── cc/ │ │ │ └── mrbird/ │ │ │ ├── ConsumerApplicaiton.java │ │ │ └── consumer/ │ │ │ └── controller/ │ │ │ └── HelloController.java │ │ └── resources/ │ │ └── application.yml │ └── server-provider/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ ├── ProviderApplicaiton.java │ │ └── provider/ │ │ └── service/ │ │ └── HelloServiceImpl.java │ └── resources/ │ └── application.yml ├── 41.Spring-Cloud-Config/ │ ├── Eureka-Service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ └── DemoApplication.java │ │ └── resources/ │ │ ├── application-peer1.yml │ │ ├── application-peer2.yml │ │ └── application.yml │ ├── config-client/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── cc/ │ │ │ └── mrbird/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ └── controller/ │ │ │ └── TestController.java │ │ └── resources/ │ │ └── bootstrap.yml │ ├── config-server/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── cc/ │ │ │ └── mrbird/ │ │ │ └── demo/ │ │ │ └── DemoApplication.java │ │ └── resources/ │ │ ├── application.yml │ │ ├── bootstrap.yml │ │ └── config-server.keystore │ └── properties/ │ ├── febs-dev.yml │ ├── febs-pro.yml │ ├── febs-test.yml │ └── febs.yml ├── 42.Spring-Cloud-Bus/ │ ├── Eureka-Service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ └── DemoApplication.java │ │ └── resources/ │ │ ├── application-peer1.yml │ │ ├── application-peer2.yml │ │ └── application.yml │ ├── config-client/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── cc/ │ │ │ └── mrbird/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ └── controller/ │ │ │ └── TestController.java │ │ └── resources/ │ │ └── bootstrap.yml │ └── config-server/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ └── demo/ │ │ └── DemoApplication.java │ └── resources/ │ ├── application.yml │ ├── bootstrap.yml │ └── config-server.keystore ├── 43.Spring-Cloud-Sleuth/ │ ├── Eureka-Service/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ └── DemoApplication.java │ │ └── resources/ │ │ ├── application-peer1.yml │ │ ├── application-peer2.yml │ │ └── application.yml │ ├── Server-Provider1/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ └── controller/ │ │ │ └── HelloController.java │ │ └── resources/ │ │ └── application.yml │ ├── Server-Provider2/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ └── controller/ │ │ │ └── HelloController.java │ │ └── resources/ │ │ └── application.yml │ └── Zipkin-Server/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── example/ │ │ └── demo/ │ │ └── DemoApplication.java │ └── resources/ │ └── application.yml ├── 44.Spring-Boot-Autoconfiguration/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ ├── annotation/ │ │ │ │ ├── EnableHelloWorld.java │ │ │ │ ├── FirstLevelService.java │ │ │ │ └── SecondLevelService.java │ │ │ ├── bootstrap/ │ │ │ │ ├── EnableAutoConfigurationBootstrap.java │ │ │ │ ├── ServiceBootstrap.java │ │ │ │ └── TestEnableBootstap.java │ │ │ ├── configuration/ │ │ │ │ ├── HelloWorldAutoConfiguration.java │ │ │ │ └── HelloWorldConfiguration.java │ │ │ ├── selector/ │ │ │ │ └── HelloWorldImportSelector.java │ │ │ └── service/ │ │ │ └── TestService.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── spring.factories │ │ └── application.properties │ └── test/ │ └── java/ │ └── com/ │ └── example/ │ └── demo/ │ └── DemoApplicationTests.java ├── 45.Spring-Boot-SpringApplication/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ ├── initializer/ │ │ │ │ ├── AfterHelloApplicationContextInitializer.java │ │ │ │ └── HelloApplicationContextInitializer.java │ │ │ ├── listener/ │ │ │ │ ├── AfterContextClosedEventListener.java │ │ │ │ ├── ContextClosedEventListener.java │ │ │ │ └── HelloApplicationRunListener.java │ │ │ └── runner/ │ │ │ ├── HelloApplicationRunner.java │ │ │ └── HelloCommandLineRunner.java │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── spring.factories │ │ └── application.properties │ └── test/ │ └── java/ │ └── com/ │ └── example/ │ └── demo/ │ └── DemoApplicationTests.java ├── 46.Spring-Boot-Hibernate-Validator/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ ├── controller/ │ │ │ │ └── TestController.java │ │ │ ├── domain/ │ │ │ │ └── User.java │ │ │ └── handler/ │ │ │ └── GlobalExceptionHandler.java │ │ └── resources/ │ │ ├── ValidationMessages.properties │ │ └── application.properties │ └── test/ │ └── java/ │ └── com/ │ └── example/ │ └── demo/ │ └── DemoApplicationTests.java ├── 47.Spring-Boot-Content-Negotiation/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ ├── config/ │ │ │ │ └── WebConfigurer.java │ │ │ ├── controller/ │ │ │ │ └── TestController.java │ │ │ ├── converter/ │ │ │ │ └── PropertiesHttpMessageConverter.java │ │ │ ├── handler/ │ │ │ │ └── PropertiesHandlerMethodReturnValueHandler.java │ │ │ └── resolver/ │ │ │ └── PropertiesHandlerMethodArgumentResolver.java │ │ └── resources/ │ │ └── application.properties │ └── test/ │ └── java/ │ └── com/ │ └── example/ │ └── demo/ │ └── DemoApplicationTests.java ├── 48.Spring-Boot-CORS-Support/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ ├── config/ │ │ │ │ └── WebConfigurer.java │ │ │ └── controller/ │ │ │ └── TestController.java │ │ └── resources/ │ │ ├── application.properties │ │ └── templates/ │ │ └── index.html │ └── test/ │ └── java/ │ └── com/ │ └── example/ │ └── demo/ │ └── DemoApplicationTests.java ├── 49.Spring-Boot-Async/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ ├── DemoApplication.java │ │ │ ├── config/ │ │ │ │ └── AsyncPoolConfig.java │ │ │ ├── controller/ │ │ │ │ └── TestController.java │ │ │ └── service/ │ │ │ └── TestService.java │ │ └── resources/ │ │ └── application.properties │ └── test/ │ └── java/ │ └── com/ │ └── example/ │ └── demo/ │ └── DemoApplicationTests.java ├── 50.Spring-Regist-Bean/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ ├── DemoApplication.java │ │ └── demo/ │ │ ├── condition/ │ │ │ └── MyCondition.java │ │ ├── config/ │ │ │ └── WebConfig.java │ │ ├── controller/ │ │ │ └── UserController.java │ │ ├── dao/ │ │ │ └── UserMapper.java │ │ ├── domain/ │ │ │ ├── Apple.java │ │ │ ├── Banana.java │ │ │ ├── Cherry.java │ │ │ ├── Hello.java │ │ │ ├── Strawberry.java │ │ │ ├── User.java │ │ │ ├── UserDetail.java │ │ │ └── Watermelon.java │ │ ├── factory/ │ │ │ └── CherryFactoryBean.java │ │ ├── filter/ │ │ │ └── MyTypeFilter.java │ │ ├── register/ │ │ │ └── MyImportBeanDefinitionRegistrar.java │ │ ├── selector/ │ │ │ └── MyImportSelector.java │ │ └── service/ │ │ ├── CalculateService.java │ │ ├── UserService.java │ │ └── impl/ │ │ ├── Java7CalculateServiceImpl.java │ │ └── Java8CalculateServiceImpl.java │ └── resources/ │ └── application.properties ├── 51.Spring-Bean-Lifecycle/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ ├── DemoApplication.java │ │ └── demo/ │ │ ├── config/ │ │ │ ├── MyBeanPostProcessor.java │ │ │ └── WebConfig.java │ │ └── domain/ │ │ ├── Bird.java │ │ ├── Fish.java │ │ └── User.java │ └── resources/ │ └── application.properties ├── 52.Dubbo-OPS-Mointor/ │ └── spring-boot-dubbo-applicaiton/ │ ├── common-api/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ └── common/ │ │ └── api/ │ │ └── HelloService.java │ ├── pom.xml │ ├── server-consumer/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── cc/ │ │ │ └── mrbird/ │ │ │ ├── ConsumerApplicaiton.java │ │ │ └── consumer/ │ │ │ └── controller/ │ │ │ └── HelloController.java │ │ └── resources/ │ │ └── application.yml │ └── server-provider/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ ├── ProviderApplicaiton.java │ │ └── provider/ │ │ └── service/ │ │ └── HelloServiceImpl.java │ └── resources/ │ └── application.yml ├── 53.Dubbo-High-Availability/ │ ├── common-api/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ └── common/ │ │ └── api/ │ │ └── HelloService.java │ ├── pom.xml │ ├── server-consumer/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── cc/ │ │ │ └── mrbird/ │ │ │ ├── ConsumerApplicaiton.java │ │ │ └── consumer/ │ │ │ └── controller/ │ │ │ └── HelloController.java │ │ └── resources/ │ │ └── application.yml │ └── server-provider/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ ├── ProviderApplicaiton.java │ │ └── provider/ │ │ └── service/ │ │ └── HelloServiceImpl.java │ └── resources/ │ └── application.yml ├── 54.Spring-Boot-Kafka/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── example/ │ │ └── demo/ │ │ ├── KafkaApplication.java │ │ ├── config/ │ │ │ ├── KafkaConsumerConfig.java │ │ │ └── KafkaProducerConfig.java │ │ ├── controller/ │ │ │ └── SendMessageController.java │ │ ├── domain/ │ │ │ └── Message.java │ │ └── listener/ │ │ └── KafkaMessageListener.java │ └── resources/ │ └── application.yml ├── 55.Spring-Cloud-Consul/ │ ├── server-consumer/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ ├── ServerConsumerApplication.java │ │ │ └── TestController.java │ │ └── resources/ │ │ └── application.yml │ └── server-proivder/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── example/ │ │ └── demo/ │ │ ├── ServerProviderApplication.java │ │ └── TestController.java │ └── resources/ │ └── application.yml ├── 56.Spring-Boot-MongoDB-crud/ │ ├── Mongo DB crud.postman_collection.json │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── example/ │ │ └── mongodb/ │ │ ├── MongodbApplication.java │ │ ├── controller/ │ │ │ └── UserController.java │ │ ├── dao/ │ │ │ └── UserDao.java │ │ ├── domain/ │ │ │ └── User.java │ │ └── service/ │ │ └── UserService.java │ └── resources/ │ └── application.yml ├── 57.Spring-Boot-WebFlux/ │ ├── async-servlet/ │ │ ├── src/ │ │ │ ├── AsyncServlet.java │ │ │ └── SyncServlet.java │ │ └── web/ │ │ ├── WEB-INF/ │ │ │ └── web.xml │ │ └── index.html │ └── webflux/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── example/ │ │ └── webflux/ │ │ ├── FluxTest.java │ │ ├── MonoFluxTest.java │ │ ├── MonoTest.java │ │ ├── TestController.java │ │ ├── ViewController.java │ │ └── WebfluxApplication.java │ └── resources/ │ ├── application.yml │ └── templates/ │ └── flux.html ├── 58.Spring-Boot-WebFlux-crud/ │ ├── pom.xml │ ├── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── webflux/ │ │ │ ├── WebfluxApplication.java │ │ │ ├── controller/ │ │ │ │ └── UserController.java │ │ │ ├── dao/ │ │ │ │ └── UserDao.java │ │ │ ├── domain/ │ │ │ │ └── User.java │ │ │ └── service/ │ │ │ └── UserService.java │ │ └── resources/ │ │ └── application.yml │ └── webflux crud.postman_collection.json ├── 59.Spring-Security-SessionManager/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ ├── SecurityApplication.java │ │ ├── domain/ │ │ │ └── MyUser.java │ │ ├── handler/ │ │ │ ├── MyAuthenticationFailureHandler.java │ │ │ └── MyAuthenticationSucessHandler.java │ │ ├── security/ │ │ │ └── browser/ │ │ │ ├── BrowserSecurityConfig.java │ │ │ └── UserDetailService.java │ │ ├── session/ │ │ │ └── MySessionExpiredStrategy.java │ │ ├── validate/ │ │ │ ├── code/ │ │ │ │ ├── ImageCode.java │ │ │ │ ├── ValidateCodeException.java │ │ │ │ └── ValidateCodeFilter.java │ │ │ └── smscode/ │ │ │ ├── SmsAuthenticationConfig.java │ │ │ ├── SmsAuthenticationFilter.java │ │ │ ├── SmsAuthenticationProvider.java │ │ │ ├── SmsAuthenticationToken.java │ │ │ ├── SmsCode.java │ │ │ └── SmsCodeFilter.java │ │ └── web/ │ │ └── controller/ │ │ ├── BrowserSecurityController.java │ │ ├── TestController.java │ │ └── ValidateController.java │ └── resources/ │ ├── application.yml │ └── resources/ │ ├── css/ │ │ └── login.css │ └── login.html ├── 60.Spring-Security-Logout/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ ├── SecurityApplication.java │ │ ├── domain/ │ │ │ └── MyUser.java │ │ ├── handler/ │ │ │ ├── MyAuthenticationFailureHandler.java │ │ │ ├── MyAuthenticationSucessHandler.java │ │ │ └── MyLogOutSuccessHandler.java │ │ ├── security/ │ │ │ └── browser/ │ │ │ ├── BrowserSecurityConfig.java │ │ │ └── UserDetailService.java │ │ ├── session/ │ │ │ └── MySessionExpiredStrategy.java │ │ ├── validate/ │ │ │ ├── code/ │ │ │ │ ├── ImageCode.java │ │ │ │ ├── ValidateCodeException.java │ │ │ │ └── ValidateCodeFilter.java │ │ │ └── smscode/ │ │ │ ├── SmsAuthenticationConfig.java │ │ │ ├── SmsAuthenticationFilter.java │ │ │ ├── SmsAuthenticationProvider.java │ │ │ ├── SmsAuthenticationToken.java │ │ │ ├── SmsCode.java │ │ │ └── SmsCodeFilter.java │ │ └── web/ │ │ └── controller/ │ │ ├── BrowserSecurityController.java │ │ ├── TestController.java │ │ └── ValidateController.java │ └── resources/ │ ├── application.yml │ └── resources/ │ ├── css/ │ │ └── login.css │ └── login.html ├── 61.Spring-security-Permission/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ ├── SecurityApplication.java │ │ ├── domain/ │ │ │ └── MyUser.java │ │ ├── handler/ │ │ │ ├── MyAuthenticationAccessDeniedHandler.java │ │ │ ├── MyAuthenticationFailureHandler.java │ │ │ ├── MyAuthenticationSucessHandler.java │ │ │ └── MyLogOutSuccessHandler.java │ │ ├── security/ │ │ │ └── browser/ │ │ │ ├── BrowserSecurityConfig.java │ │ │ └── UserDetailService.java │ │ ├── session/ │ │ │ └── MySessionExpiredStrategy.java │ │ ├── validate/ │ │ │ ├── code/ │ │ │ │ ├── ImageCode.java │ │ │ │ ├── ValidateCodeException.java │ │ │ │ └── ValidateCodeFilter.java │ │ │ └── smscode/ │ │ │ ├── SmsAuthenticationConfig.java │ │ │ ├── SmsAuthenticationFilter.java │ │ │ ├── SmsAuthenticationProvider.java │ │ │ ├── SmsAuthenticationToken.java │ │ │ ├── SmsCode.java │ │ │ └── SmsCodeFilter.java │ │ └── web/ │ │ └── controller/ │ │ ├── BrowserSecurityController.java │ │ ├── TestController.java │ │ └── ValidateController.java │ └── resources/ │ ├── application.yml │ └── resources/ │ ├── css/ │ │ └── login.css │ └── login.html ├── 62.Spring-Boot-Shiro-JWT/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── example/ │ │ └── demo/ │ │ ├── DemoApplication.java │ │ ├── authentication/ │ │ │ ├── JWTFilter.java │ │ │ ├── JWTToken.java │ │ │ ├── JWTUtil.java │ │ │ ├── ShiroConfig.java │ │ │ └── ShiroRealm.java │ │ ├── controller/ │ │ │ ├── LoginController.java │ │ │ └── TestController.java │ │ ├── domain/ │ │ │ ├── Response.java │ │ │ └── User.java │ │ ├── exception/ │ │ │ └── SystemException.java │ │ ├── handler/ │ │ │ └── GlobalExceptionHandler.java │ │ ├── properties/ │ │ │ └── SystemProperties.java │ │ ├── runner/ │ │ │ └── PrintRunner.java │ │ └── utils/ │ │ ├── DateUtil.java │ │ ├── MD5Util.java │ │ ├── SpringContextUtil.java │ │ └── SystemUtils.java │ └── resources/ │ ├── ValidationMessages.properties │ ├── application.yml │ ├── postman.json │ └── readme.md ├── 63.Spring-Security-OAuth2-Guide/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ └── security/ │ │ ├── SecurityApplication.java │ │ ├── config/ │ │ │ ├── AuthorizationServerConfig.java │ │ │ └── ResourceServerConfig.java │ │ ├── controller/ │ │ │ └── UserController.java │ │ ├── domain/ │ │ │ └── MyUser.java │ │ └── service/ │ │ └── UserDetailService.java │ └── resources/ │ └── application.yml ├── 64.Spring-Security-OAuth2-Customize/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ └── security/ │ │ ├── SecurityApplication.java │ │ ├── config/ │ │ │ ├── AuthorizationServerConfig.java │ │ │ └── ResourceServerConfig.java │ │ ├── controller/ │ │ │ ├── UserController.java │ │ │ └── ValidateController.java │ │ ├── domain/ │ │ │ └── MyUser.java │ │ ├── handler/ │ │ │ ├── MyAuthenticationFailureHandler.java │ │ │ └── MyAuthenticationSucessHandler.java │ │ ├── service/ │ │ │ ├── RedisCodeService.java │ │ │ └── UserDetailService.java │ │ └── validate/ │ │ └── smscode/ │ │ ├── SmsAuthenticationConfig.java │ │ ├── SmsAuthenticationFilter.java │ │ ├── SmsAuthenticationProvider.java │ │ ├── SmsAuthenticationToken.java │ │ ├── SmsCode.java │ │ └── SmsCodeFilter.java │ └── resources/ │ └── application.yml ├── 65.Spring-Security-OAuth2-Config/ │ ├── pom.xml │ ├── security.postman_collection.json │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ └── security/ │ │ ├── SecurityApplication.java │ │ ├── config/ │ │ │ ├── AuthorizationServerConfig.java │ │ │ ├── JWTokenConfig.java │ │ │ ├── ResourceServerConfig.java │ │ │ ├── SecurityConfig.java │ │ │ └── TokenStoreConfig.java │ │ ├── controller/ │ │ │ ├── UserController.java │ │ │ └── ValidateController.java │ │ ├── domain/ │ │ │ └── MyUser.java │ │ ├── enhancer/ │ │ │ └── JWTokenEnhancer.java │ │ ├── handler/ │ │ │ ├── MyAuthenticationFailureHandler.java │ │ │ └── MyAuthenticationSucessHandler.java │ │ ├── service/ │ │ │ ├── RedisCodeService.java │ │ │ └── UserDetailService.java │ │ └── validate/ │ │ └── smscode/ │ │ ├── SmsAuthenticationConfig.java │ │ ├── SmsAuthenticationFilter.java │ │ ├── SmsAuthenticationProvider.java │ │ ├── SmsAuthenticationToken.java │ │ ├── SmsCode.java │ │ └── SmsCodeFilter.java │ └── resources/ │ └── application.yml ├── 66.Spring-Security-OAuth2-SSO/ │ ├── pom.xml │ ├── sso-application-one/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── cc/ │ │ │ └── mrbird/ │ │ │ └── sso/ │ │ │ ├── SsoApplicaitonOne.java │ │ │ └── client/ │ │ │ ├── config/ │ │ │ │ └── WebSecurityConfigurer.java │ │ │ └── controller/ │ │ │ └── UserController.java │ │ └── resources/ │ │ ├── application.yml │ │ └── static/ │ │ └── index.html │ ├── sso-application-two/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── cc/ │ │ │ └── mrbird/ │ │ │ └── sso/ │ │ │ ├── SsoApplicaitonTwo.java │ │ │ └── client/ │ │ │ └── controller/ │ │ │ └── UserController.java │ │ └── resources/ │ │ ├── application.yml │ │ └── static/ │ │ └── index.html │ └── sso-server/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ └── sso/ │ │ ├── SsoServerApplication.java │ │ └── server/ │ │ ├── config/ │ │ │ ├── SsoAuthorizationServerConfig.java │ │ │ └── WebSecurityConfig.java │ │ ├── domain/ │ │ │ └── MyUser.java │ │ └── service/ │ │ └── UserDetailService.java │ └── resources/ │ └── application.yml ├── 67.spring-batch-start/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ └── batch/ │ │ ├── SpringBatchStartApplication.java │ │ ├── decider/ │ │ │ └── MyDecider.java │ │ └── job/ │ │ ├── DeciderJobDemo.java │ │ ├── FirstJobDemo.java │ │ ├── FlowJobDemo.java │ │ ├── MultiStepJobDemo.java │ │ ├── NestedJobDemo.java │ │ └── SplitJobDemo.java │ └── resources/ │ └── application.yml ├── 68.spring-batch-itemreader/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ └── batch/ │ │ ├── SpringBatchItemreaderApplication.java │ │ ├── entity/ │ │ │ └── TestData.java │ │ ├── job/ │ │ │ ├── DataSourceItemReaderDemo.java │ │ │ ├── FileItemReaderDemo.java │ │ │ ├── JSONFileItemReaderDemo.java │ │ │ ├── MultiFileIteamReaderDemo.java │ │ │ ├── MySimpleItemReaderDemo.java │ │ │ └── XmlFileItemReaderDemo.java │ │ └── reader/ │ │ └── MySimpleIteamReader.java │ └── resources/ │ ├── TEST.sql │ ├── application.yml │ ├── file │ ├── file.json │ ├── file.xml │ ├── file1 │ └── file2 ├── 69.spring-batch-itemwriter/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ └── batch/ │ │ ├── SpringBatchItemwriterApplication.java │ │ ├── entity/ │ │ │ └── TestData.java │ │ ├── job/ │ │ │ ├── DatabaseItemWriterDemo.java │ │ │ ├── FileItemWriterDemo.java │ │ │ ├── JsonFileItemWriterDemo.java │ │ │ ├── MultiFileItemWriteDemo.java │ │ │ └── XmlFileItemWriterDemo.java │ │ ├── reader/ │ │ │ └── ItemReaderConfigure.java │ │ └── writer/ │ │ └── ItemWriterConfigure.java │ └── resources/ │ └── application.yml ├── 70.spring-batch-itemprocessor/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ └── batch/ │ │ ├── SpringBatchItemprocessorApplication.java │ │ ├── entity/ │ │ │ ├── TestData.java │ │ │ ├── job/ │ │ │ │ ├── BeanValidatingItemProcessorDemo.java │ │ │ │ ├── CompositeItemProcessorDemo.java │ │ │ │ ├── TestDataFilterItemProcessorDemo.java │ │ │ │ ├── TestDataTransformItemPorcessorDemo.java │ │ │ │ └── ValidatingItemProcessorDemo.java │ │ │ └── reader/ │ │ │ └── ItemReaderConfigure.java │ │ └── processor/ │ │ ├── TestDataFilterItemProcessor.java │ │ └── TestDataTransformItemPorcessor.java │ └── resources/ │ └── application.yml ├── 71.spring-batch-listener/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ └── batch/ │ │ ├── SpringBatchListenerApplication.java │ │ ├── job/ │ │ │ ├── CompositeJobExecutionListenerJobDemo.java │ │ │ └── ListenerTestJobDemo.java │ │ └── listener/ │ │ ├── MyChunkListener.java │ │ ├── MyItemProcessListener.java │ │ ├── MyItemReaderListener.java │ │ ├── MyItemWriterListener.java │ │ ├── MyJobExecutionListener.java │ │ └── MyStepExecutionListener.java │ └── resources/ │ └── application.yml ├── 72.spring-batch-exception/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ └── batch/ │ │ ├── SpringBatchExceptionApplication.java │ │ ├── exception/ │ │ │ └── MyJobExecutionException.java │ │ ├── job/ │ │ │ ├── DefaultExceptionJobDemo.java │ │ │ ├── RestartJobDemo.java │ │ │ ├── RetryExceptionJobDemo.java │ │ │ ├── SkipExceptionJobDemo.java │ │ │ └── TransactionJobDemo.java │ │ └── listener/ │ │ └── MySkipListener.java │ └── resources/ │ └── application.yml ├── 73.spring-batch-launcher/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ └── batch/ │ │ ├── SpringBatchLauncherApplication.java │ │ ├── configure/ │ │ │ └── JobConfigure.java │ │ ├── controller/ │ │ │ └── JobController.java │ │ └── job/ │ │ └── MyJob.java │ └── resources/ │ └── application.yml ├── 74.spring-cloud-alibaba-nacos-register/ │ ├── consumer/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── cc/ │ │ │ └── mrbird/ │ │ │ └── consumer/ │ │ │ ├── ConsumerApplication.java │ │ │ ├── configure/ │ │ │ │ └── ConsumerConfigure.java │ │ │ └── controller/ │ │ │ └── ConsumeController.java │ │ └── resources/ │ │ └── application.yml │ ├── pom.xml │ └── provider/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ └── provider/ │ │ ├── ProviderApplication.java │ │ └── controller/ │ │ └── HelloController.java │ └── resources/ │ └── application.yml ├── 75.spring-cloud-alibaba-nacos-config/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ └── nacos/ │ │ ├── SpringCloudAlibabaNacosConfigApplication.java │ │ └── controller/ │ │ └── TestController.java │ └── resources/ │ ├── application.yml │ └── bootstrap.yml ├── 76.spring-boot-websocket-socketjs/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ └── socket/ │ │ ├── SpringBootWebsocketSocketjsApplication.java │ │ ├── configure/ │ │ │ └── WebSocketServerConfigure.java │ │ └── handler/ │ │ └── MyStringWebSocketHandler.java │ └── resources/ │ ├── application.properties │ └── static/ │ └── client.html ├── 77.spring-cloud-alibaba-sentinel-dashboard-guide/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ └── sentinel/ │ │ ├── SpringCloudAlibabaSentinelFlowControlApplication.java │ │ ├── controller/ │ │ │ └── TestController.java │ │ └── service/ │ │ └── HelloService.java │ └── resources/ │ └── application.yml ├── 78.spring-cloud-alibaba-sentinelresource/ │ ├── consumer/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── cc/ │ │ │ └── mrbird/ │ │ │ └── consumer/ │ │ │ └── ConsumerApplication.java │ │ └── resources/ │ │ └── application.yml │ ├── pom.xml │ └── provider/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cc/ │ │ └── mrbird/ │ │ └── provider/ │ │ └── ProviderApplication.java │ └── resources/ │ └── application.yml ├── LICENSE └── readme.md