springboot之零碎小知识
1.springboot启动类加载yml配置项
主要是如下方法,读取了yml的配置项,赋值为类成员属性
@Autowired
public void setEnvironment(Environment environment) {
host = environment.getProperty("server.port");
}
package com.shy; import com.shy.iot.facerecognition2.tcp.Server; import com.shy.iot.netty.server.NettyServer; import org.apache.catalina.Context; import org.apache.catalina.connector.Connector; import org.apache.tomcat.util.descriptor.web.SecurityCollection; import org.apache.tomcat.util.descriptor.web.SecurityConstraint; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.core.env.Environment; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @SpringBootApplication @EnableCaching @EnableWebMvc @MapperScan("com.shy.iot.*.dao") public class CentralPlatformApp extends WebMvcConfigurerAdapter { String host; public static void main(String[] args) throws InterruptedException { ConfigurableApplicationContext ctx = SpringApplication.run(CentralPlatformApp.class, args); String flag = ctx.getEnvironment().getProperty("netty.isStart"); if ("start".equals(flag)) {//判断当前项目启动是否要启动智能家居模块 NettyServer nettyServer = (NettyServer) ctx.getBean("nettyServer"); nettyServer.start(); } Server bean = ctx.getBean(Server.class); bean.run(); } @Autowired public void setEnvironment(Environment environment) { host = environment.getProperty("server.port"); } /** * it's for set http url auto change to https */ @Bean public TomcatEmbeddedServletContainerFactory servletContainer() { TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() { @Override protected void postProcessContext(Context context) { SecurityConstraint securityConstraint = new SecurityConstraint(); securityConstraint.setUserConstraint("CONFIDENTIAL");//confidential SecurityCollection collection = new SecurityCollection(); collection.addPattern("/*"); securityConstraint.addCollection(collection); context.addConstraint(securityConstraint); } }; tomcat.addAdditionalTomcatConnectors(httpConnector()); return tomcat; } @Bean public Connector httpConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(9000); connector.setSecure(true); connector.setRedirectPort(Integer.parseInt(host)); return connector; } }