目录
一、概述
SpringBoot的特性
1、起步依赖
2、自动配置
3、其他特性
二、入门程序
步骤
1、创建Maven工程
2、配置spirng-boot-stater-web起步依赖
3、编写Controller
4、提供启动类
启动
测试
三、信息配置
四、整合mybatis
1、引入依赖
2、配置信息
3、使用案例
一、概述
传统的spring项目需要使用到这些模块,但随着发展发现这样存在许多弊端,导入依赖繁琐,项目配置繁琐。
这些依赖不仅需要一个一个手动导入,而且还可能发生jar包冲突问题 。
配写xml文件,我们要在applicationcontext.xml核心配置文件中配置大量的bean对象
随着业务越来越复杂,需要配置的bean越来越多,项目就越来越繁琐
因此,springboot应运而生。
SpringBoot的特性
1、起步依赖
本质上就是一个Maven坐标,整合了完成一个功能所需的坐标
spring的pom依赖 springboot的起步依赖
这些原本都要放在pom文件中的依赖都被整合到了springboot的起步依赖中,其本质是利用了maven传递依赖的特性,
作用就是解决了配置繁琐的问题。
2、自动配置
遵循约定大于配置的原则,在boot程序启动后,一些bean对象会自动注入到ioc容器中,不需要手动生命,简化开发
spring配置mybatis springboot配置之mybatis
传统的mybatis在配置完mybatis的依赖后还需要配置两个bean,SqlSessionFactoryBean和MapperScannerConfigurer。但是使用springboot之后就自动帮你配置好了
3、其他特性
- 内置的Toncat、Jetty(无需配置WAR文件)
- 外部化配置
- 不需要XML配置(使用properties/yml配置)
二、入门程序
需求:使用Springboot开发一个web应用,浏览器发起请求/hello后,给浏览器返回字符串"hello world"
java主要是用来开发web应用,所以我们直接从web开始入门。
传统的spring完成这个需求
使用springboot只需要引入依赖,然后就可以写Controller了,就完成了需求
步骤
1、创建Maven工程
idea中左侧自带Spring Initializr可以直接创建项目,右侧完善信息
2、配置spirng-boot-stater-web起步依赖
创建后目录如下
其中蓝色标注的文件目录可以暂时删掉,这些文件是什么?
1、.mvn 文件夹:这是 Maven Wrapper 的存放位置,用于在没有全局安装 Maven 的情况下运行 Maven 项目。2、.gitignore 文件:用于指定应该被 Git 版本控制系统忽略的文件和目录。
3、HELP.md 文件:一个 Markdown 格式的文件,通常包含项目的帮助信息、说明和指南。
4、mvnw 文件:Maven Wrapper 的可执行脚本(Unix/Linux 系统),用于在项目中运行 Maven 命令。
5、mvnw.cmd 文件:Maven Wrapper 的可执行脚本(Windows 系统),用于在项目中运行 Maven 命令。
详情信息及删除后果看这里https://blog.csdn.net/T_Y_F_/article/details/131219011
3、编写Controller
注:@RestController = @Controller + @RequestBody
4、提供启动类
这里springboot会自动帮我们创建好这个启动类
至于以上两个类中的各个参数及注解代表什么意思可以看我之前写的spring入门文章,当然不理解也没关系,并不影响使用
目录的最终结构如下
注:启动类一定要和controller类放在同一个包下,否则后续发起请求时会报错
启动
出现tomcot部署在端口XXXX即代表启动成功
注:
假设出现这样的警告,是因为我们默认启动tomcat占用的端口号是8080,但此时他被别的进程占用了,导致了我们写的程序无法启动。
因此我们需要更改端口号, 在springboot默认创建的配置为application.properties,在文件中写
#端口号
server.port=8888
我们也可以改成application.yml(或yaml,都一样)格式文件,这样的话就要写成
#端口号
server:
port: 8888
注意yml(yaml)格式中,:和值中间有一个空格,不然识别不了
这两种格式的配置文件都可以使用,看个人习惯
不过yml使用了换行加缩进来表示层级关系,更加清晰,推荐使用
测试
在postman工具中(或者直接在网页上输也行)输入http://localhost:xxxx/hello
xxxx是你的端口号, /hello是你写的url
网页
三、信息配置
在传统的spring开发中,比如我们要使用阿里云服务,就要定义一个配置类。这样就与代码耦合度高了,以后想修改信息就得修改代码
我们更希望在不惊动代码的情况下完成信息配置,所以我们将配置信息写到yml(properties)中
但此时我们虽然编写完了配置信息,但是并没有获取信息,因为配置信息并不是像之前的bean一样。我们需要自己获取
使用@Value(" ${键名}")注解
如获取endpoint就是
@Value("${endpoint}")
public String endpoint;
但是这样还是很麻烦,如果有100个配置信息,那就得写100个@Value
因此,springboot提供了一个注解@Configrutionproperties(prefix="前缀")
这个注解要写在配置类上,这样就能自动获取"前缀"下的配置属性
如上面的例子,不同层级之间用“ . ”连接成一个就行
@ConfigurationProperties(prefix = "ali-yun.oss")
如果想在形参上使用,那么就是直接写在形参前面
@Bean
public Book book(@Value("${book.name}") String name,@Value("${book.price}" Integer price)){
Book book = new Book();
book.setName(name);
book.setSystem(system);
return book;
}
四、整合mybatis
1、引入依赖
mybatis是对数据库进行操作,因此需要引入两个依赖
<!-- mybatis的起步依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot</artifactId>
<version>3.0.1</version>
</dependency>
<!-- mysql的驱动依赖 -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
2、配置信息
spring:
datasource:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/springtest
username: root
password: 123456
url中最后一个是自己要使用的数据库,记得更改
mybatis已经在之前的博客中讲过了,这里不再讲述知识点
3、使用案例
随便创建一个数据库
为了方便排除查看bug,我们在添加几个配置
#开启驼峰命名
mybatis:
configuration:
mapUnderscoreToCamelCase: true
#打印日志信息
logging:
level:
com.wal: debug
驼峰命名就是,我们在数据库中的字段是book_id和book_name,而我们在创建其在java中的对应类的属性字段时并不想创建成book_id和book_name。java的开发规范应该是驼峰命名,即bookId和bookName。如果我们直接写成驼峰命名的话,数据库字段与实体类字段不一致,mybatis就无法识别。所以要在配置文件中开启驼峰命名转换,这样就可以在不一致的情况下使用了。
Mapper
public interface BookMapper {
@Select("select * from t_book where book_id = ${id}")
public Book findById(Integer id);
}
Service
@Service
public class BookServiceImpl implements BookService {
@Autowired
private BookMapper bookMapper;
@Override
public Book findById(Integer id) {
return bookMapper.findById(id);
}
}
Controller
@RestController
public class BookController {
@Autowired
private BookService bookService;
@RequestMapping("/findById")
public Book findById(Integer id){
return bookService.findById(id);
}
}
启动测试
由于我们在配置信息中配置了日志,所以会在控制台上打印出来日志
这个使springboot自带日志,如果觉得并不够详细,可以引入Lombok依赖日志、log4j2依赖日志,后面再讲。