SpringBoot高级用法(一)

一、IDEA环境配置

1、 项目环境搭建

1.1)创建工程目录

说明:创建一个目录
操守:路径中不要出现中文/空格/特殊字符!!!
要求:目录不要与其他的项目嵌套!!!

1.2)创建工程目录

IDEA管理新的工作空间
使用File----Open 打开新的目录
使用File—New----Module 创建新的module
在这里插入图片描述

2、IDEA环境配置

2.1 )滚轮缩放

在这里插入图片描述

2.2 )设定自动提示

说明:配置该项之后,自动不区分大小写。
在这里插入图片描述

2.3 )设置参数提示

说明:设定之后方法中有参数提示。
在这里插入图片描述

2.4 )设置参数提示设定字符集编码格式

在这里插入图片描述

2.5 )IDEA自动编译

在这里插入图片描述

2.6)IDEA配置Maven
2.6.1)Maven 概括

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。

2.6.2)Maven基本命令

clean(清理)
test - 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
install -将包安装到本地仓库,给其他本地引用提供依赖。

2.6.3)本地仓库路径: 路径注意操守,不要嵌套

文件:settings文件 本地仓库路径/私服镜像地址
在这里插入图片描述

2.6.4)私服镜像服务器地址
<!--阿里云镜像-->
		<mirror>
	        <id>nexus-aliyun</id>
	        <mirrorOf>*</mirrorOf>
	        <name>Nexus aliyun</name>
	        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
	 	</mirror>
2.6.5)配置Maven

在这里插入图片描述

2.7 LomBok插件

Lombok插件 动态生成get/set/toString等功能
在这里插入图片描述
安装成功后
在这里插入图片描述

二、 SpringBoot 基本用法

1、 创建SpringBoot项目

1.1) 根据插件新建项目

在这里插入图片描述

1.2) 添加依赖

说明:只勾选web即可.
在这里插入图片描述

2、关于POM.xml文件报错说明

2.1)报当使用IDEA创建项目时,可能出现如下报错信息

在这里插入图片描述

2.2)SpringBoot报错解决方案一
父级版本报错
	当spring-boot-starter-parent下面的版本报红时并不是这个版本不存在.
	而是因为idea会默认缓存Maven本地仓库已存在的中的依赖项。
	解决方案就是我们清除一下缓存重新启动

在这里插入图片描述
在这里插入图片描述

2.2)SpringBoot报错解决方案二
插件版本报错说明 
	如果IDEA重启之后依然报错,则添加版本号解决该问题
	如果添加版本号之后,依赖没有解决,则暂时不管不影响代码执行
<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<version>2.5.1</version>
		</plugin>
	</plugins>
</build>

3、关于POM.xml文件说明

3.1) mave坐标说明
<!--项目maven的基本信息
        坐标:1.组ID 公司域名倒写
            2.项目名称 名称不能重复 不能数字开头
            3.项目版本
        坐标意义:
                1.主要用来用来管理/区分项目
                2.项目的打包路径就是坐标的位置.
    -->
    <groupId>com.jt</groupId>
    <artifactId>springboot_demo1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot_demo1</name>
    <description>Demo project for Spring Boot</description>
3.2)mave 命令
3.2.1)常规用法:
  1. 配置maven环境变量
  2. 通过dos命令窗口 执行命令. 几乎不用
    在这里插入图片描述
3.2.2)常规用法:

clean 清空项目编译之后的文件class(位于target目录中)
install 将项目中的target中的class进行打包 xxx.jar包
install 时会将测试类一同打包,所以需要注意代码正确性

3.2.3)跳过测试类打包,在pom文件中添加
<properties>
        <java.version>1.8</java.version>
        <!--跳过测试类打包-->
        <skipTests>true</skipTests>
    </properties>
3.3)maven打包没有生成target目录的说明

如果遇到上述的错误,则去本地仓库中根据项目路径,查找jar包,删除即可
在这里插入图片描述

