Springboot笔记

边缘知识

tomcat服务器

tomcat是用java编写的服务器,在springboot中把tomcat的内容全部托管,因此可以使用tomcat服务器。但需要导入依赖tomcat-embed-core和spring-boot-starter-tomcat

同时tomcat也可以被其他的技术所替换,例如Jetty:spring-boot-starter-Jetty
例如:undertow
轻量级的项目可以尝试使用以下配置,tomcat负载能力较强!
剔除tomcat依赖,导入jetty依赖

springboot封装了这些技术,如果发现哪个技术不好用,直接改依赖就好了~~

REST风格开发(风格不是规范)

Representational State Transfer:表现形式状态转换——一种访问网络资源的格式

定义
常见访问行为

哪些不同?

例如:

  • 在controller包下的UserController类中,@RequestMapping有8种提交方式method,通过不同的提交方式来区分上图种的不同访问行为
  • 路径变量@PathVariable的格式要注意

简化操作

//Rest模式
@RestController
@RequestMapping("该BookController下的跟访问路径")
public class BookController {

    @GetMapping//可以带路径参数,没有可以不写
    public String getById(){
        System.out.println("springboot is running...");
        return "springboot is running...";
    }

}

yml配置

springboot——application-properties官方文档

“每一个配置对应的都是一种技术”

同时出现properties.yml.yaml时

  • 不同属性相互叠加
  • 相同属性优先级:properties>yml>yaml

yml yaml没有自动提示

弹提示的功能是springboot提供的,而不是idea提供的
链接:解决属性提示消失

yaml为什么优秀注:

  • IDEA处理yml文件可以使用tab
  • 不用加引号

单一取值@Value + SpEL

  • 只能在注册类中使用,例如@RestController下
  • 可能跟Lombok下的@value冲突

已经在application.yml文件中配置了

user1:
  name: 张家豪


users3: [{name:zhangsan,age:18},{name:lisi,age:17}]

users2:
  -
    name: zhangsan
    age: 18
  -
    name: lisi
    age: 17

那么可以在任意位置按如下操作取值

@Value("${name2[1].name}")//取出1号索引位的lisi
private String namexxx;//赋值给namexxx

在配置中引用配置

yml文件中

baseDir: d:/spring/springboot
tempDir: ${baseDir}/temp

转义解析

yml文件不需要加引号“” 如果加了引号,内容将被解析,比如

tempDir: "${baseDir}/temp"
会被转义出一个/t制表符

自动装配Environment

@Autowired
private Environment environment;

这样一来,所有配置信息都封装了,引用的时候用getProperties就可以取出

Spring的取数据方式:Bean绑定

Bean包下

@Component//注入容器,让这个bean成为spring管控的bean
@ConfigurationProperties(prefix = "user1")//前缀
//因为配置了
// user1:
//  name: 张家豪
//  age: 21
@Data//lombok下的的注解,提供get set等方法
public class UserBean {
    private String name;
    private int age;
}

controller包下

@Autowired
UserBean userBean;//实例化bean


@GetMapping("/test")
    public void beantest(){
        System.out.println(userBean);//当页面访问时,控制台输出
    }

Autowired和Bean注意点

这两个都是配套使用,Bean代表只有这一个单例并绑定配置文件的哪个前缀;Autowired是注入Bean实例
这个userBean实例只能在当前的controller层读取,不能在其他地方使用

阿里云镜像依赖

1,
2,http://start.aliyun.com点击next
里面有官方没有的国内开发的包

Maven坐标查找主站

www.mvnrepository.com

也能找到坐标

SSM整合

整合JUnit

  • @SpringBootTest支持@Autowired注入

  • Test依赖会自动生成

    @SpringBootTest//表示这是一个测试类
    class BootAjaxtestApplicationTests {

    //1,@Autowired注入要测试的对象

    @Test//各个Test方法
    void contextLoads() {
    //2,Test方法体中调用注入对象的方法或属性

    }

    @Test
    void contextLoads2() {
    }}

任意位置test(设置引导类)

如果更改了测试类的位置,那么需要修改为
@SpringBootTest(classes = 主类名.class)
即指明测试集的配置类是主类下的 or 这个测试类是主类的测试类

整合MyBatis

配置yml

spring:
  datasource:
    username: 账号(通常为root)
    password: 密码
    url: jdbc:mysql://localhost:3306/数据库名
    driver-class-name: com.mysql.cj.jdbc.Driver
  • url后可以接时区,utf-8等设置
  • mysql5.0驱动名去掉cj

Mybatis测试

dao层的使用

DAO层定义的接口可以添加一些方法,并且可以直接注入使用,如果不进行前后端交互,仅仅使用接口就可以了

链接:domain和dao层
domain类就是bean类
有dao和domain才能从数据库拿出来的数据编程bean,bean又可以通过ajax技术转为json和前端交互

@Mapper使其被容器识别到
@Mapper的作用是可以给mapper接口自动生成一个实现类,让spring对mapper接口的bean进行管理,并且可以省略去写复杂的xml文件
定义Dao接口

@Mapper
public interface YebDao {
    @Select("select * from t_joblevel where id = #{id}")
    public JobLevel getById(Integer id);
}

需要注入
注入,测试

@SpringBootTest//表示这是一个测试类
class BootAjaxtestApplicationTests {

	//1,@Autowired注入要测试的对象,Dao接口也可以注入
@Autowired
private YebDao yebDao;//可能会假报错,能正常运行
	//注入了Dao接口,可以使用Dao定义的@Select

	@Test
	void sql1() {
		System.out.println(yebDao.getById(1));
	}

}

整合MyBatis-Plus

这玩意是真的叼~
extends BaseMapper<>之后连sql都可以不用写了

1,添加坐标依赖

MyBatis-Plus是国内开发的,只能通过手动在pom.xml添加依赖

		<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.5.0</version>
		</dependency>

坐标查询方式在上面的两个大标题中

2,定义数据层接口于映射配置

@Mapper
public interface YebDao extends BaseMapper<JobLevel> {
   //继承BaseMapper,作用于JobLevel的Bean
}

3,MyBatisPlus可用的CRUD方法

包含了太多方法了,CRUD啥都有链接:方法使用示例

一定要关闭驼峰命名
mybatis-plus:
  configuration:
    # 是否开启自动驼峰命名规则(camel case)映射,
#    即从经典数据库列名 A_COLUMN(下划线命名) 
#    到经典 Java 属性名 aColumn(驼峰命名) 的类似映射
    map-underscore-to-camel-case: false

整合Druid

同样,德鲁伊是阿里开发的数据源(数据连接池)框架,需要在maven repository找坐标
选择启动器

<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.6</version>
</dependency>

/****************application.yml************/
#spring:
#  datasource:
#    username: root
#    password: zjh521418
#    url: jdbc:mysql://localhost:3306/yeb
#    driver-class-name: com.mysql.cj.jdbc.Driver
##    type: com.alibaba.druid.pool.DruidDataSource在标准配置下加这句,或下面

整合配置:
spring: 
  datasource:
    druid:
      username: root
      password: zjh521418
      url: jdbc:mysql://localhost:3306/yeb
      driver-class-name: com.mysql.cj.jdbc.Driver
#德鲁伊专用配置法

整合总结

  • 导入对应的starter依赖
  • 对非默认值的项进行配置

postman测试接口

https://www.postman.com/downloads/
教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值