1. SpringBoot

产生原因

  • spring, springmvc框架使用上的一些缺点:

  • 需要使用的大量的配置文件

  • 还需要配置各种对象

  • 需要把使用的对象放入到spring容器中才能使用对象

  • 需要了解其他框架配置规则


  • springboot的一些直观优点:

  • SpringBoot就相当于简化了配置文件的Spring+SpringMVC(但springboot的核心还是IOC容器)

  • 常用的框架和第三方库都已经配置好了, 只需要引入使用即可

特点

  • Create stand-alone Spring applications
可以创建spring应用
  • Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)
内嵌的tomcat, jetty, Undertow
  • Provide opinionated 'starter' dependencies to simplify your build configuration
提供了starter起步依赖, 简化应用的配置:
比如使用MyBatis框架, 需要在Spring项目中, 需要配置MyBatis的对象, SqlSessionFactory以及Dao的代理对象
但在SpringBoot项目中, 只要在pom.xml里面加入一个mybatis-spring-boot-starter依赖
  • Automatically configure Spring and 3rd party libraries whenever possible
尽可能去自动配置spring和第三方库, 叫做自动配置(就是把spring中的,第三方库中的对象都创建好,放到容器中,开发人员可以直接使用)
  • Provide production-ready features such as metrics, health checks, and externalized configuration
提供了健康检查, 统计, 外部化配置
  • Absolutely no code generation and no requirement for XML configuration
不用生成代码,不需要使用xml文件做配置

2. SpringBoot项目

地址

@SpringBootApplication注解

  • 位于项目启动类上面,是复合注解, 包含以下注解
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
  • 而@SpringBootConfiguration又是包含@Configuration的符合注解
@Configuration
public @interface SpringBootConfiguration {
@AliasFor(
annotation = Configuration.class
)
boolean proxyBeanMethods() default true;
} //说明使用了@SpringBootConfiguration注解标注的类,可以作为配置文件使用的,可以使用Bean声明对象,注入到容器
  • @EnableAutoConfiguration
启用自动配置,把java对象配置好,注入到spring容器中。例如可以把mybatis的对象创建好,放入到容器中
  • @ComponentScan
扫描器,找到注解,根据注解的功能创建对象,给属性赋值等等。默认扫描的包:@ComponentScan所在的类,以及其所在类所在的包和子包。

SpringBoot的配置文件

  • 名称:application
  • 后缀:property(key=value) 或 yml(key:value)
  • 配置文件示例:
  • 例1:application.properties设置端口和上下文
#设置端口号
server.port=9090 #设置访问应用上下文路径,contextpath
server.servlet.context-path=/myboot
  • 例2:application.yml,配置文件的结构更加清晰,推荐使用
server:
port: 9090
servlet:
context-path:/myboot

多环境配置文件

  • 实际场景中,项目的配置会有开发环境,测试环境,上线的环境

  • 每个环境有不同的配置信息,例如端口,上下文,数据库url,用户名,密码等等

  • 使用多环境配置文件,可以方便的切换不同的配置

  • 使用方式:创建多个配置文件,名称规则:application-环境名称.properties(或者后缀未yml格式)

  • 多环境配置文件的示例如下:

  • 创建开发环境的配置文件:application-dev.properties(或者application-dev.yml )

  • 创建测试者使用的配置:application-test.properties

  • springboot默认读取application.properties文件,故需在该文件中配置实际需要读取的核心配置文件

#以激活配置文件 application-dev.properties为例
spring.profiles.active=dev

@ConfigurationProperties

  • 设计思想:把配置文件的数据映射到java对象的属性上,将配置文件中某些开头和prefix指定的值相同的对应配置文件中的值赋给对应属性
  • 例如:application.properties
#自定义key=value
school.name=橘子
school.website=www.test.com
school.address=黑龙江哈尔滨
  • 则对应的实体类应该如下,其中name会被注入配置文件中的school.name的值,其他属性类似
