新建SpringBoot项目:


项目初始配置:
Maven配置:
其中maven配置国内的阿里云的镜像。
启动日志优化:
新建src/main/resources/logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 修改一下路径-->
<property name="PATH" value="./log"></property>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %blue(%-50logger{50}:%-4line) %thread %green(%-18X{LOG_ID}) %msg%n</Pattern>-->
<Pattern>%d{ss.SSS} %highlight(%-5level) %blue(%-30logger{30}:%-4line) %thread %green(%-18X{LOG_ID}) %msg%n</Pattern>
</encoder>
</appender>
<appender name="TRACE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${PATH}/trace.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${PATH}/trace.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<layout>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-18X{LOG_ID}) %msg%n</pattern>
</layout>
</appender>
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${PATH}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${PATH}/error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<layout>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-50logger{50}:%-4line %green(%-18X{LOG_ID}) %msg%n</pattern>
</layout>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<root level="ERROR">
<appender-ref ref="ERROR_FILE" />
</root>
<root level="TRACE">
<appender-ref ref="TRACE_FILE" />
</root>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
主要的优化:1、将日志输出风格做了精简。
2、error级别的日志会生成本地log文件。
3、日志的堆栈信息也写入文件。
修改一下启动类
@SpringBootApplication
public class Application {
private static final Logger LOG = LoggerFactory.getLogger(Application.class);
public static void main(String[] args) {
SpringApplication app = new SpringApplication(Application.class);
Environment env = app.run(args).getEnvironment();
LOG.info("启动成功!!");
LOG.info("地址: \thttp://127.0.0.1:{}", env.getProperty("server.port"));
}
}
然后配置一下服务器的端口号:
spring.application.name=01wiki
server.port=8080
此时再启动,就变得人性化一些了:

开发Hello World接口:
1、Application更换一个名称:WikiApplication
2、新建Controller:
@RestController
public class TestController {
@RequestMapping("/hello")
public String hello() {
return "hello world";
}
}
3、运行:
接下来运行看一下:

4、底层探究:
在这个controller编写中用到了两个注解,下面来进一步了解它们。
@RestController:@Controller和@ResponseBody的组合。
@RequestBody它表示的是用来返回字符串或者JSON对象。
@RequestMapping:
对于一个请求通常来说是分为这四种:GET、POST、PUT、DELETE,此注解表示的是所有方式都支持,如果说只想支持GET请求,则需要这样来写:
@RequestMapping(value = "/hello",method = RequestMethod.GET)
public String hello() {
return "hello world";
}
}
而其它的方式改下method既可,另外还有一种写法,就是不同的注解对应不同的方式,如下:
@GetMapping
@PostMapping
@DeleteMapping
@PutMapping
@RequestMapping(value = "/hello",method = RequestMethod.GET)
public String hello() {
return "hello world";
}
@ComponentScan:
Controller是如何被Spring扫描到的呢?注解内部存在相关的扫码注解:@ComponentScan
接下来做一个实验,来体会一下该注解的用处,就是将Appliation的这个类放到一个新的包名中, 也就是controller不是在WikiApplication所在层级的子包中了,运行再来访问咱们的这个接口,报错了。
原因就是由于默认只会扫码Application同一级的类及子包的类,而要想解决此问题,就需要用到这个注解了,如下:
@ComponentScan("com.hnjt")
@RestController
public class TestController {
@GetMapping
@PostMapping
@DeleteMapping
@PutMapping
@RequestMapping(value = "/hello",method = RequestMethod.GET)
public String hello() {
return "hello world";
}
}
使用HTTP Client测试接口:

测试Post请求:
@RequestMapping("/hello/post")
public String helloPost(String name) {
return "hello world"+ name;
}
配置文件【自定义配置项】:
热部署:
引入依赖包:
在pom.xml添加依赖
<!-- 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
开启静态自动编译:
application.properties
spring.devtools.restart.enabled=true
总结:
Springboot的入门篇主要是环境配置。