官术网_书友最值得收藏!

How it works...

The magic behind this functionality is actually very simple. Let's start from the separate configuration class and work our way to the filter bean detection.

If we look in our main class, BookPubApplication, we will see that it is annotated with @SpringBootApplication, which in turn is a convenience meta-annotation that declares @ComponentScan among others. We discussed this in detail in one of our earlier recipes. The presence of @ComponentScan instructs Spring Boot to detect WebConfiguration as a @Configuration class and add its definitions to the context. So, anything that we will declare in WebConfiguration is as good as if we were to put it right in BookPubApplication itself.

The @BeanpublicRemoteIpFilterremoteIpFilter() {...} declaration simply creates a Spring bean for the RemoteIpFilter class. When Spring Boot detects all the beans of javax.servlet.Filter, it will add them to the filter chain automatically. So, all we have to do, if we want to add more filters, is to just declare them as @Bean configurations. For example, for a more advanced filter configuration, if we want a particular filter to apply only to specific URL patterns, we can create a @Bean configuration of a FilterRegistrationBean type and use it to configure the precise settings.

To make supporting this use-case easier Spring Boot provides us with configuration properties that can be used instead of manually configuring the  RemoteIpFilter bean for occasions when Tomcat servlet container is being used. Use server.use-forward-headers=true to indicate to Spring Boot that it needs to automatically configure support for proxy headers, to provide proper request obfuscation. Specifically for Tomcat, one can also use server.tomcat.remote_ip_header=x-forwarded-for and server.tomcat.protocol_header=x-forwarded-proto properties to configure what specific header names should be used to retrieve the values.
主站蜘蛛池模板: 襄垣县| 通化县| 静宁县| 灵宝市| 乐亭县| 漳州市| 阳西县| 东乌珠穆沁旗| 五台县| 新密市| 巧家县| 阿拉善右旗| 全州县| 印江| 温州市| 沐川县| 清原| 托克托县| 余姚市| 望江县| 宁乡县| 海丰县| 惠安县| 美姑县| 双柏县| 福泉市| 平武县| 深圳市| 青岛市| 长兴县| 乌鲁木齐市| 新晃| 阳西县| 黄山市| 华池县| 邹平县| 夏邑县| 田林县| 偏关县| 花垣县| 易门县|