Skip to content

Commit b8114e4

Browse files
committed
新增【依赖注入-设计模式】项目
1 parent 0bf9f95 commit b8114e4

29 files changed

Lines changed: 440 additions & 13 deletions

README.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,20 @@
1818
1919
## 项目实践系列
2020

21-
[【项目实践】一文带你搞定前后端分离下的认证和授权|Spring Security + JWT](https://github.com/RudeCrab/rude-java/tree/master/project-practice/springsecurity)
22-
23-
[【项目实践】一文带你搞定页面权限、按钮权限以及数据权限](https://github.com/RudeCrab/rude-java/tree/master/project-practice/rbac)
21+
[【项目实践】学习SpringBoot之前先学学SSM整合](https://github.com/RudeCrab/rude-java/blob/master/project-practice/ssm)
2422

2523
[【项目实践】SpringBoot三招组合拳,手把手教你打出优雅的后端接口](https://github.com/RudeCrab/rude-java/blob/master/project-practice/validation-and-exception-handler)
2624

2725
[【项目实践】后端接口统一规范的同时,如何优雅得扩展规范](https://github.com/RudeCrab/rude-java/blob/master/project-practice/validation-and-exception-handler2)
2826

29-
[【项目实践】学习SpringBoot之前先学学SSM整合](https://github.com/RudeCrab/rude-java/blob/master/project-practice/ssm)
30-
3127
[【项目实践】在用安全框架前,我想先让你手撸一个登陆认证](https://github.com/RudeCrab/rude-java/tree/master/project-practice/login-demo)
3228

29+
[【项目实践】一文带你搞定页面权限、按钮权限以及数据权限](https://github.com/RudeCrab/rude-java/tree/master/project-practice/rbac)
30+
31+
[【项目实践】一文带你搞定前后端分离下的认证和授权|Spring Security + JWT](https://github.com/RudeCrab/rude-java/tree/master/project-practice/springsecurity)
32+
33+
[【项目实践】依赖注入用得好,设计模式轻松搞](https://github.com/RudeCrab/rude-java/tree/master/project-practice/di)
34+
3335
[【项目实践】使用Vue.js和ElementUI快速实现后台管理系统的界面布局](https://github.com/RudeCrab/rude-java/blob/master/project-practice/vue-route-demo)
3436

3537
## 联系方式
@@ -38,7 +40,5 @@
3840

3941
![微信二维码](http://ww1.sinaimg.cn/large/dcdff92dgy1glnmky7fb7j20p00dwdig.jpg)
4042

41-
> 博客、Github、微信公众号都是:**RudeCrab**,欢迎关注!如果对你有帮助可以收藏、点赞、star、在看、分享~~ 你的支持,就是我写文的最大动力
42-
>
43-
> 微信上转载请联系公众号开启白名单,其他地方转载请标明原地址、原作者!
43+
> 微信上转载请联系公众号【RudeCrab】开启白名单,其他地方转载请标明原地址、原作者!
4444

project-practice/di/.gitignore

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
HELP.md
2+
target/
3+
!.mvn/wrapper/maven-wrapper.jar
4+
!**/src/main/**/target/
5+
!**/src/test/**/target/
6+
7+
### STS ###
8+
.apt_generated
9+
.classpath
10+
.factorypath
11+
.project
12+
.settings
13+
.springBeans
14+
.sts4-cache
15+
16+
### IntelliJ IDEA ###
17+
.idea
18+
*.iws
19+
*.iml
20+
*.ipr
21+
22+
### NetBeans ###
23+
/nbproject/private/
24+
/nbbuild/
25+
/dist/
26+
/nbdist/
27+
/.nb-gradle/
28+
build/
29+
!**/src/main/**/build/
30+
!**/src/test/**/build/
31+
32+
### VS Code ###
33+
.vscode/

project-practice/di/READEME.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# 【项目实践】依赖注入用得好,设计模式轻松搞
2+
3+
## 项目运行
4+
5+
本项目使用Spring Boot搭建,主要讲解设计模式在Spring框架下的运用!代码比较简单,重点是思路。
6+
7+
讲项目导入到IDE即可运行,默认端口8080。
8+
9+
## 文章讲解
10+
11+
https://juejin.cn/post/6914815944644624391
12+
13+
![微信二维码](http://ww1.sinaimg.cn/large/dcdff92dgy1glnmky7fb7j20p00dwdig.jpg)

project-practice/di/pom.xml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
<parent>
6+
<groupId>org.springframework.boot</groupId>
7+
<artifactId>spring-boot-starter-parent</artifactId>
8+
<version>2.4.1</version>
9+
<relativePath/> <!-- lookup parent from repository -->
10+
</parent>
11+
<groupId>com.rudecrab</groupId>
12+
<artifactId>di</artifactId>
13+
<version>0.0.1-SNAPSHOT</version>
14+
<name>di</name>
15+
<description>Demo project for dependency injection</description>
16+
17+
<properties>
18+
<java.version>1.8</java.version>
19+
</properties>
20+
21+
<dependencies>
22+
<dependency>
23+
<groupId>org.springframework.boot</groupId>
24+
<artifactId>spring-boot-starter-web</artifactId>
25+
</dependency>
26+
</dependencies>
27+
28+
<build>
29+
<plugins>
30+
<plugin>
31+
<groupId>org.springframework.boot</groupId>
32+
<artifactId>spring-boot-maven-plugin</artifactId>
33+
</plugin>
34+
</plugins>
35+
</build>
36+
37+
</project>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.rudecrab.di;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
6+
@SpringBootApplication
7+
public class DiApplication {
8+
9+
public static void main(String[] args) {
10+
SpringApplication.run(DiApplication.class, args);
11+
}
12+
13+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.rudecrab.di.chain;
2+
3+
import org.springframework.core.annotation.Order;
4+
import org.springframework.stereotype.Service;
5+
6+
/**
7+
* @author RudeCrab
8+
*/
9+
@Order(3)
10+
@Service
11+
public class BossHandler implements Handler {
12+
@Override
13+
public boolean process(MyRequest request) {
14+
System.out.println(String.format("Boss已审批【%s】的【%d】天请假申请", request.getName(), request.getDay()));
15+
// 中止
16+
return false;
17+
}
18+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.rudecrab.di.chain;
2+
3+
import org.springframework.beans.factory.annotation.Autowired;
4+
import org.springframework.web.bind.annotation.*;
5+
6+
import java.util.List;
7+
8+
/**
9+
* @author RudeCrab
10+
*/
11+
@RestController
12+
@RequestMapping("/chain")
13+
public class ChainController {
14+
@Autowired
15+
private List<Handler> handlers;
16+
17+
@PostMapping
18+
public void process(@RequestBody MyRequest request) {
19+
System.out.println("---");
20+
// 依次调用Handler
21+
for (Handler handler : handlers) {
22+
// 如果返回为false,中止调用
23+
if (!handler.process(request)) {
24+
break;
25+
}
26+
}
27+
}
28+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.rudecrab.di.chain;
2+
3+
/**
4+
* @author RudeCrab
5+
*/
6+
public interface Handler {
7+
/**
8+
* 处理请假申请
9+
* @param request 请假申请
10+
* @return true则放行,false则中止
11+
*/
12+
boolean process(MyRequest request);
13+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.rudecrab.di.chain;
2+
3+
import org.springframework.core.annotation.Order;
4+
import org.springframework.stereotype.Service;
5+
6+
/**
7+
* @author RudeCrab
8+
*/
9+
@Order(1)
10+
@Service
11+
public class LeaderHandler implements Handler{
12+
@Override
13+
public boolean process(MyRequest request) {
14+
if (request.getDay() <= 3) {
15+
System.out.println(String.format("Leader已审批【%s】的【%d】天请假申请", request.getName(), request.getDay()));
16+
// 处理完毕,不放行
17+
return false;
18+
}
19+
System.out.println(String.format("Leader无法审批【%s】的【%d】天请假申请", request.getName(), request.getDay()));
20+
// 放行
21+
return true;
22+
}
23+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.rudecrab.di.chain;
2+
3+
import org.springframework.core.annotation.Order;
4+
import org.springframework.stereotype.Service;
5+
6+
/**
7+
* @author RudeCrab
8+
*/
9+
@Order(2)
10+
@Service
11+
public class ManagerHandler implements Handler{
12+
@Override
13+
public boolean process(MyRequest request) {
14+
if (request.getDay() <= 7) {
15+
System.out.println(String.format("Manger已审批【%s】的【%d】天请假申请", request.getName(), request.getDay()));
16+
// 处理完毕,不放行
17+
return false;
18+
}
19+
System.out.println(String.format("Manger无法审批【%s】的【%d】天请假申请", request.getName(), request.getDay()));
20+
// 放行
21+
return true;
22+
}
23+
}

0 commit comments

Comments
 (0)