【01】项目开发环境搭建

1.环境说明

1.1 IDEA的版本

可在官网上查询相应的版本进行下载。

1.2 Mysql的版本

可以使用最新版本的mariadb,建议使用5.5版本,最好不要使用最新版的Mysql8.0版本。

2 IDEA环境配置

2.1 IDEA环境搭建参考PPT

D:\天翼云盘下载\第三阶段课前资料

2.2 IDEA关于版本的说明

2.2.1 社区版本

说明:社区版本没有Spring/JS/HTML的支持,需要针对SpringBoot安装特定的插件——Spring Assistant。
11

2.2.2 正式版本

说明:正式版本中,自带了SpringBoot的插件,所以无需再安装。
2

2.3 Lombok插件的安装

说明:当创建一个实体对象时,必须写get/set/toStriing/构造/equals/hash等方法,为了优化上述操作,则引入lombok插件,通过相应的注解可以自动为实体对象生成必要的方法。
22

2.4 SpringBoot项目入门

2.4.1 框架的作用

  1. Spring MVC的作用:接收用户提交的数据,返回服务器数据(交互)。
  2. Spring 的作用:整合其他的第三方框架,可以让程序调用以一种统一的方式进行调用(整合)。
  3. Mybatis 的作用:整合JDBC,方便用户与数据库进行交互(持久化)。
  4. Spring Boot 作用: 简化Spring等框架的操作(简化)。

2.4.2框架之间的关系

框架的关系

创建SpringBoot项目

2.5.1 创建项目

1

2.5.2 选择依赖

2

3 创建SpringBoot高级用法

3.1 关于maven坐标说明

3.1.0 maven常见命令

1

3.1.1 Maven常见命令说明

  • install项目打包命令
  • clean清空target文件目录
    注意事项:clean只会清空target文件目录的内容,而本地仓库的文件是不会清理的,所以每次项目打包都要重新install。

3.1.2 坐标

  <!--坐标的说明:  只要是一个Maven工程必然会有坐标-->
    <!--groupId 组ID: 公司域名倒写-->
    <groupId>com.jt</groupId>
    <!--项目名称 名称唯一-->
    <artifactId>springboot_demo1</artifactId>
    <!--版本: 可以自己指定-->
    <version>0.0.1-SNAPSHOT</version>

3.1.3 坐标的作用

  • 可以唯一标识项目的路径
  • 坐标是将来项目打包的位置
  • 修改jar包文件使得其可以被其他项目依赖使用

3.2 关于pom.xml文件的说明

3.2.1 知识铺垫

作为大型项目的开发,里面必然会引入很多的jar包文件(包括:公共第三方的jar包、自己公司的jar包等),由于jar包文件过多,就有可能会引发jar包文件冲突的问题。

3.2.2 parent标签的说明

2015年SpringBoot框架进入人们的视野,其中最为主要的是parent标签的定义,它是Spring官网负责维护,在其中定义了几乎所有框架与SpringBoot兼容的版本信息。
作用:集中定义版本号。

	<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

3.2.3 依赖(dependency)的作用

<!--依赖:项目中需要添加什么功能,就依赖于什么jar包-->
    <dependencies>
        <!--引入SpringMVC的功能-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--引入springboot的测试功能-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

3.2.4 build的作用

<build>
        <!--该插件是SpringBoot项目打包时必须添加的,如果没有该插件,则会导致jar包不能正常运行-->
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

3.3 关于SpringBoot配置文件的说明

3.3.1 properties文件说明

  • properties语法 是Key-Value结构

  • 基本写法 key=value 不要写多余的空格

  • properties 本身就是字符串的数据类型,所以无需添加’'号

  • 在properties中IDEA设定UTF-8,是IDEA读取的字符集编码,程序通过IO进行读取时,默认编码ISO-8859-1,所以中文必定乱码,需要设定字符集。

      spring.application.name=springboot_demo
      server.port=8090
      server.servlet.context-path=/springboot
    

3.3.2 yml文件说明

  • 数据结构 key-value结构
  • 写法 key:(加空格)value
  • yml文件有层级结构,注意父子级的语法的缩进
  • 属性和值大小写敏感,如果有特殊字符% & 记得用单引号(‘)包起来
  • yml文件程序默认读取时采用UTF-8编码
  server:
       port: 8090
     servlet:
       context-path: /api/path  #项目发布路径
  • 当SpringBoot程序启动时,该配置项会被Spring加载
  • yml文件的主要作用是:编辑SpringBoot与第三方框架的整合。

3.3.3 配置文件的加载顺序

如果同时存在yml和properties的配置文件,则会优先以yml的文件为主,properties为辅。假如,yml中某个配置属性的值不存在,则会去properties中进行获取。
配置文件读取的优先级

3.3.4 加载其他配置文件的顺序

  • 配置文件加载的优先级从低到高如下,高优先级的配置会覆盖低优先级的,互补配置:
    • 【1】classpath根目录下的配置文件

    • 【2】classpath根目录下的子目录config中的配置文件

    • 【3】项目根目录下的配置文件(当前项目是聚合或继承项目,即:父项目根目录)

    • 【4】项目根目录下的子目录config中的配置文件

    • 【5】直接子目录(服务器中多见这种命令行参数配置的方式:可以在运行jar的命令中指定加载某个路径下的配置文件)

      java -jar springbootdemo-0.0.1-SNAPSHOT.jar --spring.config.location=D:\config/
      

外部配置文件的加载顺序

