156 lines
6.1 KiB
Java
156 lines
6.1 KiB
Java
package com;
|
||
|
||
|
||
import cn.xuyanwu.spring.file.storage.EnableFileStorage;
|
||
import org.apache.catalina.connector.Connector;
|
||
import org.mybatis.spring.annotation.MapperScan;
|
||
import org.springframework.beans.factory.annotation.Value;
|
||
import org.springframework.boot.SpringApplication;
|
||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
|
||
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
|
||
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
|
||
import org.springframework.context.annotation.Bean;
|
||
import org.springframework.context.annotation.PropertySource;
|
||
import org.springframework.scheduling.annotation.EnableAsync;
|
||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||
import org.springframework.security.web.firewall.HttpFirewall;
|
||
import org.springframework.security.web.firewall.StrictHttpFirewall;
|
||
import springfox.documentation.swagger2.annotations.EnableSwagger2;
|
||
|
||
/**
|
||
* @program: itbgpproject
|
||
* @description:
|
||
* @author: Mr.Peng
|
||
* @create: 2020-08-03 14:50
|
||
**/
|
||
@MapperScan({"com.zhgd.*.*.*.mapper", "com.zhwl.*.*.*.mapper"})
|
||
@EnableAsync //开启异步调用
|
||
@EnableScheduling
|
||
@EnableFileStorage
|
||
//@EnableConfigurationProperties(FileServerProperties.class)
|
||
//@EnableConfigurationProperties({FileStorageProperties.class})
|
||
@PropertySource(value = "classpath:application.properties", encoding = "utf-8")
|
||
@SpringBootApplication
|
||
public class WisdomSiteApplication extends SpringBootServletInitializer {
|
||
|
||
public static void main(String[] args) {
|
||
SpringApplication.run(WisdomSiteApplication.class, args);
|
||
}
|
||
|
||
/**
|
||
* 项目打成war包部署到外部tomcat运行时需要运行放开
|
||
* 本地运行或打jar包注释掉
|
||
*/
|
||
/*@Override
|
||
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
|
||
return builder.sources(WisdomSiteApplication.class);
|
||
}*/
|
||
|
||
@Value("${http.port}")
|
||
Integer httpPort;
|
||
|
||
//正常启用的https端口 如443
|
||
@Value("${server.port}")
|
||
Integer httpsPort;
|
||
|
||
/*// 如果没有使用默认值80
|
||
@Value("${http.port}")
|
||
Integer httpPort;
|
||
|
||
|
||
|
||
|
||
@Bean
|
||
public TomcatServletWebServerFactory servletContainer() {
|
||
|
||
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
|
||
|
||
@Override
|
||
protected void postProcessContext(Context context) {
|
||
|
||
SecurityConstraint securityConstraint = new SecurityConstraint();
|
||
securityConstraint.setUserConstraint("CONFIDENTIAL");
|
||
SecurityCollection collection = new SecurityCollection();
|
||
collection.addPattern("/*");
|
||
securityConstraint.addCollection(collection);
|
||
context.addConstraint(securityConstraint);
|
||
}
|
||
|
||
};
|
||
tomcat.addAdditionalTomcatConnectors(initiateHttpConnector());
|
||
return tomcat;
|
||
}
|
||
|
||
private Connector initiateHttpConnector() {
|
||
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
|
||
connector.setScheme("http");
|
||
connector.setPort(httpPort);
|
||
connector.setSecure(false);
|
||
connector.setRedirectPort(httpsPort);
|
||
return connector;
|
||
}*/
|
||
|
||
// 这是spring boot 2.0.X版本的 添加这个,上一个就不用添加了
|
||
@Bean
|
||
public ServletWebServerFactory servletContainer() {
|
||
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
|
||
tomcat.addAdditionalTomcatConnectors(createStandardConnector()); // 添加http
|
||
return tomcat;
|
||
}
|
||
|
||
/* --------------------请按照自己spring boot版本选择 end--------------------- */
|
||
|
||
|
||
// 配置http
|
||
private Connector createStandardConnector() {
|
||
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
|
||
connector.setPort(httpPort);
|
||
return connector;
|
||
}
|
||
|
||
/*@Bean
|
||
public WebMvcConfigurerAdapter webMvcConfigurerAdapter(){
|
||
WebMvcConfigurerAdapter webMvcConfigurerAdapter = new WebMvcConfigurerAdapter() {
|
||
@Override
|
||
public void addViewControllers(ViewControllerRegistry registry) {
|
||
registry.addViewController("/document/").setViewName("forward:/document/index.html");
|
||
registry.addViewController("/").setViewName("forward:/index.html");
|
||
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
|
||
super.addViewControllers(registry);
|
||
}
|
||
};
|
||
return webMvcConfigurerAdapter;
|
||
}*/
|
||
|
||
/**
|
||
* 采用Undertow作为服务器。
|
||
* Undertow是一个用java编写的、灵活的、高性能的Web服务器,提供基于NIO的阻塞和非阻塞API,特点:
|
||
* 非常轻量级,Undertow核心瓶子在1Mb以下。它在运行时也是轻量级的,有一个简单的嵌入式服务器使用少于4Mb的堆空间。
|
||
* 支持HTTP升级,允许多个协议通过HTTP端口进行多路复用。
|
||
* 提供对Web套接字的全面支持,包括JSR-356支持。
|
||
* 提供对Servlet 3.1的支持,包括对嵌入式servlet的支持。还可以在同一部署中混合Servlet和本机Undertow非阻塞处理程序。
|
||
* 可以嵌入在应用程序中或独立运行,只需几行代码。
|
||
* 通过将处理程序链接在一起来配置Undertow服务器。它可以对各种功能进行配置,方便灵活。
|
||
*/
|
||
/*@Bean
|
||
public ServletWebServerFactory undertowFactory() {
|
||
UndertowServletWebServerFactory undertowFactory = new UndertowServletWebServerFactory();
|
||
undertowFactory.addBuilderCustomizers((Undertow.Builder builder) -> {
|
||
builder.addHttpListener(httpPort, "0.0.0.0");
|
||
// 开启HTTP2
|
||
builder.setServerOption(UndertowOptions.ENABLE_HTTP2, true);
|
||
});
|
||
return undertowFactory;
|
||
}*/
|
||
|
||
@Bean
|
||
public HttpFirewall allowUrlEncodedSlashHttpFirewall() {
|
||
StrictHttpFirewall firewall = new StrictHttpFirewall();
|
||
firewall.setAllowUrlEncodedSlash(true);
|
||
return firewall;
|
||
}
|
||
|
||
}
|