补习系列-springboot项目基础搭建课 (2)

再创建一个DemoController类:

@Controller public class DemoController { @RequestMapping("http://www.likecs.com/") @ResponseBody String home() { return "Hello World! "; } }

至此,我们已经完成了框架代码!

热部署
我们在定义项目依赖时添加了springboot-devtools,该模块可以实现热部署的功能,即在开发过程中可以不重启应用令代码生效,非常方便
livereload 组件会定时扫描类路径下的class,一旦发现变更即重启服务,默认1000毫秒检测一次。
在定义依赖时指定optional 选项使得该模块仅在开发时启用。
livereload 在扫描会自动忽略以下范围的变更:

META-INF/maven/** META-INF/resources/** resources/**,static/** public/** templates/** **/*Test.class **/*Tests.class git.properties META-INF/build-info.properties 三、应用配置

在src/main/resources/下新建一个application.properties文件,内容如下:
application.properties

server.address=0.0.0.0 server.port=8090 参数名称 参数说明
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

<build> <plugins> <!-- build for springboot jar --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <!-- build for application package --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.4</version> <executions> <execution> <id>bundle</id> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <descriptors> <descriptor>${basedir}/src/main/build/assembly.xml</descriptor> </descriptors> </configuration> </execution> </executions> </plugin> </plugins> </build>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyyzxs.html