wisdomisite-java/src/main/java/com/WisdomSiteApplication.java
2023-11-09 13:57:30 +08:00

156 lines
6.1 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}