Skip to content

Commit 233ce42

Browse files
committed
add interceptor
1 parent 59324b6 commit 233ce42

17 files changed

+466
-0
lines changed

interceptor/.gitignore

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
/target
2+
/node_modules
3+
.gradle
4+
/build/
5+
/yarn-error.log
6+
7+
# Ignore Gradle GUI config
8+
gradle-app.setting
9+
10+
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
11+
!gradle-wrapper.jar
12+
13+
# Cache of project
14+
.gradletasknamecache
15+
16+
# User-specific stuff:
17+
.idea/**/workspace.xml
18+
.idea/**/tasks.xml
19+
.idea/dictionaries
20+
.idea/artifacts
21+
22+
# Sensitive or high-churn files:
23+
.idea/**/dataSources/
24+
.idea/**/dataSources.ids
25+
.idea/**/dataSources.xml
26+
.idea/**/dataSources.local.xml
27+
.idea/**/sqlDataSources.xml
28+
.idea/**/dynamic.xml
29+
.idea/**/uiDesigner.xml
30+
.idea/inspectionProfiles
31+
32+
# Gradle:
33+
.idea/**/gradle.xml
34+
.idea/**/libraries
35+
36+
# CMake
37+
cmake-build-debug/
38+
39+
# Mongo Explorer plugin:
40+
.idea/**/mongoSettings.xml
41+
42+
## File-based project format:
43+
*.iws
44+
45+
## Plugin-specific files:
46+
47+
# IntelliJ
48+
/out/
49+
50+
# mpeltonen/sbt-idea plugin
51+
.idea_modules/
52+
53+
# JIRA plugin
54+
atlassian-ide-plugin.xml
55+
56+
# Cursive Clojure plugin
57+
.idea/replstate.xml
58+
59+
# Ruby plugin and RubyMine
60+
/.rakeTasks
61+
62+
# Crashlytics plugin (for Android Studio and IntelliJ)
63+
com_crashlytics_export_strings.xml
64+
crashlytics.properties
65+
crashlytics-build.properties
66+
fabric.properties
67+
68+
### JetBrains Patch ###
69+
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
70+
71+
# *.iml
72+
# modules.xml
73+
.idea/misc.xml
74+
# *.ipr
75+
76+
# Sonarlint plugin
77+
.idea/sonarlint
78+
/.idea/.name
79+
/config.properties
80+
/src/main/webapp/manifest.json
81+
/src/main/resources/db.properties
82+
/src/test/resources/db-test.properties
83+
/.idea/hotswap_agent.xml
84+
/log.log

interceptor/.idea/compiler.xml

Lines changed: 22 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

interceptor/.idea/encodings.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

interceptor/.idea/modules.xml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

interceptor/.idea/vcs.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

interceptor/interceptor.iml

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
3+
<component name="FacetManager">
4+
<facet type="Spring" name="Spring">
5+
<configuration />
6+
</facet>
7+
<facet type="web" name="Web">
8+
<configuration>
9+
<webroots />
10+
<sourceRoots>
11+
<root url="file://$MODULE_DIR$/src/main/java" />
12+
<root url="file://$MODULE_DIR$/src/main/resources" />
13+
</sourceRoots>
14+
</configuration>
15+
</facet>
16+
</component>
17+
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
18+
<output url="file://$MODULE_DIR$/target/classes" />
19+
<output-test url="file://$MODULE_DIR$/target/test-classes" />
20+
<content url="file://$MODULE_DIR$">
21+
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
22+
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
23+
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
24+
<excludeFolder url="file://$MODULE_DIR$/target" />
25+
</content>
26+
<orderEntry type="inheritedJdk" />
27+
<orderEntry type="sourceFolder" forTests="false" />
28+
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.0.5.RELEASE" level="project" />
29+
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.0.5.RELEASE" level="project" />
30+
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.0.5.RELEASE" level="project" />
31+
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
32+
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
33+
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.10.0" level="project" />
34+
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.10.0" level="project" />
35+
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.25" level="project" />
36+
<orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
37+
<orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.19" level="project" />
38+
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.0.5.RELEASE" level="project" />
39+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.6" level="project" />
40+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
41+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.6" level="project" />
42+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.6" level="project" />
43+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.6" level="project" />
44+
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.6" level="project" />
45+
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.0.5.RELEASE" level="project" />
46+
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:8.5.34" level="project" />
47+
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:8.5.34" level="project" />
48+
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.5.34" level="project" />
49+
<orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.12.Final" level="project" />
50+
<orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" />
51+
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final" level="project" />
52+
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.3.4" level="project" />
53+
<orderEntry type="library" name="Maven: org.springframework:spring-web:5.0.9.RELEASE" level="project" />
54+
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.0.9.RELEASE" level="project" />
55+
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.0.9.RELEASE" level="project" />
56+
<orderEntry type="library" name="Maven: org.springframework:spring-aop:5.0.9.RELEASE" level="project" />
57+
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.0.9.RELEASE" level="project" />
58+
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.0.9.RELEASE" level="project" />
59+
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-thymeleaf:2.0.5.RELEASE" level="project" />
60+
<orderEntry type="library" name="Maven: org.thymeleaf:thymeleaf-spring5:3.0.9.RELEASE" level="project" />
61+
<orderEntry type="library" name="Maven: org.thymeleaf:thymeleaf:3.0.9.RELEASE" level="project" />
62+
<orderEntry type="library" name="Maven: org.attoparser:attoparser:2.0.4.RELEASE" level="project" />
63+
<orderEntry type="library" name="Maven: org.unbescape:unbescape:1.1.5.RELEASE" level="project" />
64+
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
65+
<orderEntry type="library" name="Maven: org.thymeleaf.extras:thymeleaf-extras-java8time:3.0.1.RELEASE" level="project" />
66+
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-devtools:2.0.5.RELEASE" level="project" />
67+
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.0.5.RELEASE" level="project" />
68+
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.0.5.RELEASE" level="project" />
69+
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.0.5.RELEASE" level="project" />
70+
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.0.5.RELEASE" level="project" />
71+
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.0.5.RELEASE" level="project" />
72+
<orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.4.0" level="project" />
73+
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.3" level="project" />
74+
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.2" level="project" />
75+
<orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:5.0.4" level="project" />
76+
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
77+
<orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.9.1" level="project" />
78+
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:2.15.0" level="project" />
79+
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy:1.7.11" level="project" />
80+
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.7.11" level="project" />
81+
<orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.6" level="project" />
82+
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
83+
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
84+
<orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" />
85+
<orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
86+
<orderEntry type="library" name="Maven: org.springframework:spring-core:5.0.9.RELEASE" level="project" />
87+
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.0.9.RELEASE" level="project" />
88+
<orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.0.9.RELEASE" level="project" />
89+
<orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.5.1" level="project" />
90+
</component>
91+
</module>

