forked from fuzhengwei/itstack-demo-design
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
小傅哥 | 重学 Java 设计模式:实战外观模式「基于SpringBoot开发门面模式中间件,统一控制接口白名单场景」
- Loading branch information
1 parent
ea2b3e8
commit 5879bbb
Showing
17 changed files
with
611 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,121 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<project xmlns="http://maven.apache.org/POM/4.0.0" | ||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
|
||
<modelVersion>4.0.0</modelVersion> | ||
|
||
<artifactId>itstack-demo-design-10-00</artifactId> | ||
|
||
<packaging>war</packaging> | ||
|
||
<parent> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-parent</artifactId> | ||
<version>2.1.2.RELEASE</version> | ||
<relativePath/> <!-- lookup parent from repository --> | ||
</parent> | ||
|
||
<properties> | ||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> | ||
<java.version>1.8</java.version> | ||
</properties> | ||
|
||
<dependencies> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-web</artifactId> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-thymeleaf</artifactId> | ||
</dependency> | ||
<!-- test --> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-test</artifactId> | ||
<scope>test</scope> | ||
</dependency> | ||
<!-- 添加servlet依赖模块 --> | ||
<dependency> | ||
<groupId>javax.servlet</groupId> | ||
<artifactId>javax.servlet-api</artifactId> | ||
<scope>provided</scope> | ||
<version>4.0.0</version> | ||
</dependency> | ||
<!-- 添加jstl标签库依赖模块 --> | ||
<dependency> | ||
<groupId>javax.servlet</groupId> | ||
<artifactId>jstl</artifactId> | ||
<version>1.2</version> | ||
</dependency> | ||
<!-- fastjson --> | ||
<dependency> | ||
<groupId>com.alibaba</groupId> | ||
<artifactId>fastjson</artifactId> | ||
<version>1.2.58</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>dom4j</groupId> | ||
<artifactId>dom4j</artifactId> | ||
<version>1.6.1</version> | ||
</dependency> | ||
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> | ||
<dependency> | ||
<groupId>org.apache.commons</groupId> | ||
<artifactId>commons-lang3</artifactId> | ||
<version>3.8</version> | ||
</dependency> | ||
<!-- https://mvnrepository.com/artifact/com.thoughtworks.xstream/xstream --> | ||
<dependency> | ||
<groupId>com.thoughtworks.xstream</groupId> | ||
<artifactId>xstream</artifactId> | ||
<version>1.4.10</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>itstack-demo-design-10-02</artifactId> | ||
<version>2.1.2.RELEASE</version> | ||
</dependency> | ||
|
||
</dependencies> | ||
|
||
<build> | ||
<plugins> | ||
<plugin> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-maven-plugin</artifactId> | ||
</plugin> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-compiler-plugin</artifactId> | ||
<version>3.2</version> | ||
<configuration> | ||
<source>1.8</source> | ||
<target>1.8</target> | ||
<encoding>UTF-8</encoding> | ||
</configuration> | ||
</plugin> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-jar-plugin</artifactId> | ||
<version>3.2.0</version> | ||
<configuration> | ||
<archive> | ||
<addMavenDescriptor>false</addMavenDescriptor> | ||
<index>true</index> | ||
<manifest> | ||
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> | ||
<addDefaultImplementationEntries>true</addDefaultImplementationEntries> | ||
</manifest> | ||
<manifestEntries> | ||
<Implementation-Build>${maven.build.timestamp}</Implementation-Build> | ||
</manifestEntries> | ||
</archive> | ||
</configuration> | ||
</plugin> | ||
</plugins> | ||
</build> | ||
|
||
</project> |
21 changes: 21 additions & 0 deletions
21
itstack-demo-design-10-00/src/main/java/org/itstack/demo/design/HelloWorldApplication.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package org.itstack.demo.design; | ||
|
||
import org.springframework.boot.SpringApplication; | ||
import org.springframework.boot.autoconfigure.SpringBootApplication; | ||
import org.springframework.context.annotation.Configuration; | ||
import org.springframework.context.annotation.ImportResource; | ||
|
||
/** | ||
* 微信公众号:bugstack虫洞栈 | 沉淀、分享、成长,专注于原创专题案例 | ||
* 论坛:http://bugstack.cn | ||
* Create by 小傅哥 on @2020 | ||
*/ | ||
@SpringBootApplication | ||
@Configuration | ||
public class HelloWorldApplication { | ||
|
||
public static void main(String[] args) { | ||
SpringApplication.run(HelloWorldApplication.class, args); | ||
} | ||
|
||
} |
74 changes: 74 additions & 0 deletions
74
itstack-demo-design-10-00/src/main/java/org/itstack/demo/design/domain/UserInfo.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
package org.itstack.demo.design.domain; | ||
|
||
/** | ||
* 公众号:bugstack虫洞栈 | 沉淀、分享、成长,让自己和他人都能有所收获! | ||
* 博 客:http://bugstack.cn | ||
* Create by 小傅哥 on @2020 | ||
*/ | ||
public class UserInfo { | ||
|
||
//code、info可以统一定义一个类 | ||
private String code; | ||
private String info; | ||
|
||
private String name; | ||
private Integer age; | ||
private String address; | ||
|
||
public UserInfo() { | ||
|
||
} | ||
|
||
public UserInfo(String code, String info) { | ||
this.code = code; | ||
this.info = info; | ||
} | ||
|
||
public UserInfo(String name, Integer age, String address) { | ||
this.code = "0000"; | ||
this.info = "success"; | ||
this.name = name; | ||
this.age = age; | ||
this.address = address; | ||
} | ||
|
||
public String getCode() { | ||
return code; | ||
} | ||
|
||
public void setCode(String code) { | ||
this.code = code; | ||
} | ||
|
||
public String getInfo() { | ||
return info; | ||
} | ||
|
||
public void setInfo(String info) { | ||
this.info = info; | ||
} | ||
|
||
public String getName() { | ||
return name; | ||
} | ||
|
||
public void setName(String name) { | ||
this.name = name; | ||
} | ||
|
||
public Integer getAge() { | ||
return age; | ||
} | ||
|
||
public void setAge(Integer age) { | ||
this.age = age; | ||
} | ||
|
||
public String getAddress() { | ||
return address; | ||
} | ||
|
||
public void setAddress(String address) { | ||
this.address = address; | ||
} | ||
} |
36 changes: 36 additions & 0 deletions
36
...ack-demo-design-10-00/src/main/java/org/itstack/demo/design/web/HelloWorldController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
package org.itstack.demo.design.web; | ||
|
||
import org.itstack.demo.design.domain.UserInfo; | ||
import org.itstack.demo.design.door.annotation.DoDoor; | ||
import org.springframework.beans.factory.annotation.Value; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.RequestMethod; | ||
import org.springframework.web.bind.annotation.RequestParam; | ||
import org.springframework.web.bind.annotation.RestController; | ||
|
||
/** | ||
* 公众号:bugstack虫洞栈 | 沉淀、分享、成长,让自己和他人都能有所收获! | ||
* 博 客:http://bugstack.cn | ||
* Create by 小傅哥 on @2020 | ||
*/ | ||
@RestController | ||
public class HelloWorldController { | ||
|
||
@Value("${server.port}") | ||
private int port; | ||
|
||
/** | ||
* @DoDoor 自定义注解 | ||
* key:需要从入参取值的属性字段,如果是对象则从对象中取值,如果是单个值则直接使用 | ||
* returnJson:预设拦截时返回值,是返回对象的Json | ||
* | ||
* http://localhost:8080/api/queryUserInfo?userId=1001 | ||
* http://localhost:8080/api/queryUserInfo?userId=小团团 | ||
*/ | ||
@DoDoor(key = "userId", returnJson = "{\"code\":\"1111\",\"info\":\"非白名单可访问用户拦截!\"}") | ||
@RequestMapping(path = "/api/queryUserInfo", method = RequestMethod.GET) | ||
public UserInfo queryUserInfo(@RequestParam String userId) { | ||
return new UserInfo("虫虫:" + userId, 19, "天津市南开区旮旯胡同100号"); | ||
} | ||
|
||
} |
12 changes: 12 additions & 0 deletions
12
itstack-demo-design-10-00/src/main/resources/application.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
server: | ||
port: 8080 | ||
|
||
spring: | ||
application: | ||
name: itstack-demo-springboot-helloworld-door | ||
|
||
# 自定义中间件配置 | ||
itstack: | ||
door: | ||
enabled: true | ||
userStr: 1001,aaaa,ccc #白名单用户ID,多个逗号隔开 |
4 changes: 4 additions & 0 deletions
4
itstack-demo-design-10-00/src/test/java/org/itstack/demo/design/test/ApiTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
package org.itstack.demo.design.test; | ||
|
||
public class ApiTest { | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<project xmlns="http://maven.apache.org/POM/4.0.0" | ||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<parent> | ||
<artifactId>itstack-demo-design</artifactId> | ||
<groupId>org.itstack</groupId> | ||
<version>1.0-SNAPSHOT</version> | ||
</parent> | ||
<modelVersion>4.0.0</modelVersion> | ||
|
||
<artifactId>itstack-demo-design-10-01</artifactId> | ||
<dependencies> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>itstack-demo-design-10-00</artifactId> | ||
<version>2.1.2.RELEASE</version> | ||
<scope>compile</scope> | ||
</dependency> | ||
</dependencies> | ||
|
||
|
||
</project> |
25 changes: 25 additions & 0 deletions
25
itstack-demo-design-10-01/src/main/java/org/itstack/demo/design/HelloWorldController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
package org.itstack.demo.design; | ||
|
||
import org.itstack.demo.design.domain.UserInfo; | ||
import org.springframework.web.bind.annotation.RequestParam; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
public class HelloWorldController { | ||
|
||
public UserInfo queryUserInfo(@RequestParam String userId) { | ||
|
||
// 做白名单拦截 | ||
List<String> userList = new ArrayList<String>(); | ||
userList.add("1001"); | ||
userList.add("aaaa"); | ||
userList.add("ccc"); | ||
if (!userList.contains(userId)) { | ||
return new UserInfo("1111", "非白名单可访问用户拦截!"); | ||
} | ||
|
||
return new UserInfo("虫虫:" + userId, 19, "天津市南开区旮旯胡同100号"); | ||
} | ||
|
||
} |
Oops, something went wrong.