本文共 5960 字,大约阅读时间需要 19 分钟。
目录
目录创建于2017-12-18
安装SDKMAN
curl -s get.sdkman.io | bash
source "/Users/{yourname}/.sdkman/bin/sdkman-init.sh"
根据实际目录去运行注意:所有Controller
类要和*Application
类 同包或子包*
将应用配置外置并注入成bean
配置文件 application.yml
spring: profiles: active: development # 选用开发模式 --- spring: profiles: development //一系列配置 --- spring: profiles: production //一系列配置
application-{profile}.yml
application-{profile}.properties
application-dev.properties
和 application-prod.properties
application.yml
中指明spring: profiles: active: dev或者是prod
第一种直接上传到应用的webroot或者resources目录下,第二种上传到数据库中,第三种使用ftp。
@Beanpublic MultipartConfigElement multipartConfigElement() { MultipartConfigFactory factory = new MultipartConfigFactory(); //单个文件最大 factory.setMaxFileSize("80MB"); //KB,MB // 设置总上传数据总大小 factory.setMaxRequestSize("102400KB"); return factory.createMultipartConfig();}
@Configurationpublic class MvcConfig extends WebMvcConfigurerAdapter { @Bean public EmbeddedServletContainerCustomizer containerCustomizer() { return (container -> { ErrorPage error401Page = new ErrorPage(HttpStatus.FORBIDDEN, "/403.html"); ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/404.html"); ErrorPage error500Page = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/500.html"); container.addErrorPages(error401Page, error404Page, error500Page); }); }}
不同的域名(主机)端口都会导致跨域问题
@Configurationpublic class CorsConfig { private CorsConfiguration buildConfig() { CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedOrigin("*"); // 允许任何域名使用 corsConfiguration.addAllowedHeader("*"); // 允许任何头 corsConfiguration.addAllowedMethod("*"); // 允许任何方法(post、get等) return corsConfiguration; } @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", buildConfig()); // 4 return new CorsFilter(source); }}
keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650
server: context-path: /myth ssl: key-store: classpath:keystore.p12 key-store-password: demo1429336 key-store-type: PKCS12 key-alias: tomcat port: 8888 session: timeout: 3000
任意的一个@Configuration注解类里添加
@Beanpublic TomcatEmbeddedServletContainerFactory servletContainerFactory() { TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory() { @Override protected void postProcessContext(Context context) { //SecurityConstraint必须存在,可以通过其为不同的URL设置不同的重定向策略。 SecurityConstraint securityConstraint = new SecurityConstraint(); securityConstraint.setUserConstraint("CONFIDENTIAL"); SecurityCollection collection = new SecurityCollection(); collection.addPattern("/*"); securityConstraint.addCollection(collection); context.addConstraint(securityConstraint); } }; factory.addAdditionalTomcatConnectors(createHttpConnector()); return factory;}private Connector createHttpConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setSecure(false); connector.setPort(8887);//http端口(这是要新增加的一个端口) connector.setRedirectPort(8888);// https 端口配置文件中tomcat启动的默认端口 return connector;}
方式不一样,没有成功
############ 证书颁发机构# CA机构私钥openssl genrsa -out ca.key 2048# CA证书openssl req -x509 -new -key ca.key -out ca.crt############ 服务端# 生成服务端私钥openssl genrsa -out server.key 2048# 生成服务端证书请求文件openssl req -new -key server.key -out server.csr# 使用CA证书生成服务端证书 关于sha256,默认使用的是sha1,在新版本的chrome中会被认为是不安全的,因为使用了过时的加密算法。openssl x509 -req -sha256 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out server.crt # 打包服务端的资料为pkcs12格式(非必要,只是换一种格式存储上一步生成的证书) 生成过程中,需要创建访问密码,请记录下来。openssl pkcs12 -export -in server.crt -inkey server.key -out server.pkcs12# 生成服务端的keystore(.jks文件, 非必要,Java程序通常使用该格式的证书) 生成过程中,需要创建访问密码,请记录下来。keytool -importkeystore -srckeystore server.pkcs12 -destkeystore server.jks -srcstoretype pkcs12# 把ca证书放到keystore中(非必要)keytool -importcert -keystore server.jks -file ca.crt
public class ServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(DemoApplication.class); } }
mvn war
即可 mvn package -DskipTestsgradle war
然后 gradle bootRepackage
即可mvn package
即可生成可执行的jargradle jar
然后 gradle bootRepackage
也生成可执行jar方便监控应用状态,cpu 内存 流量
FROM frolvlad/alpine-oraclejdk8:slimADD weixin-1.0.0.war app.warENTRYPOINT ["java","-jar","/app.war"]
build.gradle
apply plugin: 'docker'task buildDocker(type: Docker, dependsOn: build) { push = true applicationName = jar.baseName dockerfile = file('src/main/docker/Dockerfile') doFirst { copy { from war into stageDir } }}
Dockerfile
FROM frolvlad/alpine-oraclejdk8:slimVOLUME /tmpADD weixin-1.0.0.war app.warENTRYPOINT ["java","-jar","/app.war"]
转载地址:http://kjjio.baihongyu.com/