interceptor/pom.xml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
6+
<groupId>org.springframework</groupId>
7+
<artifactId>interceptor</artifactId>
8+
<version>0.1.0</version>
9+
10+
<parent>
11+
<groupId>org.springframework.boot</groupId>
12+
<artifactId>spring-boot-starter-parent</artifactId>
13+
<version>2.0.5.RELEASE</version>
14+
</parent>
15+
16+
<dependencies>
17+
<dependency>
18+
<groupId>org.springframework.boot</groupId>
19+
<artifactId>spring-boot-starter-web</artifactId>
20+
</dependency>
21+
<dependency>
22+
<groupId>org.springframework.boot</groupId>
23+
<artifactId>spring-boot-starter-thymeleaf</artifactId>
24+
</dependency>
25+
<dependency>
26+
<groupId>org.springframework.boot</groupId>
27+
<artifactId>spring-boot-devtools</artifactId>
28+
<optional>true</optional>
29+
</dependency>
30+
<dependency>
31+
<groupId>org.springframework.boot</groupId>
32+
<artifactId>spring-boot-starter-test</artifactId>
33+
<scope>test</scope>
34+
</dependency>
35+
</dependencies>
36+
37+
<properties>
38+
<java.version>1.8</java.version>
39+
</properties>
40+
41+
42+
<build>
43+
<plugins>
44+
<plugin>
45+
<groupId>org.springframework.boot</groupId>
46+
<artifactId>spring-boot-maven-plugin</artifactId>
47+
</plugin>
48+
</plugins>
49+
</build>
50+
51+
</project>

interceptor/readme.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Interceptors in Spring Boot
2+
3+
Spring Interceptors has the ability to pre-handle and post-handle the web requests. Each interceptor class should extend the HandlerInterceptorAdapter class
4+
5+
## How connect interceptor
6+
7+
To add our interceptors into Spring configuration, we need to override addInterceptors() method inside WebConfig class that implements WebMvcConfigurer:
8+
9+
```
10+
@Configuration
11+
public class AppConfig implements WebMvcConfigurer {
12+
@Override
13+
public void addInterceptors(InterceptorRegistry registry) {
14+
registry.addInterceptor(new OurSuperInterceptor());
15+
}
16+
}
17+
```
18+
19+
## Examples
20+
21+
#### 1. Use predefined interceptor for change language `LocaleChangeInterceptor`
22+
23+
See `/src/main/java/examples/AppConfig.java`
24+
25+
#### 2. Create custom interceptor - LoggerInterceptor
26+
27+
see `/src/main/java/examples/interceptor/LoggerInterceptor.java`
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package examples;
2+
3+
import examples.interceptor.LoggerInterceptor;
4+
import org.springframework.context.annotation.Bean;
5+
import org.springframework.context.annotation.Configuration;
6+
import org.springframework.web.servlet.LocaleResolver;
7+
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
8+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
9+
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
10+
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
11+
12+
import java.util.Locale;
13+
14+
@Configuration
15+
public class AppConfig implements WebMvcConfigurer {
16+
17+
@Bean
18+
public LocaleResolver localeResolver() {
19+
SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
20+
sessionLocaleResolver.setDefaultLocale(Locale.US);
21+
return sessionLocaleResolver;
22+
}
23+
24+
@Bean
25+
public LocaleChangeInterceptor localeChangeInterceptor() {
26+
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
27+
lci.setParamName("lang");
28+
return lci;
29+
}
30+
31+
@Bean
32+
public LoggerInterceptor loggerInterceptor() {
33+
return new LoggerInterceptor();
34+
}
35+
36+
@Override
37+
public void addInterceptors(InterceptorRegistry registry) {
38+
registry.addInterceptor(localeChangeInterceptor());
39+
registry.addInterceptor(loggerInterceptor());
40+
}
41+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package examples;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
6+
@SpringBootApplication
7+
public class Application {
8+
public static void main(String[] args) {
9+
SpringApplication.run(Application.class, args);
10+
}
11+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package examples.controller;
2+
3+
import org.springframework.stereotype.Controller;
4+
import org.springframework.web.bind.annotation.GetMapping;
5+
6+
@Controller
7+
public class HomeController {
8+
9+
@GetMapping({"/", "/home"})
10+
public String main() {
11+
return "home";
12+
}
13+
}

0 commit comments

Comments
 (0)