3.3.5 Profile文件的加载

  • Profile是配置的意思,对于应用程序来说,不同的环境需要加载不同的配置文件。
  • SpringBoot框架提供了多profile管理的功能,我们可以使用profile的功能来区分不同的环境配置。
  • 多Profile文件:语法规则是application-{profile}.properties(.yaml/.yml)。
    • application-dev.yml
    • application-prod.yml
    • application-db.yml
    • application-xxljob.yml
  • 在主配置文件中指定使用某个profile文件
spring:
  profiles:
    active: prod,db,xxljob  #如果需要指定多个文件,可以使用逗号分隔

3.3.6 读取外部配置文件的方式

  • 1、注解加载

    • 在配置类上添加:@PropertySource(“classpath:xx.properties”)
    • 会与约定的配置文件进行互补(一定要指定.properties文件)
    	@SpringBootApplication
    	@PropertySource("classpath:appSource.properties")
    	public class SpringbootDemoApplication {
    	    public static void main(String[] args) throws IOException {
    	        SpringApplication.run(SpringbootDemoApplication.class,args);
    	    }
    	}
    
  • 2、设置属性:通过设置默认的配置文件

    • 会与约定的配置文件(即:application.(yml/properties))进行互补
    @SpringBootApplication
    public class SpringbootDemoApplication {
        public static void main(String[] args) throws IOException {
            SpringApplication application = new SpringApplication(SpringbootDemoApplication.class);
            //创建Properties
            Properties properties = new Properties();
            //通过当前类的ClassLoader加载配置文件
            InputStream inputStream = SpringbootDemoApplication.class.getClassLoader().getResourceAsStream("app.properties");
            //将输入流读取为properties对象
            properties.load(inputStream);
    
            //设置外部的配置文件
            application.setDefaultProperties(properties);
            application.run(args);
        }
    }
    
  • 约定配置文件(默认方式)

3.4 入门案例

3.4.1 案例要求

1.编辑HelloController类
2.请求路径:http://localhost:8090/hello
3.在客户端页面获取“欢迎使用SpringBoot”的字样

3.4.2 案例实现代码

/**
 * 历史:后端进行页面跳转时,一般使用Controller注解
 * 当下:前后端分离,页面不归后端管理,使用RestController
 * @RestController = @Controller + @ResponseBody
 */
@RestController
//@RequestMapping("//method/hello") 这代表通用的路径,单独的路径要写在某个方法上
public class HelloController {
    /*该注解与方法绑定 */
    @RequestMapping("/hello")
    public String helloController(){
        return "欢迎使用SpringBoot";
    }

3.4.3 创建启动类

@SpringBootApplication
public class Application{
	public static void main(String[] args){
		SpringApplication.run(Application.class,args);
	}
}

3.5 配置文件动态注入值

3.5.1 业务需求

  • 如果将数据写死在代码中,那么数据在发生变化时,就需要手动修改代码,如果以后有大量的需求,则对其扩展会造成极大不便。
  • 解决方案:动态为属性赋值。
  • 无论是yml还是properties的配置文件都支持使用如下的方式进行赋值。

3.5.2 yml方式为属性赋值

user:
  username: 张三
  age: 20
  birthday: 2002/12/24
  #  hobby: [打球,跑步,钓鱼]
  hobby:
    - 打球
    - 跑步
    - 钓鱼
#  friends:
#    朋友1 : 小明
#    朋友2 : 小花
#    朋友3 : 小张
  friends: {朋友1: 小明,朋友2: 小花,朋友3: 小张}

批量属性赋值:

@Component
@ConfigurationProperties(prefix = "user")
/*
 * @ConfigurationProperties:会告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
 * prefix = "user":设置使用配置文件中哪个配置属性下面的所有属性进行一一映射;
 * 它同时支持jsr-303数据校验:@Validated
 */
public class User {
    private String username;
    private Integer age;
    private Date birthday;
    private List<String> hobby;
    private Map<String, Object> friends;
 }

单个属性赋值

public class User{
    /**
     * 表达式:springel表达式,简称spel表达式
     * 语法: ${表达式内容}
     * 工作原理:
     * 容器:在内存中的一个存储大量数据的Map集合
     * 1.当SpringBoot程序启动时,首先加载application.yml的配置文件
     * 2.在程序加载key-value结构时,将数据保存到Map集合中(容器内部)
     * 3.利用Spel表达式,通过key,获取value,再为属性赋值。
     */
     //为属性赋值
    @Value("${user.username}")
    private String username;
    @Value("${user.age}")
    private Integer age;
    @Value("${user.birthday}")
    private Date birthday;
}

3.5.3 配置文件占位符

可以使用${xxx}来引用其他属性的值

user:
  username: ${random.value}
  age: ${random.int(10)}
  birthday: 2002/12/24
  address: ${user.username}的家在北京市海淀区太平镇36号

3.5.4 单独使用properties来赋值

首先,先将配置文件单独存放到某个目录下,再进行引用。

user.username=${random.uuid}
user.age=${random.int[10,30]}
user.birthday=2002/12/23
user.hobby= 打球,钓鱼
user.friends.f1= xiaoming
user.friends.f2= xiaohua
user.address= XIAN
@Component
@ConfigurationProperties(prefix = "user")
//这里对单独的配置文件进行引用赋值
@PropertySource("classpath:config/user.properties")
public class User {
    private String username;
    private Integer age;
    private Date birthday;
    private String address;
    private List<String> hobby;
    private Map<String, Object> friends;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值