JAVA-86: spring-boot-add-filter
This commit is contained in:
parent
7b7f988f88
commit
b19dbb9c20
@ -9,3 +9,4 @@ This module contains articles about Spring Boot customization
|
|||||||
- [Create a Custom FailureAnalyzer with Spring Boot](https://www.baeldung.com/spring-boot-failure-analyzer)
|
- [Create a Custom FailureAnalyzer with Spring Boot](https://www.baeldung.com/spring-boot-failure-analyzer)
|
||||||
- [Spring Boot: Customize Whitelabel Error Page](https://www.baeldung.com/spring-boot-custom-error-page)
|
- [Spring Boot: Customize Whitelabel Error Page](https://www.baeldung.com/spring-boot-custom-error-page)
|
||||||
- [Spring Boot: Configuring a Main Class](https://www.baeldung.com/spring-boot-main-class)
|
- [Spring Boot: Configuring a Main Class](https://www.baeldung.com/spring-boot-main-class)
|
||||||
|
- [How to Define a Spring Boot Filter?](https://www.baeldung.com/spring-boot-add-filter)
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
package com.baeldung.bootcustomfilters;
|
||||||
|
|
||||||
|
import com.baeldung.bootcustomfilters.filters.RequestResponseLoggingFilter;
|
||||||
|
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
public class FilterConfig {
|
||||||
|
|
||||||
|
// uncomment this and comment the @Component in the filter class definition to register only for a url pattern
|
||||||
|
// @Bean
|
||||||
|
public FilterRegistrationBean<RequestResponseLoggingFilter> loggingFilter() {
|
||||||
|
FilterRegistrationBean<RequestResponseLoggingFilter> registrationBean = new FilterRegistrationBean<>();
|
||||||
|
|
||||||
|
registrationBean.setFilter(new RequestResponseLoggingFilter());
|
||||||
|
|
||||||
|
registrationBean.addUrlPatterns("/users/*");
|
||||||
|
|
||||||
|
return registrationBean;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
package com.baeldung.bootcustomfilters;
|
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Boot application
|
||||||
|
* @author hemant
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@SpringBootApplication
|
||||||
|
public class SpringBootFiltersApplication {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SpringApplication.run(SpringBootFiltersApplication.class, args);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package com.baeldung.bootcustomfilters.controller;
|
||||||
|
|
||||||
|
import com.baeldung.bootcustomfilters.model.User;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rest controller for User
|
||||||
|
* @author hemant
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/users")
|
||||||
|
public class UserController {
|
||||||
|
|
||||||
|
private static final Logger LOG = LoggerFactory.getLogger(UserController.class);
|
||||||
|
|
||||||
|
@GetMapping("")
|
||||||
|
public List<User> getAllUsers() {
|
||||||
|
LOG.info("Fetching all the users");
|
||||||
|
return Arrays.asList(
|
||||||
|
new User(UUID.randomUUID().toString(), "User1", "user1@test.com"),
|
||||||
|
new User(UUID.randomUUID().toString(), "User1", "user1@test.com"),
|
||||||
|
new User(UUID.randomUUID().toString(), "User1", "user1@test.com"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
package com.baeldung.bootcustomfilters.filters;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.core.annotation.Order;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.servlet.*;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A servlet filter to log request and response
|
||||||
|
* The logging implementation is pretty native and for demonstration only
|
||||||
|
* @author hemant
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@Order(2)
|
||||||
|
public class RequestResponseLoggingFilter implements Filter {
|
||||||
|
|
||||||
|
private final static Logger LOG = LoggerFactory.getLogger(RequestResponseLoggingFilter.class);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(final FilterConfig filterConfig) throws ServletException {
|
||||||
|
LOG.info("Initializing filter :{}", this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain)
|
||||||
|
throws IOException, ServletException {
|
||||||
|
HttpServletRequest req = (HttpServletRequest) request;
|
||||||
|
HttpServletResponse res = (HttpServletResponse) response;
|
||||||
|
LOG.info("Logging Request {} : {}", req.getMethod(), req.getRequestURI());
|
||||||
|
chain.doFilter(request, response);
|
||||||
|
LOG.info("Logging Response :{}", res.getContentType());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void destroy() {
|
||||||
|
LOG.warn("Destructing filter :{}", this);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,41 @@
|
|||||||
|
package com.baeldung.bootcustomfilters.filters;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.core.annotation.Order;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.servlet.*;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A filter to create transaction before and commit it once request completes
|
||||||
|
* The current implemenatation is just for demo
|
||||||
|
* @author hemant
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@Order(1)
|
||||||
|
public class TransactionFilter implements Filter {
|
||||||
|
|
||||||
|
private final static Logger LOG = LoggerFactory.getLogger(TransactionFilter.class);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(final FilterConfig filterConfig) throws ServletException {
|
||||||
|
LOG.info("Initializing filter :{}", this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException {
|
||||||
|
HttpServletRequest req = (HttpServletRequest) request;
|
||||||
|
LOG.info("Starting Transaction for req :{}", req.getRequestURI());
|
||||||
|
chain.doFilter(request, response);
|
||||||
|
LOG.info("Committing Transaction for req :{}", req.getRequestURI());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void destroy() {
|
||||||
|
LOG.warn("Destructing filter :{}", this);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,45 @@
|
|||||||
|
package com.baeldung.bootcustomfilters.model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* User model
|
||||||
|
* @author hemant
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class User {
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
private String name;
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
public User(String id, String name, String email) {
|
||||||
|
super();
|
||||||
|
this.id = id;
|
||||||
|
this.name = name;
|
||||||
|
this.email = email;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEmail() {
|
||||||
|
return email;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEmail(String email) {
|
||||||
|
this.email = email;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user