Bootstrap

spring boot的学习--Springboot入门(1)

1.spring boot(脚手架)的介绍

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

优点:快速创建独立运行的spring项目以及与主流框架集成

使用嵌入式的Servlet容器,应用无需打成war包,内嵌Tomcat

Starters自动依赖和版本控制

大量的自动装配,简化开发,也可以修改默认值

无需配置XML无代码生成开箱即用

准生产环境的运行时应用监控

与云计算的天然集成

2.spring boot的环境准备

  环境约束

–jdk1.8:Spring Boot 推荐jdk1.7及以上;java version "1.8.0_112"

–maven3.x:maven 3.3以上版本;Apache Maven 3.3.9

–IntelliJIDEA2017:IntelliJ IDEA 2017.3.3 x64、STS

–SpringBoot 2.0.2.RELEASE:统一环境; spring5

不要求版本   单一springboot项目   版本冲突

SpringCloud微服务治理的时候

3.把maven变成springboot项目

   小知识点 jar和war包的区别:war是(Web Application Archive)的缩写

    所以当涉及web的页面要打成war包,只涉及后端的一些逻辑打成jar包

1.创建一个maven工程

2.导入springboot相关的依赖               

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐starter‐parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencies>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring‐boot‐starter‐web</artifactId>
</dependency>
</dependencies>

  3.编写一个主程序

@SpringBootApplication
public class HelloWorldMainApplication {
    public static void main(String[] args) {
    // Spring应用启动起来
    SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}

      3.1 @SpringBootApplicatio的作用

             → 用这个注解来标注一个主程序类,说明这个是一个spring boot程序

    4.可以编写响应的controller和service类

    5.  简化部署(非必要)

      这是一个定义项目构建生命周期过程的插件(这个插件,可以将应用打包成一个可执行的jar)

<build>  
   <plugins>  
     <plugin>  
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-maven-plugin</artifactId>  
     </plugin>  
   </plugins>  
</build>

4.spring-boot-starter-web的作用

1.1 简单介绍 

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

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

1.2 使用场景

spring-boot-starter-web 的使用场景主要涵盖了基于 Spring Boot 的 Web 应用程序开发。以下是其一些主要的使用场景:

  1. RESTful API 开发
    spring-boot-starter-web 提供了开发 RESTful API 所需的所有核心组件。通过使用 Spring MVC 和 Spring Boot 的自动配置特性,开发者可以快速地创建和部署 RESTful API。

  2. 传统 Web 应用程序(MVC)
    尽管 RESTful API 是现代 Web 开发的常见选择,但仍有场景需要使用传统的基于视图的 Web 应用程序。spring-boot-starter-web 提供了 Spring MVC,它支持基于视图的 Web 开发,可以轻松地与 JSP、Thymeleaf、FreeMarker 等模板引擎集成。

  3. Spring 框架集成
    由于 spring-boot-starter-web 是基于 Spring MVC 的,因此它提供了对 Spring 框架的完整集成。这意味着开发者可以使用 Spring 的所有特性,如依赖注入、事务管理、安全性等,来构建他们的 Web 应用程序。

  4. 嵌入式 Servlet 容器
    默认情况下,spring-boot-starter-web 包含了嵌入式 Tomcat,用于在开发过程中运行应用程序。这使得开发者无需配置和部署到外部的 Servlet 容器(如 Tomcat、Jetty 或 Undertow),从而简化了开发流程。当然,开发者也可以选择使用其他嵌入式 Servlet 容器或部署到外部的 Servlet 容器。

  5. 快速原型和迭代
    由于 Spring Boot 的快速启动和自动配置特性,结合 spring-boot-starter-web,开发者可以快速地创建和迭代 Web 应用程序的原型。这有助于在开发早期就发现和解决潜在的问题,从而加快项目的进度。

  6. 微服务架构
    在微服务架构中,每个服务通常都是一个独立的、可部署的单元。spring-boot-starter-web 使得开发者可以轻松地创建和部署这些微服务,因为每个服务都可以作为一个独立的 Spring Boot 应用程序来运行。

  7. 与 Spring Cloud 集成
    当与 Spring Cloud 集成时,spring-boot-starter-web 可以帮助开发者构建分布式系统,如服务发现、配置管理、断路器模式等。Spring Cloud 提供了一系列与 Spring Boot 兼容的库和工具,用于构建微服务架构。

4. 深度解析SpringBootApplication的内部 

这是进入SpringBootApplication的内容

@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 {

1.1 SpringBootConfiguration 这个是代表spring boot的配置类

       1.1.1标注到某个类上表示这是一个Spring Boot的配置类;

        1.1.2 与@Configuration的区别  SpringBootConfiguration 是springboot特有的属于@Configuration的增强功能

        1.1.3 当你使用@Configuration@SpringBootConfiguration时,不需要再为该类添加@Component。这些注解已经足够告诉Spring这个类是一个配置类,并且包含Bean的定义。

1.2  @EnableAutoConfiguration:开启自动配置功能

        1.2.1 作用:以前我们需要配置的东西,springboot帮我们自动配置@EnableAutoConfiguration告诉SpringBoot开启自动配置功能;这样自动配置才能生效;

5 使用spring initializer快速创建springboot项目

  1.1 创建过程

IDE都支持使用Spring的项目创建向导快速创建一个Spring Boot项目;
选择我们需要的模块;向导会联网创建Spring Boot项目;
默认生成的Spring Boot项目;
主程序已经生成好了,我们只需要我们自己的逻辑

1.2 结构

   resources文件夹的目录结构

  static :保存所有静态资源 js css images 

  templates : 保存所有的模版页面:Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面);可以使用模板引擎(freemarkerthymeleaf);

   application.properties:Spring Boot应用的配置文件;可以修改一些默认设置;

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;