wisdomisite-java/src/main/java/com/WisdomSiteApplication.java

156 lines
6.1 KiB
Java
Raw Normal View History

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
**/
@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);
}
/**
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;
}
}