Springboot学习笔记01--

时间:2023-02-25 22:31:57

---恢复内容开始---

-1 springboot简介

        简化spring的应用开发的一个框架

        整个spring技术栈的一个大整合

         J2EE开发的一站式解决方案

-2 微服务

     2014年 martin fowler 的一篇博客中有提到介绍

     微服务:架构风格(服务微化)

     一个应用应该是一组小型服务:可以通过HHTP的方式进行互通;

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

    

-3 环境准备

   jdk 1.8

   ieda

    maven 3.3以上版本

 

-4 spring boot helloworld   一个功能

  

     浏览器发送hello请求,服务器接受请求并处理,响应Hello World字符串;
 
      
          创建一个maven工程;(jar)
       2、导入spring boot相关的依赖

            

<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 编写一个主程序;启动Spring Boot应用

   

/**
* @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用 */
@SpringBootApplication
publicclassHelloWorldMainApplication{ public static void main(String[] args) {
// Spring应用启动起来
        SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}

 

  

4 编写相关的ControllerService
@Controller
publicclassHelloController{

@ResponseBody
@RequestMapping("/hello")
public String hello(){
return "Hello World!";

}

 

 

5   运行主程序测试,在浏览器访问我们配置的映射 /hello。查看结果。
 
6,spring boot 简化部署功能在pom文件中添加如下 配置信息
    
<!‐‐ 这个插件,可以将应用打包成一个可执行的jar包;‐‐> <build>
       <plugins>
           <plugin>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring‐boot‐maven‐plugin</artifactId>
           </plugin>
       </plugins>
   </build>
 

5 Hello world 的探究

        1 pom 文件

              01 父项目

            


<
parent> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐parent</artifactId> <version>1.5.9.RELEASE</version> </parent> 他的父项目是 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐dependencies</artifactId> <version>1.5.9.RELEASE</version> <relativePath>../../spring‐boot‐dependencies</relativePath> </parent> 他来真正管理springboot应用里面的所有版本的依赖

 

              我们可以称它为springboot的版本仲裁中心,以后我们导入的依赖默认事不需要写版本;(没有在depencies里面管理的依赖自然要生明版本号)

   

      2启动器

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

   spring-boot-starter-web :

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

    

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

 

      

  2  主程序类,主入口类

        

/**
* @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用 */
@SpringBootApplication
publicclassHelloWorldMainApplication{ public static void main(String[] args) {
// Spring应用启动起来
        SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}

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

    注解 @SpringBootApplication 的详细信息如下

       

@Target(ElementType.TYPE) 2 @Retention(RetentionPolicy.RUNTIME) 3 @Documented 4 @Inherited 5 @SpringBootConfiguration 6 @EnableAutoConfiguration 7 @ComponentScan(excludeFilters={ 8 @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), 9 @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) }) 10 public@interfaceSpringBootApplication{

@SpringBootConfiguration:Spring Boot的配置类; 标注在某个类上,表示这是一个Spring Boot的配置类;

@Configuration:配置类上来标注这个注解;    配置类 ----- 配置文件;配置类也是容器中的一个组件;@Component

@SpringBootConfiguration:Spring Boot的配置类; 标注在某个类上,表示这是一个Spring Boot的配置类; @Configuration:配置类上来标注这个注解;

     配置类 ----- 配置文件;配置类也是容器中的一个组件;
 
 
    @AutoConfigurationPackage:自动配置包
    @Import(AutoConfigurationPackages.Registrar.class):

    Spring的底层注解@Import,给容器中导入一个组件;导入的组件由 AutoConfigurationPackages.Registrar.class;

    将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到容器;

      @Import(EnableAutoConfigurationImportSelector.class);

给容器中导入组件?
EnableAutoConfigurationImportSelector:导入哪些组件的选择器; 将所有需要导入的组件以全类名的方式返回;这些组件就会被添加到容器中;

会给容器中导入非常多的自动配置类(xxxAutoConfiguration);就是给容器中导入这个场景需要的所有组件, 并配置好这些组件;

 

     

   有了自动配置类,免去了我们手动编写配置注入功能组件等的工作; SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,classLoader);
 
  
Spring Boot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将

 以前我们需要自己配置的东西自动配置类都将帮我找。

 

J2EE的整体整合解决方案和自动配置都在spring-boot-autoconfigure-1.5.9.RELEASE.jar

 

 

 

 

6。使用Spring Initializer快速创建Spring Boot项目

        

           1 IDEA:使用 Spring Initializer快速创建项目

 

                IDE都支持使用Spring的项目创建向导快速创建一个Spring Boot项目; 选择我们需要的模块;向导会联网创建Spring Boot项目; 默认生成的Spring Boot项目;

                主程序已经生成好了,我们只需要我们自己的逻辑 resources文件夹中目录结构

                              static:保存所有的静态资源; js css images;
                         templates:保存所有的模板页面;(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页 面);可以使用模板引擎(freemarkerthymeleaf);
          application.properties:Spring Boot应用的配置文件;可以修改一些默认设置;

 

 

 

 

 

 

 

 

 

 

     

 

 

  

 

 

   

 

 

 

 

 

 

 

 

---恢复内容结束---