SpringBoot 高级用法

一  关于配置文件语法说明

1.properties 语法说明

#数据结构: KEY-VALUE
#数据类型: String类型/Number数值
#语法:    1.key-value使用=号连接
#        2.不需要添加多余的""号
#        3.pro文件在IDEA中的编码格式UTF-8(手动可改)
#          pro文件在被程序读取时默认采用ISO-8859-1格式,中文必定乱码
#        4.key=value不要出现多余的空格
server.port=8090

2 YML 语法说明

#数据结构 key-value
#数据类型 String/Number
#语法:
#    1.key:(空格)value
#    2.key与key之间有层级关系,注意缩进
#    3.字符编码都采用UTF-8
#    4.可读性较pro文件 更加友好
server:
  port: 8090


二  YML为属性赋值

1.说明: Spring负责管理YML文件中的数据.

/**
 * 1.接收用户发起的请求
 * 2.响应用户JSON串数据
 *   1.@ResponseBody 可以将对象转化为JSON串
 *   2.如果返回值为String类型,则返回本身
 *   纠正: A.JSON串
 */
@RestController
public class HelloController {

    //private String day="1天";
    /**
     * 规则:从Spring容器根据key获取数据,之后为属性赋值
     * 语法: spel表达式    ${key}
     */
    @Value("${user.day}")
    private String day;

    @RequestMapping("/getMsg")
    public String getMsg(){

        return "这个雨下几天:"+day;
    }
}


三 Pro为属性赋值

1.说明原因为啥用Pro文件给属性赋值呢?

YML是SpringBoot的核心配置文件, 一般用来整合其他第三方框架,如果将大量的业务数据放到YML中不符合编码规范. 所以将业务数据写到Pro配置文件中.

@RestController
//spring容器启动时,动态添加配置文件 一般需要修改字符集
//关于注解赋值:  1.必须满足key-value结构
//             2.如果属性只有一个并且是value属性,则可以省略不写
//             3.如果还是乱码则检查IDEA pro字符集编码格式
@PropertySource(value="classpath:/person.properties",encoding="UTF-8")
public class HelloController {

    //private String day="1天";
    /**
     * 规则:从Spring容器根据key获取数据,之后为属性赋值
     * 语法: spel表达式    ${key}
     */
    @Value("${user.day}")
    private String day;
    @Value("${person.name}")
    private String name;

    @RequestMapping("/getMsg")
    public String getMsg(){

        return "这个雨下几天:"+day+name;
    }
}
3注意事项。添加@PropertySource(value="classpath:/person.properties",encoding="UTF-8")

四  关于注解赋值的说明

1.必须满足key-value结构 // 2.如果属性只有一个并且是value属性,则可以省略不写 // 3.如果还是乱码则检查IDEA pro字符集编码格式

五 为属性赋值意义

  1. 实现了.java文件与属性赋值的解耦
  2. 为了实现特定的业务的赋值.
  3. SpringBoot整合第三方框架时,如果需要额外的配置文件时,常常采用上述的操作实现. 方便扩展
    Redis为属性赋值操作

六Lombok使用

作用: 通过程序自动生成实体对象的get/set/toString/equals/hashCode等方法.
链式加载原理: 重写了POJO的set方法. 返回当前对象 this代表当前对象

 public User setId(Integer id) {
        this.id = id;
        return this;
    }

七检查Lombok注解是否生效及需要使用哪些注解

检查建:IDEA:ctrl+f12/ctri+7  eclipse   ctrl+o

八 关于Lombok面试问题(初级)

问题: lombok的使用需要在IDE中提前安装插件!!!,如果项目在Linux系统中部署发布.是否需要提前安装插件!!!
答案: 不要!!!
原因: lombok插件编译期有效.(编译期:由xxx.java文件编译为xxxx.class文件).在打包之前class文件中已经包含了set/get等方法,所以项目打包之后可以直接运行.无需安装插件!!!.

九 SpringBoot整合Mybatis

1. 导入数据库

a 检查数据库是否可用

说明: 正常的情况下mysql服务项 开机自启. 有时由于某种原因 导致数据库服务启动失败.
问题描述: 数据库链接报错.显示链接不可用.

检查项目:后台是否启动服务

b 数据库客户端工具-SqlYog

链接数据库 

c SqlYog用法

å¨è¿éæå¥å¾çæè¿°

d  数据库导入和导出

导出数据库: 将mysql中的数据库以 xxx.sql文件进行转储.
导入数据库: 读取xxx.sql文件 之后工具执行其中的sql,最终实现数据的导入功能.
说明: 上述的操作称之为数据库冷备份. 一般在生产环境下 为了保证数据的安全.一般都会定期冷备份.(周期3-7天左右) 一般一式3份. 数据库的冷备份是恢复数据最后有效的手段.
特点: 冷备份容易丢失数据. 热备份可以实现实时备份


