SpringBoot学习笔记之一-基础学习

学习的资料是尚硅谷学院发布的SpringBoot的教学视频,有理论有实战。

课程目录:

Spring本身的核心容器:

安装Spring的一个插件

安装插件注意:

搭建Spring必要的jar包:

SpringBoot最基础的概念:

(1)是IOC( DI)和AOP容器框架

IOC:反转控制

AOP:依赖注入

什么关EBJ? JavaEE服务器端的组件模型。

Spring的特点:

(1)轻量级

(2)依敕注入

(3)面向切面编程

(4)是个框架

(5)一站式,可以整和其开源框保

SprintBoot的优点:

(1) 快速创建独立运行的Spring项目以及与主流框架集成

(2) 使用嵌入式的 Servlet 容器,应用无需打成 WAR 包 

     --备注:意味着丢弃Tomcat

(3) starters 自动依赖与版本控制

     --备注:starters叫做启动器,需要什么样的业务服务就加载添加什么样的启动器,如web服务相关

(4) 大量的自灵配置己需配置 XML ,简化开发,无代码生成,也可修改默认值

(5) 无需配置XML,无代码生成,开箱即用

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

    --备注:运维阶段方便

(7) 与云计算的天然集成

缺点:

入门容易,精通难(跟没说一样哦~)

基础概念

SpringBoot的入门简介

(1)简化Spring应用开发的框架

(2)Spring技术栈的一个集合

(3)J2EE开发一站式解决方案

什么是J2EE?

      J2EE全称为Java2 Platform Enterprise Edition。“J2EE平台本质上是一个分布式的服务器应用程序设计环境——一个Java环境,它提供了:·宿主应用的一个运行基础框架环境。·一套用来创建应用的Java扩展API。”

微服务

(1)微服务是一种架构风格,一组小型的服务,以HTTP的方式进行互通

(2)区别于“单体应用”,如整个服务器的war包,所有服务器相关的代码、资源都在一个包中。如果业务量庞大的话,单体应用,维护起来“不方便”

微服务,提倡的是将“功能元素”独立出来。

每个功能元素可以独立的替换和独立升级的小单元。

每个单元,应该是独立完整的功能单元,比如单独连数据库的单元,单独处理缓存的单元。

SpringCloud,用来做分布式和批处理。

什么是微服务概念?

微服务架构的系统是一个分布式的系统,按业务进行划分为独立的服务单元,解决单体系统的不足,同时也满足越来越复杂的业务需求

什么是Maven?

      Maven的核心功能便是合理叙述项目间的依赖关系,通俗点讲,就是通过pom.xml文件的配置获取jar包,而不用手动去添加jar包,而这里pom.xml文件对于学了一点maven的人来说,就有些熟悉了,怎么通过pom.xml的配置就可以获取到jar包呢?pom.xml配置文件从何而来?等等类似问题我们需要搞清楚,如果需要使用pom.xml来获取jar包,那么首先该项目就必须为maven项目,maven项目可以这样去想,就是在java项目和web项目的上面包裹了一层maven,本质上java项目还是java项目,web项目还是web项目,但是包裹了maven之后,就可以使用maven提供的一些功能了(通过pom.xml添加jar包)

SpringBoot学习的前提:

需要了解Spring4和Maven

要求的开发环境:

(1)JDK1.8 SpringBoot官方推荐1.7及以上

(2)Maven 3.3以上的版本

--备注:mvn -v命令查看maven的版本

(3)IDEA,或者STS(官方推荐,安装了Spring插件)

(4)Spring Boot 1.5.9RELEASE 版本

设置Maven,maven的settings.xml文件添加profiles标签配置:

(我本地maven的安装路径:C:\Program Files\Java\apache-maven-3.3.9)

  <properties>

        <profile>

<id>jdk-1.8</id>

<activation>

<activeByDefafult>true</activeByDefafult>

<jdk>1.8</jdk>

</activation>

<properties>

<maven.compiler.source>1.8</maven.compiler.source>

<maven.compiler.target>1.8</maven.compiler.target>

<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>

</properties>

</profile>

  </properties>

IDEA的设置,要指定我们配置好的Maven,

看IDEA的Setting->Build Tools->Maven注意这几个设置:

配置完成!

之后,开始可以写一个HelloWorld了。

步骤:

(1)创建一个Maven工程(jar)

(2)依赖导入SpringBoot相关的依赖

具体参见Spring的官网:http://spring.io/projects/spring-boot,QuickStart的部分:

<!--导入Spring的依赖-->

<parent>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-parent</artifactId>

    <version>1.5.6.RELEASE</version>

</parent>

<dependencies>

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-web</artifactId>

    </dependency>

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-autoconfigure</artifactId>

        <version>1.5.6.RELEASE</version>

    </dependency>

</dependencies>

具体pom.xml配置截图:

(3)编写一个主程序,来启动SpringBoot

/*

类前面的关键字:来标注一个主程序类,说明这是一个 Spring Boot应用

 */

@SpringBootApplication

public class HelloWorldMain {

}

(4)编写相关的controller

package com.stephanie;

@Controller

public class HelloController {

    @ResponseBody//这个关键字,把hello 写给浏览器

