Spring Boot 学习日记(一)

SpringBoot简介

它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。

1.特点

SpringBoot所具备的特征有:
(1)可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
(2)内嵌Tomcat或Jetty等Servlet容器;
(3)提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;
(4)尽可能自动配置Spring容器;
(5)提供准备好的特性,如指标、健康检查和外部化配置;
(6)绝对没有代码生成,不需要XML配置

2.重要策略

SpringBoot框架中还有两个非常重要的策略:开箱即用和约定优于配置。开箱即用,Outofbox,是指在开发过程中,通过在MAVEN项目的pom文件中添加相关依赖包,然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期。这个特点使得开发人员摆脱了复杂的配置工作以及依赖的管理工作,更加专注于业务逻辑。约定优于配置,Convention over configuration,是一种由SpringBoot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。这一特点虽降低了部分灵活性,增加了BUG定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化。
SpringBoot应用系统开发模板的基本架构设计从前端到后台进行说明:前端常使用模板引擎,主要有FreeMarker和Thymeleaf,它们都是用Java语言编写的,渲染模板并输出相应文本,使得界面的设计与应用的逻辑分离,同时前端开发还会使用到Bootstrap、AngularJS、JQuery等;在浏览器的数据传输格式上采用Json,非xml,同时提供RESTfulAPI;SpringMVC框架用于数据到达服务器后处理请求;到数据访问层主要有Hibernate、MyBatis、JPA等持久层框架;数据库常用MySQL;开发工具推荐IntelliJIDEA

3.单体应用与微服务

单体应用是把所有的应用模块都写在一个应用中,导致项目越写越大,模块之间的耦合度也会越来越高。微服务是一种架构风格,用微服务可以将应用的模块单独部署,对不同的模块进行不同的管理操作,不同的模块生成小型服务,每个功能元素最后都可以成为一个可以独立替换、独立升级的功能单元,各个小型服务之间通过http进行通信

4.Spring Boot的核心特点

·微服务

使用Spring Boot可以生成独立的微服务功能单元

·自动配置:

针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置

·起步依赖:

告诉Spring Boot需要什么功能,它就能引入需要的库。

·命令行界面:

这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用

程序,无需传统项目构建。

·Actuator:

让你能够深入运行中的Spring Boot应用程序。

5.简单案例:使用maven创建HelloWorld项目

org.springframework.boot spring-boot-starter-parent 1.5.9.RELEASE Spring Boot的版本仲裁中心;以后我们导入依赖默认是不需要写版本。(没有在dependencies里面管理的依赖自然需要声明版本号) org.springframework.boot spring-boot-starter-web

spring-boot-starter-web:
spring-boot-starter:spring-boot场景启动器。帮我们导入了web模块正常运行所依赖的组件。
Spring Boot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter 相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器

·第二步:新建包结构如下图

在这里插入图片描述
·第三步:编辑相对应的类代码

@RestController//标注是一个Controller类 并且支持json数据格式输出public class HelloController { //通过 http://localhost:8080/sayHello访问该方法 @RequestMapping("/sayHello") public String hello(){ return “hello world”; } }

MainTest.java
@SpringBootApplication//代表springboot的启动类 用来标注主程序类 说明是一个springboot应用public class MainTest { public static void main(String[] args) { //将springboot应用驱动起来 SpringApplication.run(MainTest.class); } }**

6.案例解析—相应的问题

·为什么只配置一个Spring Boot依赖:

在这里插入图片描述
·入口类的@SpringBootApplication注解:
在这里插入图片描述

·AutoConfigurationPackage:

自动扫描问题@ SpringBootApplication标记的主类,在主类所在包或者所在的子包下面找相应的控制类,然后根据相应的注解自动配置相应的项目所需的bean

在这里插入图片描述

7.如何快速新建Spring Boot项目

注意创建Spring Boot时注意网络连接的问题,保持网络畅通。点击New File,选择Project选择Spring Initializr,加载完成后查看相应的JDK版本是否合适,确保后点击next

在这里插入图片描述

设置项目的GroupID和Artifact。选择相应的语言和要生成的jar包或者war包以及JDK版本在这里插入图片描述

勾选创建项目所需要的依赖,比如数据库,web等依赖,这里我们简单的介绍,不做具体的详解,就选择一个web依赖

在这里插入图片描述
选择完毕后,点击finish完成新建项目等待项目新建完成

在这里插入图片描述
创建完毕后,保持创建的结构是这个形式即可。

在这里插入图片描述
创建项目完毕后,根据上面的案例简单的创建一个项目测试一下,测试通过即可。

