├── .gitignore
├── Chapter1-1-1
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── mkeeper
│ │ ├── Chapter111Application.java
│ │ └── controller
│ │ └── HelloController.java
│ └── resources
│ └── application.yml
├── Chapter1-1-2
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── mkeeper
│ │ ├── Chapter112Application.java
│ │ ├── config
│ │ └── UserProperties.java
│ │ └── controller
│ │ ├── HelloController.java
│ │ └── UserController.java
│ └── resources
│ ├── application-dev.yml
│ ├── application-pro.yml
│ ├── application.yml
│ └── user.properties
├── Chapter2-1-1
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── mkeeper
│ │ ├── Chapter211Application.java
│ │ ├── controller
│ │ └── UserController.java
│ │ ├── dao
│ │ └── UserDao.java
│ │ ├── entity
│ │ └── User.java
│ │ └── service
│ │ ├── UserService.java
│ │ └── impl
│ │ └── UserServiceImpl.java
│ └── resources
│ └── application.yml
├── Chapter2-1-10
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── mkeeper
│ │ ├── Chapter2110Application.java
│ │ └── controller
│ │ └── FileUploadController.java
│ └── resources
│ ├── application.yml
│ └── templates
│ └── index.html
├── Chapter2-1-11
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── mkeeper
│ │ ├── Chapter2111Main.java
│ │ ├── config
│ │ └── RestTemplateConfig.java
│ │ ├── controller
│ │ ├── FileTestController.java
│ │ ├── GetTestController.java
│ │ └── PostTestController.java
│ │ └── vo
│ │ └── ResultVo.java
│ └── resources
│ └── application.yml
├── Chapter2-1-2
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── mkeeper
│ │ ├── Chapter212Application.java
│ │ ├── common
│ │ └── R.java
│ │ ├── controller
│ │ └── UserController.java
│ │ └── entity
│ │ └── User.java
│ └── resources
│ └── application.yml
├── Chapter2-1-3
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── mkeeper
│ │ ├── Chapter213Application.java
│ │ ├── Handler
│ │ └── GlobalExceptionHandler.java
│ │ ├── common
│ │ └── R.java
│ │ ├── controller
│ │ ├── BadExceptionController.java
│ │ ├── BusinessController.java
│ │ └── UglyExceptionController.java
│ │ └── exception
│ │ └── BusinessException.java
│ └── resources
│ └── application.yml
├── Chapter2-1-4
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── mkeeper
│ │ ├── Chapter214Application.java
│ │ └── controller
│ │ ├── LogController.java
│ │ └── off
│ │ └── OffController.java
│ └── resources
│ └── application.yml
├── Chapter2-1-5
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── mkeeper
│ │ ├── Chapter215Application.java
│ │ └── controller
│ │ └── LogController.java
│ └── resources
│ ├── application.yml
│ └── config
│ └── logback-spring.xml
├── Chapter2-1-6
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── mkeeper
│ │ ├── Chapter216Application.java
│ │ ├── aspect
│ │ └── WebLogAspect.java
│ │ ├── common
│ │ └── R.java
│ │ ├── controller
│ │ ├── UserController.java
│ │ └── logging
│ │ │ └── AopLogController.java
│ │ └── entity
│ │ └── User.java
│ └── resources
│ └── application.yml
├── Chapter2-1-7
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── mkeeper
│ │ ├── Chapter217Application.java
│ │ ├── common
│ │ └── R.java
│ │ ├── controller
│ │ └── UserController.java
│ │ └── entity
│ │ └── User.java
│ └── resources
│ ├── application.yml
│ └── logback-spring.xml
├── Chapter2-1-8
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── mkeeper
│ │ ├── Chapter218Application.java
│ │ ├── annotation
│ │ └── DateTime.java
│ │ ├── common
│ │ └── R.java
│ │ ├── controller
│ │ └── UserController.java
│ │ ├── entity
│ │ └── User.java
│ │ └── validator
│ │ └── DateTimeValidator.java
│ └── resources
│ └── application.yml
├── Chapter2-1-9
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── mkeeper
│ │ ├── Chapter219Application.java
│ │ ├── common
│ │ └── R.java
│ │ ├── controller
│ │ └── UserController.java
│ │ └── entity
│ │ └── User.java
│ └── resources
│ └── application.yml
├── Chapter3-1-1
├── pom.xml
└── src
│ └── main
│ └── java
│ └── com
│ └── mkeeper
│ ├── Chpater311Main.java
│ ├── scheduled_executor
│ └── ScheduledExecutorServiceDemo.java
│ ├── spring_task
│ ├── SpringTaskDemo.java
│ └── config
│ │ └── TaskSchedulerConfig.java
│ └── timer
│ └── TimerDemo.java
├── Chapter3-1-2
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── mkeeper
│ │ ├── Chapter312Main.java
│ │ └── quartz
│ │ ├── config
│ │ └── QuartzConfig.java
│ │ └── task
│ │ └── UploadTask.java
│ └── resources
│ └── application.yml
├── Chapter3-1-3
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── mkeeper
│ │ ├── Chapter313Main.java
│ │ ├── common
│ │ └── R.java
│ │ ├── config
│ │ ├── ScheduleConfig.java
│ │ └── SwaggerConfig.java
│ │ ├── controller
│ │ └── JobController.java
│ │ ├── dao
│ │ └── JobMapper.java
│ │ ├── exception
│ │ └── ServiceException.java
│ │ ├── factory
│ │ └── ScheduleJobFactory.java
│ │ ├── job
│ │ └── TestJob.java
│ │ ├── listener
│ │ └── ApplicationListener.java
│ │ ├── model
│ │ └── ScheduleJob.java
│ │ ├── service
│ │ └── JobService.java
│ │ └── utils
│ │ └── ScheduleUtil.java
│ └── resources
│ ├── application.yml
│ ├── mapping
│ └── JobMapper.xml
│ └── quartz.sql
├── Chapter3-1-4
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── mkeeper
│ │ ├── Chapter314Main.java
│ │ ├── config
│ │ └── XxlJobConfig.java
│ │ └── job
│ │ ├── DemoJobHandler.java
│ │ └── ShardingJobHandler.java
│ └── resources
│ └── application.yml
├── Chapter3-1-5
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── mkeeper
│ │ ├── Chapter315Main.java
│ │ ├── config
│ │ ├── DataflowJobConfig.java
│ │ ├── JobEventConfig.java
│ │ ├── RegistryCenterConfig.java
│ │ └── SimpleJobConfig.java
│ │ ├── fixture
│ │ ├── entity
│ │ │ └── Foo.java
│ │ └── repository
│ │ │ └── FooRepository.java
│ │ └── job
│ │ ├── dataflow
│ │ └── SpringDataflowJob.java
│ │ └── simple
│ │ └── SpringSimpleJob.java
│ └── resources
│ └── application.yml
├── Chapter4-1-1
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── mkeeper
│ │ │ ├── Chapter411Main.java
│ │ │ ├── entity
│ │ │ └── User.java
│ │ │ └── service
│ │ │ ├── UserService.java
│ │ │ └── impl
│ │ │ └── UserServiceImpl.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── mkeeper
│ └── service
│ └── impl
│ └── UserServiceImplTest.java
├── Chapter4-1-2
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── mkeeper
│ │ │ ├── Chapter412Main.java
│ │ │ ├── controller
│ │ │ └── UserController.java
│ │ │ ├── entity
│ │ │ ├── User.java
│ │ │ └── common
│ │ │ │ ├── PageInfo.java
│ │ │ │ └── R.java
│ │ │ ├── mapper
│ │ │ └── UserMapper.java
│ │ │ └── service
│ │ │ ├── UserService.java
│ │ │ └── impl
│ │ │ └── UserServiceImpl.java
│ └── resources
│ │ ├── application.yml
│ │ ├── generator
│ │ └── generatorConfig.xml
│ │ └── mapping
│ │ └── UserMapper.xml
│ └── test
│ └── java
│ └── com
│ └── mkeeper
│ └── service
│ └── impl
│ └── UserServiceImplTest.java
├── Chapter4-1-3
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── mkeeper
│ │ ├── Chapter413Main.java
│ │ ├── config
│ │ ├── MybatisPlusConfig.java
│ │ └── WebConfig.java
│ │ ├── controller
│ │ └── UserController.java
│ │ ├── entity
│ │ ├── SuperEntity.java
│ │ ├── User.java
│ │ └── enums
│ │ │ ├── AgeEnum.java
│ │ │ └── PhoneEnum.java
│ │ ├── generator
│ │ └── MpGenerator.java
│ │ ├── mapper
│ │ ├── SuperMapper.java
│ │ └── UserMapper.java
│ │ └── service
│ │ ├── IUserService.java
│ │ └── impl
│ │ └── UserServiceImpl.java
│ └── resources
│ ├── application.yml
│ └── mapper
│ └── UserMapper.xml
├── Chapter4-1-4
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── mkeeper
│ │ │ ├── Chapter414Main.java
│ │ │ ├── entity
│ │ │ └── User.java
│ │ │ └── repository
│ │ │ └── UserRepository.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── mkeeper
│ └── UserServiceImplTest.java
├── Chapter4-1-5
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── mkeeper
│ │ ├── Chapter415Main.java
│ │ ├── config
│ │ ├── DataSourceConfig.java
│ │ └── MybatisConfig.java
│ │ ├── controller
│ │ └── TestController.java
│ │ ├── entity
│ │ └── Stock.java
│ │ └── mapper
│ │ ├── one
│ │ └── OneStockMapper.java
│ │ └── two
│ │ └── TwoStockMapper.java
│ └── resources
│ ├── application.yml
│ └── mapping
│ ├── one
│ └── OneStockMapper.xml
│ └── two
│ └── TwoStockMapper.xml
├── Chapter4-1-6
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── mkeeper
│ │ │ ├── Chapter416Main.java
│ │ │ ├── entity
│ │ │ ├── Order.java
│ │ │ ├── OrderItem.java
│ │ │ └── Stock.java
│ │ │ ├── mapper
│ │ │ ├── OrderItemMapper.java
│ │ │ ├── OrderMapper.java
│ │ │ └── StockMapper.java
│ │ │ └── service
│ │ │ └── DemoService.java
│ └── resources
│ │ ├── application.yml
│ │ ├── demo_ds.sql
│ │ └── mapping
│ │ ├── OrderItemMapper.xml
│ │ ├── OrderMapper.xml
│ │ └── StockMapper.xml
│ └── test
│ └── java
│ └── com
│ └── mkeeper
│ └── service
│ └── DemoServiceTest.java
├── Chapter4-1-7
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── mkeeper
│ │ │ ├── Chapter417Main.java
│ │ │ ├── entity
│ │ │ ├── Order.java
│ │ │ ├── OrderItem.java
│ │ │ └── Stock.java
│ │ │ ├── mapper
│ │ │ ├── OrderItemMapper.java
│ │ │ ├── OrderMapper.java
│ │ │ └── StockMapper.java
│ │ │ └── service
│ │ │ └── DemoService.java
│ └── resources
│ │ ├── application.yml
│ │ └── mapping
│ │ ├── OrderItemMapper.xml
│ │ ├── OrderMapper.xml
│ │ └── StockMapper.xml
│ └── test
│ └── java
│ └── com
│ └── mkeeper
│ └── service
│ └── DemoServiceTest.java
├── Chapter4-1-8
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── mkeeper
│ │ │ ├── Chapter418Main.java
│ │ │ ├── entity
│ │ │ ├── Order.java
│ │ │ └── OrderItem.java
│ │ │ ├── mapper
│ │ │ ├── OrderItemMapper.java
│ │ │ └── OrderMapper.java
│ │ │ └── service
│ │ │ └── DemoService.java
│ └── resources
│ │ ├── application.yml
│ │ ├── manual_schema.sql
│ │ └── mapping
│ │ ├── OrderItemMapper.xml
│ │ └── OrderMapper.xml
│ └── test
│ └── java
│ └── com
│ └── mkeeper
│ └── service
│ └── DemoServiceTest.java
├── Chapter4-1-9
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── mkeeper
│ │ │ ├── Chapter419Main.java
│ │ │ ├── entity
│ │ │ └── Order.java
│ │ │ ├── mapper
│ │ │ └── OrderMapper.java
│ │ │ └── service
│ │ │ └── DemoService.java
│ └── resources
│ │ ├── application.yml
│ │ ├── manual_schema.sql
│ │ └── mapping
│ │ └── OrderMapper.xml
│ └── test
│ └── java
│ └── com
│ └── mkeeper
│ └── service
│ └── DemoServiceTest.java
├── Chapter5-1-1
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── mkeeper
│ │ ├── Chapter511Main.java
│ │ ├── controller
│ │ └── TestController.java
│ │ ├── entity
│ │ └── Student.java
│ │ └── service
│ │ ├── DoingService.java
│ │ ├── StudentService.java
│ │ └── impl
│ │ └── StudentServiceImpl.java
│ └── resources
│ └── application.yml
├── Chapter6-1-1
├── pom.xml
└── src
│ └── main
│ └── java
│ └── com
│ └── mkeeper
│ └── Chapter611Main.java
├── Chapter7-1-1
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── mkeeper
│ │ │ ├── Chapter711Main.java
│ │ │ └── rocketmq
│ │ │ ├── consumer
│ │ │ └── RocketMQConsumer.java
│ │ │ └── producer
│ │ │ └── RocketMQProducer.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── mkeeper
│ └── rocketmq
│ └── RocketMQApplicationTests.java
├── Chapter8-1-1
├── consumer
│ ├── pom.xml
│ └── src
│ │ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── mkeeper
│ │ │ │ ├── ConsumerApplication.java
│ │ │ │ └── service
│ │ │ │ └── ComputeService.java
│ │ └── resources
│ │ │ ├── application.yml
│ │ │ └── dubbo.xml
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── mkeeper
│ │ └── service
│ │ └── ComputeServiceTest.java
├── pom.xml
└── provider
│ ├── pom.xml
│ └── src
│ └── main
│ ├── java
│ └── com
│ │ └── mkeeper
│ │ ├── ProviderApplication.java
│ │ └── service
│ │ ├── ComputeService.java
│ │ └── impl
│ │ └── ComputeServiceImpl.java
│ └── resources
│ ├── application.yml
│ └── dubbo.xml
├── Chapter8-1-2
├── dubbo-api
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── mkeeper
│ │ └── dubbo
│ │ └── api
│ │ └── ComputeService.java
├── dubbo-consumer
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── mkeeper
│ │ │ ├── DubboConsumerMain.java
│ │ │ └── com
│ │ │ └── mkeeper
│ │ │ └── dubbo
│ │ │ └── controller
│ │ │ └── DubboController.java
│ │ └── resources
│ │ └── application.properties
├── dubbo-provider
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── mkeeper
│ │ │ ├── DubboProviderMain.java
│ │ │ └── dubbo
│ │ │ └── service
│ │ │ └── DefaultComputeService.java
│ │ └── resources
│ │ └── application.properties
└── pom.xml
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | ### 编译文件 ###
2 | target/
3 | log
4 | logs
5 |
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .mvn
13 | .settings
14 | .springBeans
15 | .log
16 |
17 | ### IntelliJ IDEA ###
18 | .idea
19 | *.iws
20 | *.iml
21 | *.ipr
22 |
23 | ### NetBeans ###
24 | nbproject/private/
25 | build/
26 | nbbuild/
27 | dist/
28 | nbdist/
29 | .nb-gradle/
30 |
31 |
--------------------------------------------------------------------------------
/Chapter1-1-1/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | com.mkeeper
8 | Chapter1-1-1
9 | 1.0-SNAPSHOT
10 | jar
11 |
12 | Chapter1-1-1
13 | Hello Spring Boot
14 |
15 |
16 |
17 | org.springframework.boot
18 | spring-boot-starter-parent
19 | 2.0.3.RELEASE
20 |
21 |
22 |
23 | UTF-8
24 | 1.8
25 |
26 |
27 |
28 |
29 |
30 | org.springframework.boot
31 | spring-boot-starter-web
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 | org.springframework.boot
41 | spring-boot-maven-plugin
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/Chapter1-1-1/src/main/java/com/mkeeper/Chapter111Application.java:
--------------------------------------------------------------------------------
1 | package com.mkeeper;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 |
6 | @SpringBootApplication
7 | public class Chapter111Application {
8 | public static void main(String[] args) {
9 | SpringApplication.run(Chapter111Application.class, args);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter1-1-1/src/main/java/com/mkeeper/controller/HelloController.java:
--------------------------------------------------------------------------------
1 | package com.mkeeper.controller;
2 |
3 | import org.springframework.web.bind.annotation.GetMapping;
4 | import org.springframework.web.bind.annotation.RestController;
5 |
6 | //@RestController 等同于 (@Controller 与 @ResponseBody)
7 | @RestController
8 | public class HelloController {
9 |
10 | // @GetMapping 等同于 (@RequestMapping(method = RequestMethod.GET))
11 | @GetMapping("/hello")
12 | public String hello(){
13 | return "Hello SpringBoot";
14 |
15 |
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Chapter1-1-1/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | #server:
2 | #port: 8888
--------------------------------------------------------------------------------
/Chapter1-1-2/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | com.mkeeper
8 | Chapter1-1-2
9 | pom
10 | 1.0-SNAPSHOT
11 |
12 | ../Chapter2-1-1
13 |
14 |
15 | Chapter1-1-2
16 | Spring Boot常用配置介绍
17 |
18 |
19 |
20 | org.springframework.boot
21 | spring-boot-starter-parent
22 | 2.0.3.RELEASE
23 |
24 |
25 |
26 | UTF-8
27 | 1.8
28 |
29 |
30 |
31 |
32 |
33 |
34 | org.springframework.boot
35 | spring-boot-starter-web
36 |
37 |
38 |
39 |
40 | org.springframework.boot
41 | spring-boot-configuration-processor
42 | true
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 | org.springframework.boot
52 | spring-boot-maven-plugin
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/Chapter1-1-2/src/main/java/com/mkeeper/Chapter112Application.java:
--------------------------------------------------------------------------------
1 | package com.mkeeper;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 |
6 | @SpringBootApplication
7 | public class Chapter112Application {
8 | public static void main(String[] args) {
9 | SpringApplication.run(Chapter112Application.class, args);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter1-1-2/src/main/java/com/mkeeper/config/UserProperties.java:
--------------------------------------------------------------------------------
1 | package com.mkeeper.config;
2 |
3 |
4 | import org.springframework.boot.context.properties.ConfigurationProperties;
5 | import org.springframework.context.annotation.Configuration;
6 | import org.springframework.context.annotation.PropertySource;
7 |
8 | @Configuration
9 | //指定配置文件,如果不指定,默认解析“application.yml”
10 | @PropertySource("classpath:user.properties")
11 | //前缀
12 | @ConfigurationProperties(prefix = "company.user")
13 | public class UserProperties {
14 |
15 | private String name;
16 | private Integer age;
17 |
18 | public String getName() {
19 | return name;
20 | }
21 |
22 | public void setName(String name) {
23 | this.name = name;
24 | }
25 |
26 | public Integer getAge() {
27 | return age;
28 | }
29 |
30 | public void setAge(Integer age) {
31 | this.age = age;
32 | }
33 |
34 | @Override
35 | public String toString() {
36 | return "UserProperties {" +
37 | "name='" + name + '\'' +
38 | ", age=" + age +
39 | '}';
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Chapter1-1-2/src/main/java/com/mkeeper/controller/HelloController.java:
--------------------------------------------------------------------------------
1 | package com.mkeeper.controller;
2 |
3 | import org.springframework.web.bind.annotation.GetMapping;
4 | import org.springframework.web.bind.annotation.RestController;
5 |
6 | //@RestController 等同于 (@Controller 与 @ResponseBody)
7 | @RestController
8 | public class HelloController {
9 |
10 | // @GetMapping 等同于 (@RequestMapping(method = RequestMethod.GET))
11 | @GetMapping("/hello")
12 | public String hello(){
13 | return "Hello SpringBoot";
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter1-1-2/src/main/java/com/mkeeper/controller/UserController.java:
--------------------------------------------------------------------------------
1 | package com.mkeeper.controller;
2 |
3 | import com.mkeeper.config.UserProperties;
4 | import org.slf4j.Logger;
5 | import org.slf4j.LoggerFactory;
6 | import org.springframework.beans.factory.annotation.Autowired;
7 | import org.springframework.web.bind.annotation.GetMapping;
8 | import org.springframework.web.bind.annotation.RestController;
9 |
10 | @RestController
11 | public class UserController {
12 |
13 | private static final Logger log = LoggerFactory.getLogger(UserController.class);
14 |
15 | @Autowired
16 | private UserProperties userProperties;
17 |
18 | @GetMapping("/user")
19 | public String user() {
20 | log.info("info:");
21 |
22 | return userProperties.toString();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Chapter1-1-2/src/main/resources/application-dev.yml:
--------------------------------------------------------------------------------
1 | # 服务相关配置
2 | server:
3 | # 服务端口配置
4 | port: 8888
5 | # 服务根路径配置
6 | servlet:
7 | context-path: /dev
8 |
9 | # 开启debug模式
10 | debug: true
11 |
--------------------------------------------------------------------------------
/Chapter1-1-2/src/main/resources/application-pro.yml:
--------------------------------------------------------------------------------
1 | # 服务相关配置
2 | server:
3 | # 服务端口配置
4 | port: 8080
5 | # 服务根路径配置
6 | servlet:
7 | context-path: /
8 |
9 | # 开启debug模式
10 | debug: false
11 |
12 |
--------------------------------------------------------------------------------
/Chapter1-1-2/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | ## 多环境配置,激活哪套配置
2 | spring:
3 | profiles:
4 | active: dev
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Chapter1-1-2/src/main/resources/user.properties:
--------------------------------------------------------------------------------
1 | company.user.name=Mkeeper
2 | company.user.age=28
--------------------------------------------------------------------------------
/Chapter2-1-1/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | Chapter2-1-1
8 |
9 | Chapter1-1-2
10 | Spring Boot web开发
11 |
12 |
13 |
14 | org.springframework.boot
15 | spring-boot-starter-parent
16 | 2.0.3.RELEASE
17 |
18 |
19 |
20 | UTF-8
21 | 1.8
22 |
23 |
24 |
25 |
26 |
27 |
28 | org.springframework.boot
29 | spring-boot-starter-web
30 |
31 |
32 |
33 |
34 | org.springframework.boot
35 | spring-boot-configuration-processor
36 | true
37 |
38 |
39 |
40 | org.projectlombok
41 | lombok
42 | 1.16.20
43 | provided
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 | org.springframework.boot
53 | spring-boot-maven-plugin
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/Chapter2-1-1/src/main/java/com/mkeeper/Chapter211Application.java:
--------------------------------------------------------------------------------
1 | package com.mkeeper;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 |
6 | @SpringBootApplication
7 | public class Chapter211Application {
8 | public static void main(String[] args) {
9 | SpringApplication.run(Chapter211Application.class, args);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter2-1-1/src/main/java/com/mkeeper/controller/UserController.java:
--------------------------------------------------------------------------------
1 | package com.mkeeper.controller;
2 |
3 | import com.mkeeper.entity.User;
4 | import com.mkeeper.service.UserService;
5 | import org.springframework.beans.factory.annotation.Autowired;
6 | import org.springframework.web.bind.annotation.*;
7 | import java.util.List;
8 | @RequestMapping("/users")
9 | @RestController
10 | public class UserController {
11 | // 入口:处理相应URL
12 |
13 | @Autowired
14 | private UserService userService;
15 |
16 | @GetMapping("/{userId}")
17 | public User findByUserId(@PathVariable Integer userId){
18 | // 处理“/users/{userId}”的Get请求,获取user信息
19 | // url中的id可通过@PathVariable绑定到函数的参数中
20 | return userService.findByUserId(userId);
21 | }
22 |
23 | @GetMapping("/")
24 | public List findList(){
25 | // 处理“/users/”的Get请求,获取用户列表信息
26 | // 还可以通过@RequestParam从页面中传递参数来进行查询条件或者翻页信息的传递
27 | return userService.findList();
28 | }
29 |
30 | @PostMapping("/")
31 | public User addUser(@RequestBody User user){
32 | // 处理"/users/"的POST请求,用来创建User
33 | // 除了@RequestBody绑定参数之外,还可以通过@RequestParam从页面中传递参数
34 | return userService.addUser(user);
35 | }
36 |
37 | @PutMapping("/")
38 | public User updateUser(@RequestBody User user){
39 | // 处理"/users/{id}"的PUT请求,用来更新User信息
40 | return userService.updateUser(user);
41 | }
42 |
43 | @DeleteMapping("/{userId}")
44 | public boolean deleteByUserId(@PathVariable Integer userId){
45 | // 处理"/users/{id}"的DELETE请求,用来删除User
46 | return userService.deleteByUserId(userId);
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/Chapter2-1-1/src/main/java/com/mkeeper/dao/UserDao.java:
--------------------------------------------------------------------------------
1 | package com.mkeeper.dao;
2 |
3 | import com.mkeeper.entity.User;
4 | import org.springframework.stereotype.Component;
5 | import java.util.*;
6 |
7 | @Component
8 | public class UserDao {
9 | // 数据层:查询数据库,这里为了简单用Map模拟
10 |
11 | private static Integer count = 0;
12 |
13 | // 线程安全的Map
14 | private static Map userMap = Collections.synchronizedMap(new HashMap<>());
15 |
16 | static {
17 | // 静态代码块,第一次初始化类时被调用
18 | // 初始化userMap
19 | userMap.put(++count, User.builder().userId(count).name("Mkeeper").age(28).address("wuhan").build());
20 | userMap.put(++count, User.builder().userId(count).name("Jam").age(22).address("beijing").build());
21 | userMap.put(++count, User.builder().userId(count).name("Li").age(18).address("shanghai").build());
22 | }
23 |
24 | public User findByUserId(Integer userId){
25 | return userMap.get(userId);
26 | }
27 |
28 | public List findList(){
29 | return new ArrayList<>(userMap.values());
30 | }
31 |
32 | public User addUser(User user){
33 | user.setUserId(++count);
34 | userMap.put(count, user);
35 | return user;
36 | }
37 |
38 | public User updateUser(User user){
39 | userMap.put(user.getUserId(), user);
40 | return user;
41 | }
42 |
43 | public boolean deleteByUserId(Integer userId){
44 | userMap.remove(userId);
45 | return true;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/Chapter2-1-1/src/main/java/com/mkeeper/entity/User.java:
--------------------------------------------------------------------------------
1 | package com.mkeeper.entity;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | @Data
9 | @NoArgsConstructor
10 | @AllArgsConstructor
11 | @Builder
12 | public class User {
13 | private Integer userId;
14 | private String name;
15 | private Integer age;
16 | private String address;
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/Chapter2-1-1/src/main/java/com/mkeeper/service/UserService.java:
--------------------------------------------------------------------------------
1 | package com.mkeeper.service;
2 |
3 | import com.mkeeper.entity.User;
4 |
5 | import java.util.List;
6 |
7 |
8 | public interface UserService {
9 | // 服务层:处理业务逻辑
10 |
11 | User findByUserId(Integer userId);
12 |
13 | List findList();
14 |
15 | User addUser(User user);
16 |
17 | User updateUser(User user);
18 |
19 | boolean deleteByUserId(Integer userId);
20 | }
21 |
--------------------------------------------------------------------------------
/Chapter2-1-1/src/main/java/com/mkeeper/service/impl/UserServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.mkeeper.service.impl;
2 |
3 | import com.mkeeper.dao.UserDao;
4 | import com.mkeeper.entity.User;
5 | import com.mkeeper.service.UserService;
6 | import org.springframework.beans.factory.annotation.Autowired;
7 | import org.springframework.stereotype.Service;
8 |
9 | import java.util.List;
10 |
11 |
12 | @Service
13 | public class UserServiceImpl implements UserService {
14 |
15 | @Autowired
16 | private UserDao userDao;
17 |
18 | @Override
19 | public User findByUserId(Integer userId) {
20 | return userDao.findByUserId(userId);
21 | }
22 |
23 | @Override
24 | public List findList() {
25 | return userDao.findList();
26 | }
27 |
28 | @Override
29 | public User addUser(User user) {
30 | return userDao.addUser(user);
31 | }
32 |
33 | @Override
34 | public User updateUser(User user) {
35 | return userDao.updateUser(user);
36 | }
37 |
38 | @Override
39 | public boolean deleteByUserId(Integer userId) {
40 | return userDao.deleteByUserId(userId);
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Chapter2-1-1/src/main/resources/application.yml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mkeeper6/SpringBoot-About/0db4cfce7598c1bfee8066f7cc668064c032262e/Chapter2-1-1/src/main/resources/application.yml
--------------------------------------------------------------------------------
/Chapter2-1-10/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | com.mkeeper
8 | Chapter2-1-10
9 | 1.0-SNAPSHOT
10 |
11 |
12 |
13 | Chapter2-1-10
14 | Spring Boot web开发
15 |
16 |
17 |
18 | org.springframework.boot
19 | spring-boot-starter-parent
20 | 2.0.3.RELEASE
21 |
22 |
23 |
24 | UTF-8
25 | 1.8
26 |
27 |
28 |
29 |
30 |
31 |
32 | org.springframework.boot
33 | spring-boot-starter-web
34 |
35 |
36 |
37 |
38 | org.projectlombok
39 | lombok
40 | 1.16.20
41 | provided
42 |
43 |
44 |
45 | org.springframework.boot
46 | spring-boot-starter-thymeleaf
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | org.springframework.boot
56 | spring-boot-maven-plugin
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/Chapter2-1-10/src/main/java/com/mkeeper/Chapter2110Application.java:
--------------------------------------------------------------------------------
1 | package com.mkeeper;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 |
6 | /**
7 | * Mkeeper
8 | */
9 | @SpringBootApplication
10 | public class Chapter2110Application {
11 | public static void main(String[] args) {
12 | SpringApplication.run(Chapter2110Application.class, args);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Chapter2-1-10/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | thymeleaf:
3 | # 禁用 thymeleaf 缓存
4 | cache: false
5 | servlet:
6 | multipart:
7 | # 是否支持批量上传 (默认值 true)
8 | enabled: true
9 | # 上传文件的临时目录 (一般情况下不用特意修改)
10 | location:
11 | # 上传文件最大为 10M (默认值 1M 根据自身业务自行控制即可)
12 | max-file-size: 10MB
13 | # 上传请求最大为 10M(默认值10M 根据自身业务自行控制即可)
14 | max-request-size: 10MB
15 | # 文件大小阈值,当大于这个阈值时将写入到磁盘,否则存在内存中,(默认值0 一般情况下不用特意修改)
16 | file-size-threshold: 0
17 | # 判断是否要延迟解析文件(相当于懒加载,一般情况下不用特意修改)
18 | resolve-lazily: false
--------------------------------------------------------------------------------
/Chapter2-1-10/src/main/resources/templates/index.html:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 | 文件上传
7 |
8 |
9 |
10 | 单一文件上传示例
11 |
19 |
20 |
21 | 批量文件上传示例
22 |
23 |
37 |
38 |
39 | Base64文件上传
40 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/Chapter2-1-11/src/main/java/com/mkeeper/Chapter2111Main.java:
--------------------------------------------------------------------------------
1 | package com.mkeeper;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 |
6 | @SpringBootApplication
7 | public class Chapter2111Main {
8 | public static void main(String[] args) {
9 | SpringApplication.run(Chapter2111Main.class, args);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter2-1-11/src/main/java/com/mkeeper/controller/GetTestController.java:
--------------------------------------------------------------------------------
1 | package com.mkeeper.controller;
2 |
3 | import lombok.extern.slf4j.Slf4j;
4 | import org.springframework.http.HttpEntity;
5 | import org.springframework.http.HttpHeaders;
6 | import org.springframework.http.HttpMethod;
7 | import org.springframework.http.ResponseEntity;
8 | import org.springframework.web.bind.annotation.GetMapping;
9 | import org.springframework.web.bind.annotation.PathVariable;
10 | import org.springframework.web.bind.annotation.RestController;
11 | import org.springframework.web.client.RestTemplate;
12 |
13 | import javax.annotation.Resource;
14 | import java.io.UnsupportedEncodingException;
15 | import java.net.URLEncoder;
16 |
17 | @Slf4j
18 | @RestController
19 | public class GetTestController {
20 |
21 | @Resource
22 | private RestTemplate restTemplate;
23 |
24 | //最简单的get操作
25 | @GetMapping("/baidu1/{key}")
26 | public String get1(@PathVariable String key) throws UnsupportedEncodingException {
27 | String encodeKey = URLEncoder.encode(key, "UTF-8");
28 |
29 | String url = "http://www.baidu.com/s?bdorz_come=1&ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=" + encodeKey;
30 |
31 | return restTemplate.getForObject(url, String.class); //返回百度主站html
32 | }
33 |
34 | //需要自定义header头的get操作
35 | @GetMapping("/baidu2/{key}")
36 | public String get2(@PathVariable String key) throws UnsupportedEncodingException {
37 | HttpHeaders headers = new HttpHeaders();
38 |
39 | headers.set("MyHeaderKey", "MyHeaderValue");
40 |
41 | HttpEntity entity = new HttpEntity(headers);
42 |
43 | String encodeKey =URLEncoder.encode(key, "UTF-8");
44 |
45 | String url = "http://www.baidu.com/s?bdorz_come=1&ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=" + encodeKey;
46 |
47 | ResponseEntity response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
48 |
49 | return response.getBody(); //返回百度主站html
50 | }
51 |
52 | }
53 |
--------------------------------------------------------------------------------
/Chapter2-1-11/src/main/java/com/mkeeper/vo/ResultVo.java:
--------------------------------------------------------------------------------
1 | package com.mkeeper.vo;
2 |
3 | public class ResultVo {
4 | private Integer code;
5 | private String data;
6 |
7 | public boolean success(){
8 | return 0 == code;
9 | }
10 |
11 | public String getData(){
12 | return data;
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter2-1-11/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | # yml配置的优先级高于java配置;如果yml配置和java配置同时存在,则yml配置会覆盖java配置
2 | ####restTemplate的yml配置开始####
3 | ---
4 | spring:
5 | restTemplate:
6 | maxTotalConnect: 1000 #连接池的最大连接数,0代表不限;如果取0,需要考虑连接泄露导致系统崩溃的后果
7 | maxConnectPerRoute: 200
8 | connectTimeout: 3000
9 | readTimeout: 5000
10 | charset: UTF-8
11 | ####restTemplate的 yml配置开始####
--------------------------------------------------------------------------------
/Chapter2-1-2/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | com.mkeeper
8 | Chapter2-1-2
9 | 1.0-SNAPSHOT
10 |
11 | Chapter2-1-2
12 | Spring Boot web开发
13 |
14 |
15 |
16 | org.springframework.boot
17 | spring-boot-starter-parent
18 | 2.0.3.RELEASE
19 |
20 |
21 |
22 | UTF-8
23 | 1.8
24 |
25 |
26 |
27 |
28 |
29 |
30 | org.springframework.boot
31 | spring-boot-starter-web
32 |
33 |
34 |
35 |
36 | org.springframework.boot
37 | spring-boot-configuration-processor
38 | true
39 |
40 |
41 |
42 | org.projectlombok
43 | lombok
44 | 1.16.20
45 | provided
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | org.springframework.boot
55 | spring-boot-maven-plugin
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/Chapter2-1-2/src/main/java/com/mkeeper/Chapter212Application.java:
--------------------------------------------------------------------------------
1 | package com.mkeeper;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 |
6 | @SpringBootApplication
7 | public class Chapter212Application {
8 | public static void main(String[] args) {
9 | SpringApplication.run(Chapter212Application.class, args);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter2-1-2/src/main/java/com/mkeeper/common/R.java:
--------------------------------------------------------------------------------
1 | package com.mkeeper.common;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 |
7 | /**
8 | * 通用响应体
9 | */
10 | @Data
11 | public class R implements Serializable {
12 |
13 | private T data; //服务端数据
14 | private int status = 0; //状态码,0:成功,1:失败
15 | private String msg = ""; //描述信息
16 |
17 | public static R isOk() {
18 | return new R().msg("成功");
19 | }
20 |
21 | public static R isFail() {
22 | return new R().status(1).msg("失败");
23 | }
24 |
25 | public static R isFail(Throwable e) {
26 | return isFail().msg(e);
27 | }
28 |
29 | public R msg(Throwable e) {
30 | this.setMsg(e.toString());
31 | return this;
32 | }
33 |
34 | public R data(T data) {
35 | this.setData(data);
36 | return this;
37 | }
38 |
39 | public R msg(String msg){
40 | this.setMsg(msg);
41 | return this;
42 | }
43 |
44 | public R status(int status) {
45 | this.setStatus(status);
46 | return this;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/Chapter2-1-2/src/main/java/com/mkeeper/controller/UserController.java:
--------------------------------------------------------------------------------
1 | package com.mkeeper.controller;
2 |
3 | import com.mkeeper.common.R;
4 | import com.mkeeper.entity.User;
5 | import org.springframework.web.bind.annotation.*;
6 |
7 | @RequestMapping("/users")
8 | @RestController
9 | public class UserController {
10 |
11 | @GetMapping("/ok")
12 | public R ok(){
13 | User user = new User();
14 | user.setUserId(1);
15 | user.setName("Mkeeper");
16 | user.setAge(28);
17 |
18 | return R.isOk().data(user);
19 | }
20 |
21 | @GetMapping("/fail")
22 | public R