SpringBoot 入门

FirstSpringBoot

1.SpringBoot简介

简化Spring应用开发的一个框架
整个Spring技术桟的整合;
j2ee开发的一站式解决方案

2.微服务

  • 微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。
    2014,Martin fowler提出的一种架构风格。 一个应用应该是一组小型服务,通过HTTP的方式进行互通。

    每一个功能最终都是可独立替换和独立升级的软件单元。

微服务文档博客

  • 单体应用:ALL IN ONE

下图展示单体应用和微服务的比较:
img

3.第一个SpringBoot

实现一个功能:浏览器发送一个请求,服务器接收请求并处理,响应HelloWorld字符串。

在IDEA中创建一个spring Initializr的web项目,会自动生成一个Application

/**
 * @SpringBootApplication 用来标注主程序,说明是一个springboot应用
 *
 */
@SpringBootApplication
public class SpringbootHelloworldApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootHelloworldApplication.class, args);
    }
}

然后创建控制层中写一个Hellocontroller类。

@RestController
public class Hellocontroller {

    @RequestMapping("/hello")
    public String hello() {
        return "Hello world!";
    }
}

这样一个最小的应用就创建出来了。感觉url的配置和Python的flask创建很像。最后访问localhost:8080/hello这里写图片描述

4.目录结构

resources的目录结构
static:保存所有静态资源包括css,js,img
templates: 保存所有的模板页面(SpringBoot默认jar包使用嵌入式的Tomcat,默认不支持jsp),可以使用模板引擎(freemarker,thymeleaf)
applacation.properties: SpringBoot默认配置文件,可以修改一些默认配置
这里写图片描述

5.部署

将应用打包成jar包,直接使用java -jar方法即可。
这里写图片描述

6.HelloWorld 探究

1.pom文件

  • 父项目
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.13.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

2.启动器

  • spring-boot-starter-web
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

spring-boot-starter : spring-boot 场景启动器;导入了web模块正常运行所依赖的组件

springboot将所有功能场景抽取出来,做成一个个starters(启动器),只需要在项目中引入这些starters相关场景的所有依赖都会导入进来,要用什么功能就导入什么场景的启动器

3.主程序类,主入口类

/**
 * @SpringBootApplication 用来标注主程序,说明是一个springboot应用
 *
 */
@SpringBootApplication
public class SpringbootHelloworldApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootHelloworldApplication.class, args);
    }
}

@SpringBootApplication: SpringBoot应用标注在某个类上说明这个类是springboot主配置类,springboot应该运行这个类的main方法来启动这个应用

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
  • @SpringBootConfiguration : springboot的配置类

    标注在某个类上,表示这是一个springboot配置类

    • @Configuration:配置类上标注这个注解
      配置类是spring的配置文件,也是容器中的一个组件 @Component
  • @EnableAutoConfiguration: 开启自动配置功能。使用注解,告诉SpringBoot开启自动配置功能,无需我们自己配置。

    • @AutoConfigurationPackage : 自动配置包

      • @Import({Registrar.class}):Spring 的底层注解,给容器导入一个组件
        将主配置类(@SpringBootApplication 标注的类)的所在包下面的所有子包里面的所有组件扫描到Spring的容器中
        @AutoConfigurationPackage
        @Import({EnableAutoConfigurationImportSelector.class})
        public @interface EnableAutoConfiguration {
    • @Import({EnableAutoConfigurationImportSelector.class}):给容器导入组件
      需要导入哪些组件呢?
      EnableAutoConfigurationImportSelector.class 将所需要导入的组件已全类名的方式返回;这些组件就会被添加到容器中;
      给容器导入非常多的自动配置类(XXXAutoConfiguration);给容器中导入这个场景需要的所有组件,并配置好这些组件
      这里写图片描述

    • 有了自动配置类,免去了我们手动编写配置注入功能组件等工作
      • SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class, this.beanClassLoader);
      • SpringBoot在启动时从类路径下的META-INF/spring.factories获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作;以前我们需要自己配置的东西,自动配置类帮我们做了。
      • j2ee的整体整合解决方案和自动配置都配好了如下图
        这里写图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值