SpringBoot系列大全(一)SpringBoot入门

SpringBoot入门

SpringBoot官网链接:https://spring.io

SpringBoot简介:
1.简化Spring应用开发的一个框架
2.整个Spring技术栈的一个大整合
3.J2EE开发的一站式解决方案;
4.化繁为简 简化xml配置
5.下一代框架的起点
6. 内置tomcat/jetty 容器
….
from all in one to micro-service

创建SpringBoot应用

方式一:使用Maven创建

使用IDEA新建项目,选择Maven选项,会创建一个空的项目,pom文件也是没有任何依赖。
在pom文件中导入依赖和插件:

<parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>1.5.14.RELEASEversion>
    parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
    dependencies>

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

新建SpringBoot应用主程序配置类:

@SpringBootApplication // 标注主程序类,为springBoot应用
public class HelloWorldApplication {

    // 启动springBoot应用
    public static void main(String[] args) {
        SpringApplication.run(HelloWorldApplication.class, args);
    }
}

方式二:使用Spring Initializr进行快速创建

使用IDEA新建项目,选择Spring Initializr选项,选择SpringBoot版本和要用到的组件即可。
该方式会创建一个完整的SpringBoot项目,并且在pom文件中也引入了启动SpringBoot应用所需的依赖,推荐使用。

方式三:在Spring官网进行download下载导入

实际上和第二种方式类似。

Pom文件分析

版本仲裁中心

    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>1.5.14.RELEASEversion>
    parent>

它的上一级是:

    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-dependenciesartifactId>
        <version>1.5.14.RELEASEversion>
        <relativePath>../../spring-boot-dependenciesrelativePath>
    parent>

在spring-boot-dependencies中可以看到规定了很多技术的依赖版本

    <properties>
        
        <activemq.version>5.14.5activemq.version>
        <antlr2.version>2.7.7antlr2.version>
        <appengine-sdk.version>1.9.64appengine-sdk.version>
        <artemis.version>1.5.6artemis.version>
        <aspectj.version>1.8.13aspectj.version>
        <assertj.version>2.6.0assertj.version>
        <atomikos.version>3.9.3atomikos.version>
        .........

也称为Spring Boot的版本仲裁中心;导入依赖默认是不需要写版本的。

在pom文件中,parent标签是父项目,用于管理项目的jar依赖和版本统一,
如果在父pom文件中,定义了dependencyManagement标签和dependencies标签,在子pom中如果没有声明version版本,默认继承父pom中定义的maven版本
如果子pom声明了version版本,那么将引入子pom中的jar版本
如果父pom中没有定义,只定义了,那么在子pom中就必须声明jar包的版本,否则报错
一般两种共用

启动器

spring-boot-starter-*

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring‐boot‐starter‐webartifactId>
dependency>

spring-boot-starter:spring-boot场景启动器;帮我们导入了web模块正常运行所依赖的组件;
所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter相关场景的所有依赖都会导入进来。
spring-boot-starter-*,各种技术的启动器,配置了默认配置,已经配置了各种依赖,支持快速启动springboot应用。

第三方启动器通常命名为 *-spring-boot-starter

启动SpringBoot应用的几种方式

1.idea启动 XXXApplication (开发使用)
2.a 进入项目目录下:mvn spring-boot:run,b IDEA中右侧maven projects/项目名/Plugins/srping-boot: spring-boot:run
3.在项目目录下编译成jar包 mvn install 生成.jar文件 ,java -jar xxxxxxx.jar

YML格式配置文件

yml形式 前缀一样合并,值和键之间有空格
yml语法 (key: value)

—Map、对象:
person:
last-name: lsisi\nlis
age: 14
或者
person: {last-name: lisi,age: 14}
—数组、List:
lists: [lili,tom]
或者
lists:
- lili
- tom

配置文件读取配置属性注入到bean中
在pom文件中导入配置文件处理器,配置文件进行绑定就会有提示

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-configuration-processorartifactId>
    <optional>trueoptional>
dependency>

将配置文件信息写入代码中

1.在application.properties中将多个属性一一注入到一个bean对象中

human.id=1
human.name=张三
human.map.k1=v1
human.map.k2=v2
human.lists=[123,456,789]
human.dog.name=旺财
human.dog.age=5

/**
* 将配置文件中配置的每一个属性的值,映射到这个组件中
* @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
* prefix = "person":配置文件中哪个下面的所有属性进行一一映射
*
* 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
*
*/
@Component
@ConfigurationProperties(prefix = "human")
@Data
@Validated
public class Human {
    private Long id;
    private String name;
    private HashMap map;
    private List lists;
    private Dog dog;
    @Email //邮箱格式校验,需要添加类注解 @Validated
    private String email;
}

使用的时候使用@Autowired或者@Resource直接注入到容器中,即可获取封装好的对象

2.将单个属性注入到单个字段中

类上添加注解@Configuration
注入的字段上添加注解:
@Value(“${com.gaboness.test.data}”)
private String data;

如果只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;
如果专门编写了一个javaBean来和配置文件进行映射,那么使用@ConfigurationProperties

3.@ProperSource的使用
在resource目录下新建building.properties配置文件:

building.id=1
building.name=1栋
building.floor=15
再新建一个封装building对象的类:

@Data
@Component
// 指定配置文件的路径,并不是所有的配置信息都写在application.properties中
@PropertySource(value = {"classpath:building.properties"})
@ConfigurationProperties(prefix = "building")
public class Building {
    private Integer id;
    private String name;
    /**
     * 楼宇层数
     */
    private Integer floor;
}

@ImportResource的使用
导入Spring的配置文件,让配置文件里面的内容生效;
Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别; 想让Spring的配置文件生效,加载进来;需要将@ImportResource标注在一个配置类上
(a)创建一个service

@Configuration
@ImportResource(locations = {"classpath:beans.xml"})
// 导入Spring的配置文件让其生效
public class HelloService {
    public void hello(String humanName){
        System.out.println("xx");
    };
}

(b)新建一个spring的配置文件beans.xml


<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring‐beans.xsd">
    <bean id="helloService" class="com.gaboness.service.HelloService">bean>
beans>

SpringBoot推荐给容器中添加组件的方式;推荐使用全注解的方式
1、配置类@Configuration——>Spring配置文件
2、使用@Bean给容器中添加组件

    /**
     * @Configuration:指明当前类是一个配置类;就是来替代之前的Spring配置文件
     * 在配置文件中用标签添加组件
     */
    @Configuration
    public class MyConfig {
        //将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名
        @Bean
        public HelloService helloService2(){
            System.out.println("配置类@Bean给容器中添加组件了...");
            return new HelloService();
        }
    }

StringBoot的参数绑定

@ConfigurationProperties的参数绑定,可以非常方便的把资源文件中的内容绑定到对象上,支持松绑定  .  -   _
1.如果类是自己写的,在写的类上面,例如数据源 MyDataSource,配上注解@Component  @ConfigurationProperties(prefix=“db”)或者@ConfigurationProperties(“db)
2.如果是第三方的组件,在启动类方法中添加@Bean @ConfigurationProperties(prefix=“db”)或者@ConfigurationProperties(“db)
3.如果是第三方的产品,例如druid,只需要autowired自动注入,

springBoot的热部署功能

在开发中,每次修改方法都需要启动一次,使用热部署比较方便

准备前提:
    1.导入热部署的依赖 devtools
        
            org.springframework.boot
            spring-boot-devtools
            true //传递  (注:默认的值为false, 及子项目必须依赖,true表示依赖不传递)
        

你可能感兴趣的:(SpringBoot系列)