From 943def76ad950c705329b96ddb0707960b9ee8de Mon Sep 17 00:00:00 2001 From: Elex Date: Wed, 18 Aug 2021 11:11:41 +0900 Subject: [PATCH] 2021-08-18 --- interceptor/build.gradle.kts | 27 ++++++++++++++ .../java/kr/pe/elex/examples/Application.java | 33 +++++++++++++++++ .../java/kr/pe/elex/examples/MyConfig.java | 21 +++++++++++ .../kr/pe/elex/examples/MyController.java | 37 +++++++++++++++++++ .../java/kr/pe/elex/examples/MyFilter1.java | 19 ++++++++++ .../java/kr/pe/elex/examples/MyFilter2.java | 20 ++++++++++ .../java/kr/pe/elex/examples/MyFilter3.java | 17 +++++++++ .../kr/pe/elex/examples/MyInterceptor.java | 31 ++++++++++++++++ .../java/kr/pe/elex/examples/MyService.java | 10 +++++ .../kr/pe/elex/examples/package-info.java | 8 ++++ .../src/main/resources/application.yaml | 8 ++++ interceptor/src/main/resources/banner.txt | 10 +++++ .../main/resources/templates/main.mustache | 2 + settings.gradle.kts | 2 +- 14 files changed, 244 insertions(+), 1 deletion(-) create mode 100644 interceptor/build.gradle.kts create mode 100644 interceptor/src/main/java/kr/pe/elex/examples/Application.java create mode 100644 interceptor/src/main/java/kr/pe/elex/examples/MyConfig.java create mode 100644 interceptor/src/main/java/kr/pe/elex/examples/MyController.java create mode 100644 interceptor/src/main/java/kr/pe/elex/examples/MyFilter1.java create mode 100644 interceptor/src/main/java/kr/pe/elex/examples/MyFilter2.java create mode 100644 interceptor/src/main/java/kr/pe/elex/examples/MyFilter3.java create mode 100644 interceptor/src/main/java/kr/pe/elex/examples/MyInterceptor.java create mode 100644 interceptor/src/main/java/kr/pe/elex/examples/MyService.java create mode 100644 interceptor/src/main/java/kr/pe/elex/examples/package-info.java create mode 100644 interceptor/src/main/resources/application.yaml create mode 100644 interceptor/src/main/resources/banner.txt create mode 100644 interceptor/src/main/resources/templates/main.mustache diff --git a/interceptor/build.gradle.kts b/interceptor/build.gradle.kts new file mode 100644 index 0000000..b6071fc --- /dev/null +++ b/interceptor/build.gradle.kts @@ -0,0 +1,27 @@ +/* + * Spring-boot Examples + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +plugins { + id("elex-spring-boot") + + id("org.springframework.boot") version "2.5.3" + id("io.spring.dependency-management") version "1.0.11.RELEASE" +} + +dependencies { + implementation("org.springframework.boot:spring-boot-starter-web") + implementation("org.springframework.boot:spring-boot-starter-mustache") + + compileOnly("org.projectlombok:lombok") + developmentOnly("org.springframework.boot:spring-boot-devtools") + + annotationProcessor("org.springframework.boot:spring-boot-configuration-processor") + annotationProcessor("org.projectlombok:lombok") + + testImplementation("org.springframework.boot:spring-boot-starter-test") + +} diff --git a/interceptor/src/main/java/kr/pe/elex/examples/Application.java b/interceptor/src/main/java/kr/pe/elex/examples/Application.java new file mode 100644 index 0000000..ce15d75 --- /dev/null +++ b/interceptor/src/main/java/kr/pe/elex/examples/Application.java @@ -0,0 +1,33 @@ +/* + * Spring-boot Examples + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.examples; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.context.annotation.Bean; +@Slf4j +@SpringBootApplication +@ServletComponentScan +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + + @Bean + public FilterRegistrationBean myFilter(){ + FilterRegistrationBean bean = new FilterRegistrationBean<>(); + bean.setFilter(new MyFilter3()); + bean.setOrder(3); + bean.addUrlPatterns("/sample/*"); + return bean; + } +} diff --git a/interceptor/src/main/java/kr/pe/elex/examples/MyConfig.java b/interceptor/src/main/java/kr/pe/elex/examples/MyConfig.java new file mode 100644 index 0000000..94e5f74 --- /dev/null +++ b/interceptor/src/main/java/kr/pe/elex/examples/MyConfig.java @@ -0,0 +1,21 @@ +package kr.pe.elex.examples; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class MyConfig implements WebMvcConfigurer { + @Autowired + private MyInterceptor myInterceptor; + + @Override + public void addInterceptors(InterceptorRegistry registry) { + + registry.addInterceptor(myInterceptor) + .addPathPatterns("/**"); + } + + +} diff --git a/interceptor/src/main/java/kr/pe/elex/examples/MyController.java b/interceptor/src/main/java/kr/pe/elex/examples/MyController.java new file mode 100644 index 0000000..30a1d66 --- /dev/null +++ b/interceptor/src/main/java/kr/pe/elex/examples/MyController.java @@ -0,0 +1,37 @@ +/* + * Spring-boot Examples + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.examples; + +import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.Resource; +import org.springframework.http.ContentDisposition; +import org.springframework.http.HttpHeaders; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import java.util.HashMap; + +@Slf4j +@Controller +public class MyController { + @Autowired + private MyService service; + + @GetMapping(path = {"/**"}) + public String index() throws Exception { + log.info("I'm a controller."); + return "main"; + } + +} diff --git a/interceptor/src/main/java/kr/pe/elex/examples/MyFilter1.java b/interceptor/src/main/java/kr/pe/elex/examples/MyFilter1.java new file mode 100644 index 0000000..0b472e9 --- /dev/null +++ b/interceptor/src/main/java/kr/pe/elex/examples/MyFilter1.java @@ -0,0 +1,19 @@ +package kr.pe.elex.examples; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import javax.servlet.*; +import java.io.IOException; + +@Slf4j +@Component +@Order(1) +public class MyFilter1 implements Filter { + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + log.info("I'm a filter 1."); + chain.doFilter(request, response); + } +} diff --git a/interceptor/src/main/java/kr/pe/elex/examples/MyFilter2.java b/interceptor/src/main/java/kr/pe/elex/examples/MyFilter2.java new file mode 100644 index 0000000..c9dbbcb --- /dev/null +++ b/interceptor/src/main/java/kr/pe/elex/examples/MyFilter2.java @@ -0,0 +1,20 @@ +package kr.pe.elex.examples; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.core.annotation.Order; + +import javax.servlet.*; +import javax.servlet.annotation.WebFilter; +import java.io.IOException; + +@Slf4j +@WebFilter(urlPatterns = "/sample/*") +@Order(2) +public class MyFilter2 implements Filter { + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + log.info("I'm a filter 2."); + chain.doFilter(request, response); + } +} diff --git a/interceptor/src/main/java/kr/pe/elex/examples/MyFilter3.java b/interceptor/src/main/java/kr/pe/elex/examples/MyFilter3.java new file mode 100644 index 0000000..4b7fd95 --- /dev/null +++ b/interceptor/src/main/java/kr/pe/elex/examples/MyFilter3.java @@ -0,0 +1,17 @@ +package kr.pe.elex.examples; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.core.annotation.Order; + +import javax.servlet.*; +import java.io.IOException; + +@Slf4j +//@Order(3) +public class MyFilter3 implements Filter { + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + log.info("I'm a filter 3."); + chain.doFilter(request, response); + } +} diff --git a/interceptor/src/main/java/kr/pe/elex/examples/MyInterceptor.java b/interceptor/src/main/java/kr/pe/elex/examples/MyInterceptor.java new file mode 100644 index 0000000..b52ece0 --- /dev/null +++ b/interceptor/src/main/java/kr/pe/elex/examples/MyInterceptor.java @@ -0,0 +1,31 @@ +package kr.pe.elex.examples; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@Component +@Slf4j +public class MyInterceptor implements HandlerInterceptor { + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + log.info("I'm an interceptor, preHandle"); + return true; + } + + @Override + public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { + log.info("I'm an interceptor, postHandle"); + HandlerInterceptor.super.postHandle(request, response, handler, modelAndView); + } + + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + log.info("I'm an interceptor, afterCompletion"); + HandlerInterceptor.super.afterCompletion(request, response, handler, ex); + } +} diff --git a/interceptor/src/main/java/kr/pe/elex/examples/MyService.java b/interceptor/src/main/java/kr/pe/elex/examples/MyService.java new file mode 100644 index 0000000..e158d62 --- /dev/null +++ b/interceptor/src/main/java/kr/pe/elex/examples/MyService.java @@ -0,0 +1,10 @@ +package kr.pe.elex.examples; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +public class MyService { + +} diff --git a/interceptor/src/main/java/kr/pe/elex/examples/package-info.java b/interceptor/src/main/java/kr/pe/elex/examples/package-info.java new file mode 100644 index 0000000..ce9cc62 --- /dev/null +++ b/interceptor/src/main/java/kr/pe/elex/examples/package-info.java @@ -0,0 +1,8 @@ +/* + * Spring-boot Examples + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.examples; diff --git a/interceptor/src/main/resources/application.yaml b/interceptor/src/main/resources/application.yaml new file mode 100644 index 0000000..e8e0f76 --- /dev/null +++ b/interceptor/src/main/resources/application.yaml @@ -0,0 +1,8 @@ +spring: + application: + name: My spring-boot project +server: + port: 8080 +logging: + level: + root: info diff --git a/interceptor/src/main/resources/banner.txt b/interceptor/src/main/resources/banner.txt new file mode 100644 index 0000000..f7a35db --- /dev/null +++ b/interceptor/src/main/resources/banner.txt @@ -0,0 +1,10 @@ + ('-. ('-. ) (`-. + _( OO) _( OO) ( OO ). +(,------.,--. (,------.(_/. \_)-. + | .---'| |.-') | .---' \ `.' / + | | | | OO ) | | \ /\ +(| '--. | |`-' |(| '--. \ \ | + | .--'(| '---.' | .--' .' \_) + | `---.| | | `---. / .'. \ + `------'`------' `------''--' '--' +powered by ELEX diff --git a/interceptor/src/main/resources/templates/main.mustache b/interceptor/src/main/resources/templates/main.mustache new file mode 100644 index 0000000..d505801 --- /dev/null +++ b/interceptor/src/main/resources/templates/main.mustache @@ -0,0 +1,2 @@ +

Hello

+

Hello, World!

diff --git a/settings.gradle.kts b/settings.gradle.kts index 6951431..2e88da2 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -10,5 +10,5 @@ include( "file-upload", "security", "security-with-jpa", "validation", "testing", "mqtt", "websocket", "restful", "swing", "rest-doc", "cache", "security-with-jwt", "exception", "i18n", "i18n-mustache","mvc", - "thymeleaf" + "thymeleaf", "interceptor" )