学完ssm框架后,开始着手学习springboot,下面是自己的一些总结和心得体会。
在new Module的时候不像原来创建maven工程,而要创建Spring Initializr工程:
package com.zqh.com.zqh.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author ZhangQihao
* Rest模式
*/
@RestController //相当与ResponseBody(直接返回字符串、包装对象) + Controller(自动创建javaBean)的结合体
@RequestMapping("/books")
public class BookController {
@GetMapping
public String getById(){
System.out.println("nb");
return "springboots is running!";
}
}
使用SpringMVC和Spring5中学到的注解:
@RestController //相当与ResponseBody(直接返回字符串、包装对象) + Controller(自动创建javaBean)的结合体。
@RequestMapping("/books"):注明跳转地址
@GetMapping:注明请求方式
直接启动即可返回结果。
为什么Springboot能够化繁为简,用少量的代码完成复杂的配置、工程配置的功能呢?
为了避免版本冲突的问题,SpringBoot整理出无数个技术版本搭配的列表,称之为parent。
注意:parent仅仅帮我们进行版本管理,不负责帮导入坐标。
在springboot框架中的pom.xml文件中,继承了一个parent坐标,它定义了若干个依赖管理,这样就不存在版本冲突了,减少依赖冲突。
org.springframework.boot
spring-boot-starter-parent
2.7.4
在实际开发时,对于依赖坐标的使用往往都有一些固定的组合方式,比如使用spring-webmvc就一定要使用到spring-web。对于这类情况,SpringBoot就把所有的技术使用的固定搭配格式都开发出来,帮助开发者减少依赖配置。
SpringBoot本身是为了加速Spring程序的开发的,而Spring程序运行的基础是需要创建自己的Spring容器对象(IoC容器)并将所有的对象交给Spring的容器管理,也就是一个一个的Bean。那还了SpringBoot加速开发Spring程序,这个容器还在吗?这个疑问不用说,一定在。
SpringApplication.run(SpringBootTest1Application.class, args)返回的对象,其实就是Spring的容器,其可以获取配置进去的bean,(比如上面例子中的BookController的bean对象),或者任意一个加了@Component等创建Bean对象实例的注解的类,都可以:
@PathVaribale注解:声明这个注解后的变量是来自于路径的。
在每个crud的方法上的@RequestMapping后,加上method = ...,设置相应的POST或者GET方式,就可以完成REST风格的数据提交。在SpringBoot中,可以用@PostMapping等注解来替代这一整行。
即:
@RequestMapping(methord = RequestMethod.POST)
//等于
@PostMapping
在resources目录下面有一个空白的文件,叫做application.properties。这是SpringBoot的专属配置文件,如果需要修改端口就直接输入要配置的属性关键字,通过设置键值对的形式修改配置信息。但实际配置中,使用yml格式的配置是使用最为广泛的:
语法的核心规则:数据前面要加空格与冒号隔开。数组内容用“-”表示,例如:
server:
port: 80
enterprise:
name: itcast
age: 16
tel: 4006184000
subject:
- Java
- 前端
- 大数据
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
username: root
password: root
若想返回其中的任何一条数据,比较常用的是先自动注入一个Environment的对象,然就就可以任意调用其中你想要调用的数据了。
若想返回其中的整个对象(比如上文中的datasource整体),那么就需要先创建datasource的包装类,并指定加载数据:
@ConfigurationProperties(prefix = "datasource") 的作用是,告诉这个包装类要加载的application里的哪个数据对象。
@RestController //相当与ResponseBody(直接返回字符串、包装对象) + Controller(自动创建javaBean)的结合体
@RequestMapping("/books")
public class BookController {
@Autowired
//用于读取全部数据
private Environment env;
@Autowired
private DataSource dataSource;
@GetMapping("/{id}")
public String getById(@PathVariable Integer id){
System.out.println("nb");
//返回任意一条
System.out.println(env.getProperty("enterprise.subject[0]"));
//返回整个对象(包装进实体)
System.out.println(dataSource);
return "springboots is running!";
}
注意要勾选SQL下的这两个(为了让springboot自动配置坐标)
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.2.2
以上自动导入
#1.配置相关信息
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/book
username: root
password: xxxxxx
package com.zqh.dao;
import com.zqh.domain.book;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.awt.print.Book;
/**
* @Author ZhangQihao
*/
@Mapper
public interface BookDao {
@Select("select * from tbl_book where id = #{id}")
public book getById(Integer id);
}
package com.zqh;
import com.zqh.dao.BookDao;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringBootVersion;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class SpringbootMybatisApplicationTests {
@Autowired
private BookDao bookDao;
@Test
void contextLoads() {
System.out.println(bookDao.getById(11));
}
}
创建过程同上,但要导入Druid的坐标,建议从mvcRepository上搜索Druid,复制进.pom文件中:
com.alibaba
druid-spring-boot-starter
1.2.13
#1.配置相关信息
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/book
username: root
password: 123456
type: com.alibaba.druid.pool.DruidDataSource
然后测试。