@Component
@ConfigurationProperties(prefix = "school")
public class SchoolInfo { private String name; private String website; private String address; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getWebsite() {
return website;
} public void setWebsite(String website) {
this.website = website;
} public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
} @Override
public String toString() {
return "SchoolInfo{" +
"name='" + name + '\'' +
", website='" + website + '\'' +
", address='" + address + '\'' +
'}';
}
}

使用jsp

  • SpringBoot不推荐使用jsp, 而是使用模板技术代替jsp
  • 如果要使用jsp, 需要添加如下依赖,负责编译jsp文件
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
  • 如果需要使用servlet, jsp, jstl的功能, 需要添加如下依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency> <dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency> <dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
</dependency>
  • 创建一个存放jsp的目录, 一般为src/main/webapp目录,记得设置webapp的目录属性
  • 需要在pom.xml指定jsp文件编译后的存放目录:META-INF/resources
<resource>
<directory>src/main/webapp</directory>
<targetPath>META-INF/resources</targetPath>
<includes>
<include>**/*.*</include>
</includes>
</resource>
  • 创建Controller, 访问jsp
  • 在application.propertis文件中配置视图解析器
#配置视图解析器
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp

手动使用SpringBoot容器获取对象

  • 关注SpringBoot工程的主启动类的run方法
@SpringBootApplication
public class Application { public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
  • 关注上述run方法的返回值
public static ConfigurableApplicationContext run(Class<?> primarySource, String... args) {
return run(new Class[]{primarySource}, args);
}
  • 而ConfigurableApplicationContext是ApplicationContext的子接口
public interface ConfigurableApplicationContext extends ApplicationContext, Lifecycle, Closeable {
}
  • 所以接收SpringBoot主启动类的run方法的返回值就可以获取到SpringBoot容器
  • 之后便可以按照需求调用SpringBoot容器的方法获取已经注册到容器中的对象

CommandLineRunner接口 与 ApplcationRunner接口

  • 两个接口
@FunctionalInterface
public interface CommandLineRunner {
void run(String... args) throws Exception;
} @FunctionalInterface
public interface ApplicationRunner {
void run(ApplicationArguments args) throws Exception;
}
  • 两个接口都有一个run方法
  • SpringBoot项目的主启动类实现上述接口,重写run方法,在容器对象创建好后自动执行run()方法
  • 可以在容器对象创建好后完成一些自定义的操作

SpringBoot 02: 初识SpringBoot的更多相关文章

  1. springboot(一).初识springboot以及基本项目搭建

    初识springboot 以及基本项目搭建 由于新的项目需要搭建后台框架,之前的springmvc架构也使用多次,在我印象中springboot的微服务架构更轻量级更容易搭建,所以想去试试spring ...

  2. SpringBoot:初识SpringBoot

    西部开源-秦疆老师:基于SpringBoot 2.1.6 的博客教程 秦老师交流Q群号: 664386224 未授权禁止转载!编辑不易 , 转发请注明出处!防君子不防小人,共勉! 1.SpringBo ...

  3. 初识springboot(傻瓜式教程)

    初识springboot(傻瓜式教程) 项目所需的版本 IDEA 2018 maven 3.x jdk-1.8 IDEA创建spring-boot项目(maven方法) 1.创建一个maven工程 点 ...

  4. springboot情操陶冶-初识springboot

    前言:springboot由于其轻便和去配置化等的特性已经被广泛应用,基于时代潮流以及不被鄙视,笔者于是开辟此篇开始认识springboot 前话 springboot是基于spring而开发的轻量级 ...

  5. [01] 初识SpringBoot:Hello World

    引用百科的一句话来说,SpringBoot是一款全新框架,设计目的是为了简化新Spring应用的初始搭建以及开发过程. 怎么讲呢,首先要明确的就是SpringBoot不是替代Spring的一种解决方案 ...

  6. SpringBoot基础系列-SpringBoot配置

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9990680.html SpringBoot基础系列-SpringBoot配置 概述 属性 ...

  7. SpringBoot:4.SpringBoot整合Mybatis实现数据库访问

    在公司项目开发中,使用Mybatis居多.在 SpringBoot:3.SpringBoot使用Spring-data-jpa实现数据库访问 中,这种jpa风格的把sql语句和java代码放到一起,总 ...

  8. SpringBoot(19)---SpringBoot整合Apollo

    SpringBoot(19)---SpringBoot整合Apollo 有关Apollo之前已经写了两篇文章: 1.[Apollo](1)--- Apollo入门介绍篇 2.[Apollo](2)-- ...

  9. SpringBoot | 1.1 SpringBoot简介

    前言 本博客仅为记录与总结SpringBoot的学习笔记,资料来源: 书籍<深入浅出SpringBoot>第三版 B站尚硅谷<雷丰阳2021版SpringBoot2零基础入门> ...

随机推荐

  1. 【manim】3b1b的"Almost" Fourier Transform复刻

    最近在做Fourier Transform的内容,记录一下今天下午的成果. 本文代码全部自行编写,需要math and music项目完整工程可以在gayhub上获取.(现在还没弄完,就先不发了.) ...

  2. Python入门系列(四)别再傻傻分不清:列表、元组、字典、集合的区别

    总结分析列表.元组.字典.集合的相同与区别之处,只有彻底分清之后,就会在应用的时候,得心应手. 四句话总结 列表是一个有序且可更改的集合,允许重复成员. 元组是一个有序且不可更改的集合,允许重复成员. ...

  3. C#使用Spire.Pdf包对PDF文档进行数字签名

    背景 对PDF文档进行数字签名的需求 对PDF文档添加水印的需求 网上资料版本不一或不全 本文章提到的Spire.Pdf均是使用的Spire.Pdf for .NET,除此之前还有其他语言的版本,如S ...

  4. Java代码自动计算机

    答案(这里面包括main方法不要写重了),copy即可使用: public static void main(String[] args) { while (true){ System.out.pri ...

  5. C++中的STL大法整理

    C++中的STL大法整理 由于碰到了一些不知道怎么用的STL vector vector是数组的STL,对于普通数组的优势就在于,可以动态地变化数组长度.那么面对一些数据范围非常大而又可以边读入边处理 ...

  6. 大促活动如何抵御大流量 DDoS 攻击?

    每一次活动大促带来的迅猛流量,对技术人而言都是一次严峻考验.如果在活动期间遭受黑产恶意DDoS攻击,无疑是雪上加霜.电商的特性是业务常态下通常不会遭受大流量DDoS攻击,且对延迟敏感,因此只需要在活动 ...

  7. Python工具箱系列(四)

    上期描述了如何在Windows下安装官方的Python3.8,本期描述如何安装Anaconda.建立Python环境这个话题,为何要大费周章.不厌其烦的叙述呢,主要的原因是: 所有的语言在设计时,都假 ...

  8. Python数据科学手册-Pandas:合并数据集

    将不同的数据源进行合并 , 类似数据库 join merge . 工具函数 concat / append pd.concat() 简易合并 合并高维数据 默认按行合并. axis=0 ,试试 axi ...

  9. 我眼中的大数据(二)——HDFS

    Hadoop的第一个产品是HDFS,可以说分布式文件存储是分布式计算的基础,也可见分布式文件存储的重要性.如果我们将大数据计算比作烹饪,那么数据就是食材,而Hadoop分布式文件系统HDFS就是烧菜的 ...

  10. Beats:为 Beats => Logstash => Elasticsearch 架构创建 template 及 Dashboard

    文章转载自:https://elasticstack.blog.csdn.net/article/details/115341977 前一段时间有一个开发者私信我说自己的 Beats 连接到 Logs ...