
目前使用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
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)