2023-02-16 15:28:15 +08:00
|
|
|
|
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
|
|
|
|
|
|
**/
|
2023-10-16 15:07:51 +08:00
|
|
|
|
@MapperScan({"com.zhgd.*.*.*.mapper", "com.zhwl.*.*.*.mapper"})
|
2023-02-16 15:28:15 +08:00
|
|
|
|
@EnableAsync //开启异步调用
|
|
|
|
|
|
@EnableScheduling
|
|
|
|
|
|
@EnableFileStorage
|
|
|
|
|
|
//@EnableConfigurationProperties(FileServerProperties.class)
|
|
|
|
|
|
//@EnableConfigurationProperties({FileStorageProperties.class})
|
2023-10-16 15:07:51 +08:00
|
|
|
|
@PropertySource(value = "classpath:application.properties", encoding = "utf-8")
|
2023-02-16 15:28:15 +08:00
|
|
|
|
@SpringBootApplication
|
|
|
|
|
|
public class WisdomSiteApplication extends SpringBootServletInitializer {
|
|
|
|
|
|
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
|
SpringApplication.run(WisdomSiteApplication.class, args);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
2023-07-27 16:16:49 +08:00
|
|
|
|
* 项目打成war包部署到外部tomcat运行时需要运行放开
|
|
|
|
|
|
* 本地运行或打jar包注释掉
|
2023-02-16 15:28:15 +08:00
|
|
|
|
*/
|
|
|
|
|
|
/*@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;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|