SpringBoot

SpringBoot,第1张

1、SpringBoot的认知

目前使用Spring、SpringMVC的问题:

1、会有大量的配置文件产生,繁琐

2、不适用于微服务、敏捷式开发

如何解决这种配置复杂的问题,SpringBoot 替代SS的整合

SpringBoot的思想:规范大于配置

特点:jar进行了整合---starter,无需依赖大量的jar

内置了很多组件,减少配置---tomcat

SpringBoot特点:

  • SpringBoot项目不需要模板化的配置。

  • SpringBoot中整合第三方框架时,只需要导入相应的starter依赖包,就自动整合了。

  • SpringBoot默认只有一个.properties的配置文件,不推荐使用xml,后期会采用.java的文件去编写配置信息。

  • SpringBoot工程在部署时,采用的是jar包的方式,内部自动依赖Tomcat容器,提供了多环境的配置。

  • 后期要学习的微服务框架SpringCloud需要建立在SpringBoot的基础上。


2、搭建SpringBoot下的开发环境

1、创建maven项目

2、添加jar依赖



    org.springframework.boot
    spring-boot-starter-parent
    2.3.4.RELEASE
     


    
        org.springframework.boot
        spring-boot-starter-web
    

3、创建启动程序

【说明】通常启动程序在父包中创建

自动扫描启动类所在的包及其子包

package com.qf.springboot2105pro;

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

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

4、创建控制器

package com.qf.springboot2105pro.controllers;

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

@RestController
@RequestMapping("/test")
public class TestController {
    @GetMapping("/add")
    public String add(String name){
        return "add"+name+",success!";
    }
}

5、配置文件

不推荐使用xml,推荐properties、yml格式

启动时,默认读取application.yml的文件

server:
  port: 8082  #tomcat的端口号改为了8082


3、快速构建SpringBoot

 

【总结】SpringBoot项目的启动方式有3种:

1、运行main方法

2、在Terminal窗口中,输入命令mvc spring-boot:run 回车即可

3、打包成jar,运行jar


4、SpringBoot整合Mybatis

1、添加以来的jar


    mysql
    mysql-connector-java
    5.0.5



    com.alibaba
    druid-spring-boot-starter
    1.1.10


    org.mybatis.spring.boot
    mybatis-spring-boot-starter
    2.1.2

 

2、编写数据库连接的配置信息

application.yml

server:
  port: 8082  #tomcat的端口号改为了8082
spring:
  datasource: #连接池的配置信息
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db2105
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource
mybatis: #mybatis的配置
  configuration:
    map-underscore-to-camel-case: true
  mapper-locations: classpath:mybatis/*.xml
  type-aliases-package: com.qf.springboot2105pro.pojo

3、在启动类中,配置注解:扫描dao包下接口类型的bean,存入bean工厂中

@MapperScan("com.qf.springboot2105pro.dao")

4、代码的编写同SSM一样


5、SpringBoot的注解

轻配置文件后,可以写配置类用来替代配置文件

@Configuration 相当于配置文件 beans标签

@Bean 相当于配置文件里的bean标签

编写配置类

package com.qf.sm.dao;

import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;
import java.io.IOException;

@Configuration  //当前类为配置类---beans  SpringBoot在启动的时候自动加载、读取此注解修饰的类
public class MybatisConfiguration {
    //配置SqlSessionFactoryBean
    @Bean //自动执行注解所修饰的方法,把方法返回的bean添加的bean工厂中
    @ConditionalOnMissingBean  //条件bean,需要参数dataSource,到bean工厂中寻找dataSource,传入方法
    public SqlSessionFactoryBean createSqlSessionFactoryBean(DataSource dataSource){
        //把spring配置文件里的内容,转化为方法里的内容
        SqlSessionFactoryBean sqlSessionFactoryBean=new SqlSessionFactoryBean();
        //设置数据卷
        sqlSessionFactoryBean.setDataSource(dataSource);
        //设置mapper映射文件的路径
        //sqlSessionFactoryBean.setMapperLocations(new ClassPathResource("mybatis/mapper/*.xml"));
        //设置mybatis的配置文件路径
        sqlSessionFactoryBean.setConfigLocation(new ClassPathResource("mybatis/mybatis-context.xml"));
        //读取映射文件
        //先创建读取器---读取映射文件
        PathMatchingResourcePatternResolver resolver=new PathMatchingResourcePatternResolver();
        Resource[] mapperXml=null;
        //读取
        try {
            mapperXml=resolver.getResources("classpath:mybatis/mapper/*.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }
        //把读取到的文件设置给sqlSessionFactoryBean
        sqlSessionFactoryBean.setMapperLocations(mapperXml);
        //设置别名
        sqlSessionFactoryBean.setTypeAliasesPackage("com.qf.sm.pojo");
        return sqlSessionFactoryBean;
    }
    @Bean
    @ConditionalOnBean(SqlSessionFactoryBean.class)  //条件bean,自动传入,不需要显示传递参数
    public MapperScannerConfigurer createMapperScannerConfigurer(){
        MapperScannerConfigurer mapperScannerConfigurer=new MapperScannerConfigurer();
        mapperScannerConfigurer.setBasePackage("com.qf.sm.dao");
        return mapperScannerConfigurer;
    }
}

6、当启动类不在父包时

在启动类上加如下注解,告知SpringBoot从哪里开始扫描

@ComponentScan("com.qf.sm") //从指定的包开始扫描


6、SpringBoot的启动原理/自动装配过程

@SpringBootApplication 注解是一个复合注解(由多个注解组成),有3个核心注解:

1、@SpringBootConfiguration,作用:加载配置类,修饰的类就是配置类,引入了@Configuration 注解,启动类只能有一个

2、@EnableAutoConfiguration,作用:自动加载(导入)配置类,由下面注解组成

@Import({AutoConfigurationImportSelector.class}) 作用:这个类的作⽤是去spring-boot-autoconfig包下的路径⾥读取EnableAutoConfiguration类的⼦类,实例化后放⼊IOC容器中,这个过程

即加载了常见的第三⽅组件的配置类

白话解释:SpringBoot自身需要的内容,防止重复导入

@AutoConfigurationPackage,由@Import({Registrar.class})注解组成,导入注册的starter等内容

3、@ComponentScan,扫描,默认从启动类所在包开始扫描,扫描@Controller @Service @Component @Repository 所修饰的类,创建Bean,存入Bean工厂

SpringApplication.run(启动类.class,args); 启动加载进来的组件---tomcat

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/872134.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-13
下一篇2022-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存