springboot
春节在家长了几斤肉,今天开始减肥了(工作了)。19年的第一篇文章,本篇文章将覆盖springboot所有配置(本人实际工作中所遇到问题以及学习总结),后续将会持续更新!话不多说,直接开始。
详细配置
注意:本演示全部基于springboot最新版本,现在是**2.1.2.RELEASE
**,并且所有配置将全部使用yaml格式!
如何配置springboot监听端口?
- 通过application.yml指定。(推荐)
server:
port: 8080
注意:如果使用server.port=0
,将使用一个随机端口,可以控制台查看。
2. 指定jvm参数(启动多个项目调试时推荐使用)
idea中:Edit Configurations -> VM options
运行jar命令: java -Dserver.port=8080 app.jar
3. 运行java -jar
命令时指定
如: java -jar app.jar --server.port=8080
4. 通过代码指定:
@Configuration
public class TomcatConfig {
@Bean
@Autowired
public TomcatWebServerFactoryCustomizer factoryCustomizerAutoConfiguration(Environment environment, ServerProperties serverProperties) {
serverProperties.setPort(8888);
return new TomcatWebServerFactoryCustomizer(environment, serverProperties);
}
}
springboot中如何添加filter
- 继承
Filter
并且将该类作为一个bean加入spring容器,使用@Order
设置filter顺序
@Component
@Order(1000)
public class FirstFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//to do something.
filterChain.doFilter(servletRequest, servletResponse);
}
}
注意!使用这种方式注册的filter将拦截所有请求,无法指定拦截url。
2. 使用FilterRegistrationBean
类手动注册一个filter(推荐)
public class SecondFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//to do something.
System.out.println("SecondFilter.doFilter");
filterChain.doFilter(servletRequest, servletResponse);
}
}
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean<SecondFilter> secondFilterFilterRegistrationBean() {
FilterRegistrationBean<SecondFilter> registrationBean = new FilterRegistrationBean<>();
registrationBean.setFilter(new SecondFilter());
registrationBean.setOrder(10001);
registrationBean.addUrlPatterns("/**");
return registrationBean;
}
}
- 开启
@WebFilter
扫描。
在启动类上加上@ServletComponentScan
注解,定义filter如下:
@WebFilter(filterName = "ThridFilter", urlPatterns = "/**")
@Order(1002)
public class ThridFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
System.out.println("ThridFilter.doFilter");
chain.doFilter(req, resp);
}
}
采坑记录:该方式只在内置web容器下有效(打jar包),如果使用war包,将失效,有兴趣的可以看一看@ServletComponentScan
注解说明。
springboot如何添加servlet
- 同上类似,使用
ServletRegistrationBean
@Bean
public ServletRegistrationBean servletRegistrationBean(){
return new ServletRegistrationBean(new FooServlet