最近开始研究了下Spring Boot,简单写了个Demo。中途也遇到了一些坑。跟大家分享下。
如果你用了IDEA后,你会发现,Eclipse已经渐渐地要离开自己的怀抱中了。丰富的插件、智能提示、灵活的快捷键、多功能调试......简直是完美,如果非要挑剔,我只能说非社区版是收费版了。
一、环境搭建
Spring Boot 的搭建非常简单。如果想自己纯手动搭建,也不会话费多长时间。以下分享主要是用IDEA搭建。
环境:
- IDEA 官网下载,最好用Ultimate版本收费版,注册码问度娘,一般都是一年的试用期。
- JDK1.7+ 官网下载。 至少1.7版本。
- Maven 官网下载
以图说话:
此处图省略,
最后finish .构建完成后,默认是maven。
启动:
点击一下三角形启动,或者鼠标右键放到类名,执行run操作,或快捷键shift+F10或Ctril+Shift+F10
二、客户端请求Spring Boot
新建个TestController类,写个请求,返回helloworld,编码完成后,启动服务,访问页面http://localhost:8080/hello就会出现hello World
注:
- RestController: 相当于@Controller、@ResponseBody的结合,当然还有写其他标记型注解,即@Target @Retention @Documented
- @Controller: 控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示.@Controller只是定义了一个控制器,而使用@request Mapping注解的方法才是真正处理业务请求的方法。
- @ResquestBody:读取Request请求的body部分的数据,使用系统默认配置HttpMessageConverter进行解析,然后吧响应的数据绑定到要返回的对象上。
- @Target: 首先了说下元注解,即注解的注解。包含@Target @Retention @Documented @Inherited四种。、@Target:定义注解的作用目标。多个用大括号,如 @Target({ElementType.TYPE,ElementType.METHOD})的写法。 // 接口、类、枚举、注解 // 字段、枚举的常量 // 方法 // 方法参数 // 构造函数 // 局部变量 // 注解 // 包
- Retention(RetentionPolicy.RUNTIME):盖住姐会在class字节码文件中存在,在运行时可以通过放射机制获取。直观点,反编译文件能看到该注解。
- @Document:说明该注解将被包含在javadoc中。即说明是属于公共的API文档
- @Inherited:说明子类可以继承父类中的该注解
三、配置文件
一般配置文件,我们都用properties来写,但springBoot1.3后开始推荐使用yaml。后缀名可用yml简写也可以用yaml。yaml可读性强,又上下层次结构,比xml看起来方便。数遍提下,最近公司用yaml写前端模板文件,真的不适合,导致后来直接放弃,个人觉得模板还不如用jade,毕竟有css基础的人都会写。Spring默认加载applicantion.yaml(可以是yml或properties后缀名)。如果配置多环境,可以建立application-XX.yaml文件,但入口还是application.yaml文件,但需要在该文件配置spring.profiles.active = XX。当然还有一种方式,直接全部写到application.yaml文件里。但要
---
spring
这样的格式来区分。
单文件
多个文件
多环境的配置,另外一种配置文件写法如下:
总结:
1.配置文件注意空格
2.@ConfigurationProperties(prefix="girl")注解,IDE会提示Spring Boot Configuration Annotation Procesor not foubnd in classpath的警告,可以在maven的pom.xml添加依赖,具体参考https://docs.spring.io/spring-boot/docs/1.5.8.RELEASE/reference/html/configuration-metadata.html#configuration-metadata-annotation-processor的官方介绍".3 Generating your own meta-data using the annotation processor"
@ConfigurationProperties的类时,就不要在属性上加上@value注解。
<!-- spring-boot-configuration-processor 不影响ConfigurationProperties注解使用 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>