再创建一个DemoController类:
@Controller public class DemoController { @RequestMapping("http://www.likecs.com/") @ResponseBody String home() { return "Hello World! "; } }至此,我们已经完成了框架代码!
热部署
我们在定义项目依赖时添加了springboot-devtools,该模块可以实现热部署的功能,即在开发过程中可以不重启应用令代码生效,非常方便
livereload 组件会定时扫描类路径下的class,一旦发现变更即重启服务,默认1000毫秒检测一次。
在定义依赖时指定optional 选项使得该模块仅在开发时启用。
livereload 在扫描会自动忽略以下范围的变更:
在src/main/resources/下新建一个application.properties文件,内容如下:
application.properties
server.address 监听地址,不配置或0.0.0.0即不限制
server.port 监听端口
此时在IDE执行"DemoBoot",你应该可以看到一些描述程序启动的日志信息,访问本机的8090端口能看到"HelloWorld“输出。
application.properties可包含大量的配置,你可以在这里找到全部的配置
四、日志配置接下来需要为应用准备一个日志配置用于定制,springboot 默认是使用logback的,但由于更加熟悉log4j的缘故,我们选用了log4j2.x
在src/main/resources/下新建一个log4j2.xml文件,内容如下:
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="INFO" monitorInterval="300"> <properties> <property>log</property> <property>application</property> </properties> <Appenders> <Console target="SYSTEM_OUT"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}–[%t] %-5level -%l - %msg%n" /> </Console> <RollingRandomAccessFile fileName="${LOG_ROOT}/${FILE_NAME}.log" filePattern="${LOG_ROOT}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd HH}-%i.log"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}–[%t] %-5level -%l - %msg%n" /> <Policies> <TimeBasedTriggeringPolicy interval="1" /> <SizeBasedTriggeringPolicy size="50 MB" /> </Policies> <DefaultRolloverStrategy max="20" /> </RollingRandomAccessFile> </Appenders> <Loggers> <Logger level="info" additivity="true"> <AppenderRef ref="MainFile" /> </Logger> <Root level="info"> <AppenderRef ref="Console" /> <AppenderRef ref="MainFile" /> </Root> </Loggers> </Configuration>这里配置了两个日志记录方式,Console是控制台打印,RollingRandomAccessFile 指向一个日志文件,我们为该日志文件设定了滚动的规则:
当大小超过50M时会生成新的日志;
每小时生成一个新的日志;
指定了最多存在20个日志文件。
之后,我们为主模块(这里是org.zales,你可以定义自己的包名)和ROOT都分别做了关联和日志级别定义。
关于log4j2的用法,可以参考这个文章
应用最终需要发布到某个环境,那么我们怎么对springboot应用进行打包呢?
利用spring-boot-maven-plugin可以将springboot项目达成jar包。
随后执行java -jar xxx.jar的方式即可以启动应用。
这看起来好像很美好,但真实的项目发布并非这么简单。
首先是配置,springboot的maven插件会将所有配置文件都打进jar包内,而某些配置可能与环境相关。
比如应用端口,安全证书、或是日志配置等,这时我们希望在jar包外部存放这些文件;
其次是执行脚本,在云环境上发布应用,通常需要提供启停脚本,包括一些监控功能脚本,这些需要作为项目打包的一部分
最后,将应用程序发布为tgz或zip格式的压缩包会更加灵活,你可以添加更多的东西。
为实现灵活的打包方式,我们需要同时引用spring-boot-maven-plugin和maven-assembly-plugin两个插件,如下:
pom.xml