spring boot
http://www.cnblogs.com/taozhiye/p/6599738.html
1 maven中spring-boot版本同意管理,有parent和dependencyManagement两种方式,
parent有点像extends父类,dependencyManagement有点像implements接口
2spring boot 如何搞一个控制台程序
3 maven里面scop写provided是什么意思
编译的时候要用,但是又不能把把打进war包,因为tomcat里面已经有了
4 打war包的时候要把tomcat包排除掉
5 如果想用jetty,就需要denpendency spring-boot-starter-jetty,然后再排除掉srping-boot-starter-web中的tomcat包
6 生产环境 开发环境 application-dev.yaml application-pro.yaml
7 如何配置热启动
1 加入dependency spring-boot-devtools
2 setting里面 complier -- build project automobitly
3 registery -- complier *** running
8 lombok插件的使用
1 依赖 org.projectlombok lombok
2 下载插件
3 开启注解processor(注解处理器)。。。。
9 日志的定制
在resourse下加入logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- Base logback configuration provided for compatibility with Spring Boot 1.1 --> <configuration> <include resource="org/springframework/boot/logging/logback/defaults.xml" /> <include resource="org/springframework/boot/logging/logback/console-appender.xml" /> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> </encoder> <!--不知怎么老是说G:/hello.log不存在?--> <!--<file>${LOG_FILE:-/G:/hello.log}</file>--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>14</maxHistory> </rollingPolicy> </appender> <!--将日志收集发送到kafka rsyslog的appender--> <root level="INFO"> <appender-ref ref="CONSOLE" /> <appender-ref ref="FILE" /> </root> </configuration> <!--<included>--> <!--<include resource="org/springframework/boot/logging/logback/defaults.xml" />--> <!--<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>--> <!--<include resource="org/springframework/boot/logging/logback/console-appender.xml" />--> <!--<include resource="org/springframework/boot/logging/logback/file-appender.xml" />--> <!--<root level="INFO">--> <!--<appender-ref ref="CONSOLE" />--> <!--<appender-ref ref="FILE" />--> <!--</root>--> <!--</included>-->
10 用注解对Action的参数(也可以对其他地方的参数验证)进行验证
主要用到@Validated 和
@Configuration public class CommonConfig { @Bean public MethodValidationPostProcessor methodValidationPostProcessor(){ return new MethodValidationPostProcessor(); } }
package com.example.hehe; import lombok.extern.slf4j.Slf4j; import org.hibernate.validator.constraints.Email; import org.hibernate.validator.constraints.Range; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.Date; import java.util.LinkedList; @Slf4j @RestController @Validated public class CommonController { @RequestMapping("/test") public String commonAction( @RequestParam(name = "date") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date date ){ log.info("helloWorld"); log.info(date.toString()); CommonProperties.builder().host("127.0.0.1") .port("9090") .username("hzz") .password("xssdsdcsd") .list(new LinkedList<>()) .build(); return date.toString(); } @GetMapping("/restful/{grade}/{name}") public String restAction( @Range(min = 0,max = 9,message = "0-9?") @PathVariable int grade, @PathVariable String name) { log.info("helloWorld"); log.info("the grade is {} and name is {}",grade,name); return name; } @GetMapping("/restEmail") public String restEmail( @Email @RequestParam (name = "email") String email, @javax.validation.constraints.Pattern(regexp = "[A-Za-z0-9_\\-\\u4e00-\\u9fa5]+",message = "password too simple") @RequestParam (name = "password") String password ) { log.info("helloWorld"); log.info("the email is {} ",email); return email; } @PostMapping(value = "/rest2",consumes = MediaType.APPLICATION_JSON_VALUE,produces = MediaType.APPLICATION_JSON_VALUE) public String rest2(){ return "hello rest2"; } }
常见的MVC注解
@CookieValue//从cookie拿值
@RequestHeader//从请求头中拿到值
@MatrixValue
@CrossOrange//跨域
数据库连接池