  @RequestMapping("/hello") //程序启动后,浏览器输入localhost:8080/hello,浏览器页面就能回显展示这句话

    public String hello();

    {

        return "Hello World";

    }

}

(5)运行主程序

(6)导入一个Maven的自动打包的一个插件,配置文件xml添加以下代码:

<!--添加Maven插件,将应用打包成一个可执行的jar-->

<build>

    <plugins>

        <plugin>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-maven-plugin</artifactId>

        </plugin>

    </plugins>

</build>

结果就是,我们的程序可以打包成一个jar包。

导入成功之后,这个插件的用法如图:

怎么去运行一个jar包呢?

cmd下,命令:java -jar XXXXXXX.jar

则可以直接启动程序

如图:

1.详细解释pom.xml文件

如下的代码引入,表示导入一个父项目(IDEA中点击这个配置groupId是可以跳转到定义的)

<!--导入Spring的依赖-->

<parent>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-parent</artifactId>

    <version>1.5.6.RELEASE</version>

</parent>

他的父项目是:

<parent>

   <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-dependencies</artifactId>

   <version>1.5.6.RELEASE</version>

   <relativePath>../../spring-boot-dependencies</relativePath>

</parent>

真正管理Spring Boot应用里面的所有依赖版本。

以后我们导入依赖默认不需要写版本(没有在dependencies里面管理的依赖需要声明版本号)

2.导入的依赖

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-web</artifactId>

</dependency>

讲解,什么是spring-boot-starter?

概念:Spring Boot的场景启动器,帮我们导入了Web模块正常运行所依赖的组件;

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

主程序类讲解

package com.stephanie;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

/*

类前面的关键字:来标注一个主程序类,说明这是一个 Spring Boot应用

 */

@SpringBootApplication

public class HelloWorldMain {

    public static void main(String[] args)

    {

        //Spring应用启动起来,

        SpringApplication.run(HelloWorldMain.class, args);

    }

}

@SrpingBootApplication:这注解表示 这个类是Spring Boot的主配置类,Spring Boot 就应该运行这个类的main()方法,来启动Spring Boot应用。

如果定位这个注解的定义的话:

@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,Spring Boot的配置类,标注在某个类上,表示,这是一个Spring Boot的配置类;再次点到定义的话,还会有个注解@Configuration,配置类上来标注这个注解。这个配置类也就是配置文件。配置类,本身也是容器内的一个组件Component。

@EnableAutoConfiguration:开启自动配置功能

以前需要自己配置的东西,现在加了这个注解,告诉SpringBoot自动配置;并且生效;

@AutoConfigurationPackage:自动配置包

@Import({EnableAutoConfigurationImportSelector.class:这是一个底层注解,指定导入哪些组件;

其中@Import这个注解导入的组件有AutoConfigurationPackages.Register.class;

将主配置类@SpringBootApplication标识的类,它所在的包及下面所有子包里面的所有组件都扫描到Spring容器;

所有注意:所有的注解路径的类,都必须在主配置类的包或者子包(子文件中)!

此外,EnableAutoConfigurationImportSelector这个类,自动导入包的选择器。会将所有需要导入的组件以全类名的方式返回;这些组件会被添加到容器中;会给容器中导入非常多的自动配置类(XXXAutoConfiguration),就是给容器中导入所有需要的自动配置类;自动配置类如下:

有了自动配置类,就减少手动编写配置注入功能组件等的工作;

EnableAutoConfiguration配置的值放在哪里?

在类路径下的META-INF/spring.factories文件中。(替换了一些我们以前需要自己配置的东西,自动配置类帮我们做了。)

@Bean注解:给容器中添加一个组件

@ResponseBody这个注解的说明:

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

 //需要留意的是,如果ResponseBody这个注解声明在类的前面,则表示该类的所返回结果直接返回给浏览器,但是如果声明在方法前面,表示该方法的结果返回给浏览器

@ResponseBody

@Controller //声明这是一个Controller

public class HelloController

{

    @RequestMapping("/hello")

    public String hello()

    {

        return "Hello world!";

    }

}

截止目前总结:

我学习到的东西:

1.maven把程序打包成jar包的小插件,让启动程序更快了(我未验证)

2.Spring Boot的starters各种启动器,来帮助我们根据业务导入场景启动器方便开发

3.Spring Boot的基础注解详解学习,

4.有空可以研究下各种自动配置类是怎么去做的

使用IDEA的Spring Initializr快速创建Spring Boot项目

直接在IDEA的菜单中找Spring Initializr,向导会联网创建项目。方法如图:

结果:

(1)主程序已经自动创建好,直接写业务逻辑就行

(2)resources文件夹中的目录结构:

         1.static:保存所有的静态资源,js css images

         2.templates:保存所有的模板页面(String Boot默认jar包里使用嵌入式的Tomcat,默认不支持JSP页面),可以使用模板引擎(freemarker,themeleaf)-- 待学习这些模板引擎

         3.application.properties:String Boot应用的配置文件;修改配置文件的默认设置。如下修改了访问端口:

 

猜你喜欢

转载自blog.csdn.net/Stephanie_1/article/details/86500339