8.Spring Boot的配置文件

使用Spring Boot配置文件首先需要有JavaBean类,然后才能在相应的配置文件中为javabean中的属性赋值

想要向JavaBean类中赋值,需要在javabean的类中添加相应的注解@Component和@ConfigurationProperties(prefix = “person”)。@Component将类添加进容器,@ConfigurationProperties配置文件中的数据注入到类中

· Dog.java

public class Dog {private String name; private String age;}

· Person.java

/

  • 将配置文件中配置的每一个属性的值,映射到这个组件中
  • @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
  • prefix = “person”:配置文件中哪个下面的所有属性进行一一映射
  • 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
    /

@Component@ConfigurationProperties(prefix = “person”) public class Person { private String name; private Integer age; private Boolean sex; private Date birthday; private List list; private Map<String,Object> map;private Dog dog;}

·配置文件:

配置文件名是固定的 application.properties 或application.yml

·配置文件的作用:

修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好。

·application.properties详解

示例:

#设置端口号为9999 server.port=9999

在application.properties中配置相应的属性之后,重新运行项目,发现服务器的端口启动号变成了9999,证明该段代码可以修改默认的8080端口。
· application.properties

person.age=80 person.birthday=2019/02/5 person.list=a,b,c person.name=旺财 person.sex=false person.map.v1=k1 person.map.v2=k2 person.dog.name=jjj person.dog.age=6

注意:在使用application.properties文件向配置文件可能会出现乱码,注意改变编码格式为UTF-8

·application.yml详解

·1.YAML文件详解

(1) YAML文件定义:

YAML(YAML Ain’t Market Language)语言文件,以数据为中心,比json、XML等文件更加适合做配置文件

(2) YAML文件的基本语法:

  1. 使用缩进表示层级关系

  2. 缩进时不允许使用Tab键,只允许使用空格

  3. 缩进的空格的数目不重要,只要相同层级的元素左对齐即可

  4. 大小写敏感

(3) YAML的值的写法:

  1. k: v:字面直接来写;

  2. 字符串默认不用加上单引号或者双引号;

  3. “”:双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思

  4. name: “zhangsan \n lisi”:输出;zhangsan 换行 lisi

  5. ‘’:单引号;会转义特殊字符,特殊字符终只是一个普通的字符串数据

  6. name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi

(4) YAML支持三种数据格式:对象,数组,基本数据类型

·2.YAML的常用写法示例
· application.xml

person:name: 张三 age: 20 sex: false birthday: 2019/01/11 list: - a - b map: -k1: v1 -k2: v2 -dog: {name: ww,age: 12} dog: name: ww age: 2

相应的配置文件和类编写完毕后,编辑测试类,运行,测试通过。

9.Spring Boot中的特殊注解

这里就讲解几个常用的注解吧,毕竟时间有限,大家可以到网上查一下,具体的注解
@SpringBootApplication注解分析

@SpringBootApplication是一个复合注解,包括@ComponentScan,@SpringBootConfiguration,@EnableAutoConfiguration。

1.@SpringBootConfiguration继承自@Configuration,二者功能也一致,标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到srping容器中,并且实例名就是方法名。

2.@EnableAutoConfiguration的作用启动自动的配置。

3.@EnableAutoConfiguration注解的意思就是Springboot根据你添加的jar包来配置你项目的默认配置,比如根据spring-boot-starter-web,来判断你的项目是否需要添加了webmvc和tomcat,就会自动的帮你配置web项目中所需要的默认配置。在下面博客会具体分析这个注解,快速入门的demo实际没有用到该注解。

4.@ComponentScan,扫描当前包及其子包下被@Component,@Controller,@Service,@Repository注解标记的类并纳入到spring容器中进行管理。是以前的context:component-scan(以前使用在xml中使用的标签,用来扫描包配置的平行支持)。所以本demo中的User为何会被spring容器管理

@ResponseBody

表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,用于构建RESTful的api。在使用@RequestMapping后,返回值通常解析为跳转路径,加上@esponsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@Responsebody后,会直接返回json数据。该注解一般会配合@RequestMapping一起使用

@Controller

用于定义控制器类,在spring项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping

@RestController

用于标注控制层组件(如struts中的action),@ResponseBody和@Controller的合集。

@Service

一般用于修饰service层的组件

@Repository

使用@Repository注解可以确保DAO或者repositories提供异常转译,这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。

@Bean

用@Bean标注方法等价于XML中配置的bean。

@Value

注入Spring boot application.properties配置的属性的值。

//用eclipse建Spring boot项目要装插件

eclipse创建springboot项目的三种方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值