å¨è¿éæå¥å¾çæè¿°

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
整理自尚硅谷视频教程springboot高级篇,并增加部分springboot2.x的内容 一、Spring Boot与缓存 一、JSR107 Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry 和 Expiry。 • CachingProvider定义了创建、配置、获取、管理和控制多个CacheManager。一个应用可 以在运行 期访问多个CachingProvider。 • CacheManager定义了创建、配置、获取、管理和控制多个唯一命名 的Cache,这些Cache 存在于CacheManager的上下文中。一个CacheManager仅被一个 CachingProvider所拥有。 • Cache是一个类似Map的数据结构并临时存储以Key为索引的值。一个 Cache仅被一个 CacheManager所拥有。 • Entry是一个存储在Cache中的key-value对。 • Expiry 每一 个存储在Cache中的条目有一个定义的有效期。一旦超过这个时间,条目为过期 的状态。一旦过期,条 目将不可访问、更新和删除。缓存有效期可以通过ExpiryPolicy设置。 二、Spring缓存抽象 Spring从3.1开始定义了org.springframework.cache.Cache 和 org.springframework.cache.CacheManager接口来统一不同的缓存技术; 并支持使用JCache(JSR- 107)注解简化我们开发; • Cache接口为缓存的组件规范定义,包含缓存的各种操作集合; • Cache接 口下Spring提供了各种xxxCache的实现;如RedisCache,EhCacheCache , ConcurrentMapCache 等; • 每次调用需要缓存功能的方法时,Spring会检查检查指定参数的指定的目标方法是否 已经被调用 过;如果有就直接从缓存中获取方法调用后的结果,如果没有就调用方法 并缓存结果后返回给用户。下 次调用直接从缓存中获取。 • 使用Spring缓存抽象时我们需要关注以下两点; 1、确定方法需要被缓存 以及他们的缓存策略 2、从缓存中读取之前缓存存储的数据 Cache 缓存接口,定义缓存操作。实现有:RedisCache、EhCacheCache、 ConcurrentMapCache等 CacheManager 缓存管理器,管理各种缓存(Cache)组件 @Cacheable 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存 @CacheEvict 清空缓存 @CachePut 保证方法被调用,又希望结果被缓存。 @EnableCaching 开启基于注解的缓存 keyGenerator 缓存数据时key生成策略 serialize 缓存数据时value序列化策略 @CacheConfig 抽取缓存的公共配置 三、几个重要概念&缓存注解 1、常用注解 2、常用参数 名字 位置 描述 示例 methodName root object 当前被调用的方法名 #root.methodName method root object 当前被调用的方法 #root.method.name target root object 当前被调用的目标对象 #root.target targetClass root object 当前被调用的目标对象类 #root.targetClass args root object 当前被调用的方法的参数列表 #root.args[0] 3、常用参数SPEL说明 名字 位置 描述 示例 caches root object 当前方法调用使用的缓存列表(如 @Cacheable(value= {"cache1","cache2"}) ), 则有两 个cache #root.caches[0].name argument name evaluation context 方法参数的名字. 可以直接 #参数 名 ,也可以使用 #p0或#a0 的形 式,0代表参数的索引; #iban 、 #a0 、 #p0 result evaluation context 方法执行后的返回值(仅当方法执 行之后的判断有效,如‘unless’ , ’cache put’的表达式 ’cache evict’的表达式 beforeInvocation=false ) #result 四、代码中使用缓存 1、搭建基本环境 1、导入数据库文件 创建出department和employee表 2、创建javaBean封装数据 3、整合MyBatis操作数据库 1.配置数据源信息 2.使用注解版的MyBatis; 1)、@MapperScan指定需要扫描的mapper接口所在的包
对于Spring Boot的高级查询,你可以使用Spring Data JPA来实现。Spring Data JPA是JPA规范的一个实现,它简化了数据库操作的编写,提供了更高级的查询功能。 下面是一些在Spring Boot中进行高级查询的常用方法: 1. 使用@Query注解:你可以在Repository接口的方法上使用@Query注解定义自己的查询语句。这允许你使用JPQL(Java Persistence Query Language)或者原生SQL来编写查询语句。 ```java @Repository public interface UserRepository extends JpaRepository<User, Long> { @Query("SELECT u FROM User u WHERE u.age > :age") List<User> findByAgeGreaterThan(@Param("age") int age); } ``` 2. 使用命名查询:你可以在实体类上使用@NamedQuery注解定义命名查询,在Repository接口中使用@NamedQuery注解引用该命名查询。 ```java @Entity @NamedQuery(name = "User.findByAgeGreaterThan", query = "SELECT u FROM User u WHERE u.age > :age") public class User { // ... } @Repository public interface UserRepository extends JpaRepository<User, Long> { List<User> findByAgeGreaterThan(@Param("age") int age); } ``` 3. 使用Specification:Specification是一种用于动态查询的方式,它允许你根据不同的条件来构建查询。你可以使用Specification来创建复杂的查询条件,例如多字段模糊搜索、多表关联查询等。 ```java @Repository public interface UserRepository extends JpaRepository<User, Long>, JpaSpecificationExecutor<User> { // ... } ``` 这些只是Spring Boot中进行高级查询的一些常用方法,具体选择哪种方法取决于你的需求和个人偏好。希望对你有所帮助!如果有任何疑问,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没伞的孩子努力奔跑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值