Spring Boot2(基本配置&特性(基础准备))

Posted HUTEROX

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot2(基本配置&特性(基础准备))相关的知识,希望对你有一定的参考价值。

Spring Boot简介

能快速创建出生产级别的Spring应用,具备整合Spring家族的脚手架!面向配置文件编程的粉碎机,快速构建项目的构建器。

前期准备

Spring基础+mybatis初识+mybatis-plus

前面本来是先上的Spring Boot发现这样搞确实不妥,MVC不搞Spring还是要搞的,玩个Mybatisplus发现后面的操作(联表)和Spring Boot 的耦合密切所以这个Boot 还是挺重要的。

环境搭建

这个如果你是使用的IDEA的话你可以直接在选项里面构建出SpringBoot项目。那么这里的话还是从构建Maven开始。

1.1 导入依赖

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
    </parent>


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

    </dependencies>

1.2创建主程序

package com.huterox.boot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        //主程序入口写好了就不要动
        SpringApplication.run(MainApplication.class,args);
    }
}

1.3HelloWorld程序

编写响应代码

package com.huterox.boot.Controller;

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

//@Controller 这个就是Component
//@ResponseBody这个就是告诉它直接返回浏览器
@RestController //这个取代上面的两个注解

public class HelloController {
    @RequestMapping("/hello")
    public String handle01(){
        return "Hello, Spring Boot 2!";
    }

}

1.4测试启动

运行MainApplication

1.5项目结构预览

Spring Boot 特性

配置简化

首先是SpringBoot 提供了很多场景,这些场景其实就是以前繁琐配置的集合的封装,通过依赖传递来帮助我们实现很大程度的自动配置。

自动版本仲裁

其实这个很好理解,那就是Spring Boot 依托不同的场景集成了众多配置,自动帮我们对组件的版本进行自动配置。

其实也就是这个配置

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
    </parent>

这个是父配置,他帮我们控制了其他依赖的版本。

当然我们也可以自己修改版本,例如修改数据库驱动版本。

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <mysql.version>5.1.43</mysql.version>
    </properties>

场景启动器

其实就是这个玩意

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

这个starter

是他帮助我们实现解放手动配置的。

自动配置(依赖打包)

这玩意可以帮助我们自动配置Tomcat,到时候直接打包成jar包运行而不是war包然后再放到Tomcat里面,这里面就会帮助我们简化很多步骤,最起码如果要部署的话是要比Django容易的,你部署一个Django应用首先要安装配置uwsgi 然后配置nginx服务器,或者是gunicorn 这里面最起码有个tomcat,我到时候直接运行jar包然后配置nginx负载均衡就好了。

这里需要先导入依赖

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

然后打包成jar包即可

Config注解类

这部分内容其实还是Spring里面的玩意。但是在SpringBoot里面经常见到。从前面的那个Mybatis-plus在SpringBoot里面玩就可以看到。总体来说还不错。

那么这里补充一下昨天没写的东西

补充

这里还是补充一下Spring里面没有演示 的注解。

@Import

@Import引入普通的类可以帮助我们把普通的类定义为Bean

(通过默认的构造方法来实现)

同时也可以引入配置类,等等。

Import 的参数要求是一个Class类型的数组。

也就是你可以以下使用

@SpringBootApplication
@Import(Cat.class) // 通过@Import注解把ImportBean添加到IOC容器里面去
public class MyBatisApplication {

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

}
ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
for (String beanDefinitionName : run.getBeanDefinitionNames()) {

    System.out.println(beanDefinitionName);
}

这个Configuration默认是ProxyBeanMethod=ture

这个是啥意思呢,就是保证咱们的这个IOC容器里面的Bean是单例模式的。

优缺点的话还是说看你的具体的应用吧!

那么关于这边的注解的话基本的一些还是在Spring里面能找到影子的。

条件装配

@Condition

当满足什么条件就进行装配Bean或者当条件不满足时候。

实例:

@ConditionalOnBean(name = "Cat")

当容器当中有Cat这个Bean的时候我才装配。

以此类推。

@ImportResource

这个家伙的作用其实是和配置类一起使用的,它可以导入Bean.xml(resources下的配置文件)相当于把里面的内容转化成了Configuration。

@ImportResource("classpath:bean.xml")

此时里面的文件的注解生效在配置类当中。

@ConfigurationProperties

这个注解就比较厉害了,首先这个家伙读取的是SpringBoot的配置文件时properties的。

现在举个列子

定义一个飞机类

package com.huterox.boot.TEST;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "plan")
public class Plane {
    private String name;

    public String getName() {

        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Plane{" +
                "name='" + name + '\\'' +
                '}';
    }
}

进入配置文件

写上这个

plan.name=Fly

然后进入controller

@Autowired
Plane plane;
@RequestMapping("/plane")
public Plane getPlane(){
    return plane;
}

看见结果

总结

见到目前Spring Boot 的开发见到了很多Spring的影子。

至于为什么多看看Spring其实就明白了。

以上是关于Spring Boot2(基本配置&特性(基础准备))的主要内容,如果未能解决你的问题,请参考以下文章

spring boot2.0配置过滤器filter

Spring Boot2中配置HTTPS

Spring Boot2.0自定义配置文件使用

spring boot2.1读取 apollo 配置中心3

spring boot2.x和activiti如何配置

Spring Boot2 系列教程 | 配置日志