zoukankan      html  css  js  c++  java
  • 一、SpringBoot入门

    一、SoringBoot入门
    二、配置文件
    三、日志

    1、SpringBoot简介

    SpringBoot是为了简化Spring应用开发,采用约定大于配置的模式,去繁从简。

    优点:

    ​ --快速创建独立运行的Spring项目以及与主流框架继承

    ​ --使用嵌入式的Servlet容器,应用无需打成war包。

    ​ --starters自动依赖于版本控制。

    ​ --大量的自动配置,简化开发,也可修改默认值。

    ​ --无需配置XML,无代码生成,开箱即用。

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

    ​ --与云计算天然集成。

    2、微服务

    微服务是一种架构风格

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

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

    3、学习环境

    – jdk1.8:Spring Boot 推荐jdk1.7及以上;java version “1.8.0_221”

    – maven3.x:maven3.3以上版本;Apache Maven 3.5.2

    – IntellijIDEA2019.3

    – SpringBoot 2.2.2.RELEASE

    3.1、MAVEN设置

    给maven 的settings.xml配置文件的profiles标签添加(告诉maven使用jdk1.8进行编译)

    <profile>
      <id>jdk-1.8</id>
      <activation>
        <activeByDefault>true</activeByDefault>
        <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>
    

    3.2、IDEA设置

    整合maven进来,配置setting->Build->Build Tools中maven设置
    在这里插入图片描述

    4、Spring Boot HelloWorld

    搭建项目环境实现浏览器访问hello返回HelloWord

    4.1、创建一个maven工程(不用选择模板)

    4.2、导入SpringBoot相关的依赖

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

    4.3、编写一个主程序;启动SpringBoot应用

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

    4.4、编写相关的Controller、Service

    //@RestController起到@Controller和@ResponseBody一起的作用
    @RestController
    public class HelloController {
    
        @RequestMapping("/hello")
        public String hello(){
            return "HelloWord";
        }
    }
    
    

    4.5、运行主程序测试OK

    4.6、简化部署

    <!-- 这个插件,可以将应用打包成一个可执行的jar包;-->
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    

    将这个应用打成jar包,直接使用java -jar的命令进行执行;

    在这里插入图片描述

    5、Hello World探究

    5.1、POM文件

    5.1.1、父项目

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
    </parent>
    点进去源码看到他的父项目是
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath>../../spring-boot-dependencies</relativePath>
    </parent>
    他来真正管理Spring Boot应用里面的所有依赖版本;
    

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

    5.1.2、启动器

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

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

    spring-boot-starter:spring-boot场景启动器;

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

    5.2、主程序类,主入口类

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

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

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

    @SpringBootConfiguration:Spring Boot的配置类;

    ​ 标注在某个类上,表示这是一个SpringBoot的配置类;

    ​ @Configuration:配置类上来标注这个注解;

    ​ 配置类 ----- 配置文件;配置类也是容器中的一个组件;@Component

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

    ​ 以前我们需要配置的东西,Spring Boot帮我们自动配置;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能;这样自动配置才能生效;

    @AutoConfigurationPackage
    @Import(EnableAutoConfigurationImportSelector.class)
    public @interface EnableAutoConfiguration {
    

    ​ @AutoConfigurationPackage:自动配置包

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

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

    ​ @Import(EnableAutoConfigurationImportSelector.class):

    EnableAutoConfigurationImportSelector:导入哪些组件的选择器;将所有需要导入的组件以全类名的方式返回;这些组件就会被添加到容器中;会给容器中导入非常多的自动配置类(xxxAutoConfiguration);就是给容器中导入这个场景需要的所有组件,并配置好这些组件;有了自动配置类,免去了我们手动编写配置注入功能组件等的工作;

    Spring Boot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作;==以前我们需要自己配置的东西,自动配置类都帮我们;

    J2EE的整体整合解决方案和自动配置都在spring-boot-autoconfigure-2.2.2.RELEASE.jar包里面;

    6、使用Spring Initializer快速创建SpringBoot项目

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

    IDE都支持使用Spring的项目创建向导快速创建一个Spring Boot项目;

    选择我们需要的模块;向导会联网创建Spring Boot项目;

    默认生成的Spring Boot项目;

    • 主程序已经生成好了,我们只需要我们自己的逻辑
    • resources文件夹中目录结构
      • static:保存所有的静态资源; js css images;
      • templates:保存所有的模板页面;(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面);可以使用模板引擎(freemarker、thymeleaf);
      • application.properties:Spring Boot应用的配置文件;可以修改一些默认设置;
  • 相关阅读:
    HDU 2852 KiKi's K-Number (主席树)
    HDU 2089 不要62
    Light oj 1140 How Many Zeroes?
    Bless You Autocorrect!
    HDU 6201 transaction transaction transaction
    HDU1561 The more ,The better (树形背包Dp)
    CodeForces 607B zuma
    POJ 1651 Mulitiplication Puzzle
    CSUOJ 1952 合并石子
    Uva 1599 Ideal path
  • 原文地址:https://www.cnblogs.com/zhangguangxiang/p/14232536.html
Copyright © 2011-2022 走看看