3.4)pom文件中parent标签作用
 <!--
        定位: SpringBoot主要的作用整合SSM,使得框架的使用更加简化
        原则: "开箱即用"
        parent主要的作用:
               1.SpringBoot在内部兼容了当下几乎所有的第三方框架
               2.SpringBoot官网已经将所有兼容的版本进行了定义
                (几乎解决了版本冲突问题)以后几乎不写版本号
        概括: parent标签中管理其他的项目版本信息.
    -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.2</version>
        <relativePath/>
    </parent>
3.5)pom文件中dependency说明
<!--原则: 按需导入  -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <!--springboot启动项(器)在包的内部SpringBoot
            已经完成了项目的"整合"(配置) 用户拿来就用
            web导入SpringMVC
            -->
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

3.6) 插件说明
  <!--SpringBoot项目与Maven整合的一个插件
        可以通过插件 执行项目打包/测试/文档生成等操作
        注意事项: 该插件不能省略
        项目发布时: java -jar xxxx.jar  报错:没有主清单信息!!!!
    -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.5.2</version>
            </plugin>
        </plugins>
    </build>

三、SpringBoot 高级用法

1、关于配置文件语法说明

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

2、属性赋值

2.1)业务需求

说明: 如果将数据直接写死到.java文件中,如果需要修改,则重新编译打包,不方便,如何优化??
优化:通过配置文件动态为属性赋值!!!
在这里插入图片描述

2.2)yml文件为属性赋值
2.2.1)编辑YML配置文件

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

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

#添加业务数据   1.Spring负责管理维护数据.
user:
  day: 1天

2.2.2)Controller为属性赋值
package com.jt.controller;

import com.jt.pojo.User;
import com.jt.service.HelloService;
import com.jt.service.HelloServiceA;
import com.jt.service.HelloServiceB;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 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;
    @Value("${person.name}")
    private String name;

    @RequestMapping("/getMsg")
    public String getMsg(){
        return "这个雨下几天:"+day+name;
    }
   
}

2.3)Pro为属性赋值
2.3.1)需求说明

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

2.3.2)准备pro配置文件

在这里插入图片描述

2.3.3)编辑pro配置文件
package com.jt.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 1.接收用户发起的请求
 * 2.响应用户JSON串数据
 *   1.@ResponseBody 可以将对象转化为JSON串
 *   2.如果返回值为String类型,则返回本身
 *   纠正: A.JSON串
 */
@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;
    }
}

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

3、程序热部署

开发阶段:码农编码环节.,只对开发阶段有效
生产阶段:甲方将项目实际上线使用

3.1 )添加jar包
<!--支持热部署 -->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-devtools</artifactId>
	</dependency>
3.2 )IDEA配置

组合键: ctrl + shift + alt + / 或者 ctrl + alt + a
在这里插入图片描述
勾选热部署:
在这里插入图片描述

4、框架关系

在这里插入图片描述

5、Spring自动装配过程

5.1)Spring"容器"
说明: Spring容器是在内存中一大块的内存区域,存储Spring管理对象
数据结构: KEY-VALUE结构
数据类型: Map集合
Map详细说明:
	Key: 类型首字母小写 Value: 对象
5.2)依赖注入的原理

1、按照类型注入
按照属性的类型,去Map集中中查找是否有改类型的对象, 如果有则注入.

2、按照名称注入 ,根据属性的name,去Map集中中查找对应的KEY

@Autowired
    @Qualifier(value="李四")
    private SpringService springService;

自动装配的规则说明:
1.如果对象在进行实例化,如果对象中的属性被 @Autowired注解修饰,则说明应该先注入属性.
2.先根据属性的类型,查找Map集合中是否有该类型的对象.
3.如果根据类型查找没有找到,则根据属性的名称按照name查找对象.
4.如果上述的方式都没有找到,则报错实例化对象失败.

原则:Spring容器中要求 接口必须单实现, 如果有多实现则通过@Qualifier(“xxxx”)区分即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于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中进行高级查询的一些常用方法,具体选择哪种方法取决于你的需求和个人偏好。希望对你有所帮助!如果有任何疑问,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AimerDaniil

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

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

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

打赏作者

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

抵扣说明:

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

余额充值