欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

京淘实训Day05-SpringBoot加强

程序员文章站 2024-01-26 12:04:40
...

1.知识回顾

1.1SSM框架的回顾

1.1.1Spring框架作用

	1.框架: 在程序中为了 节省时间,将一些公共代码整合到一起形成了框架.
	2.框架的种类: 控制数据库的框架/控制页面流转/管理框架的框架...微服务框架(当下企业开发主流形式)
	3.Spring框架:管理第三方框架,使得程序在调用/开发中/浑然一体.

1.1.2Spring框架核心

1).设计思想: IOC 控制反转 由容器负责对象的创建,负责对象的生命周期
2).IOC解释: Spring在启动的时候,在内存中申请了一大块的内存空间,用来维护spring所管理的对象.

3).采用K-V的数据结构的方式,管理spring中的对象.

4).如果spring容器想要管理第三方的框架,利用(反射机制----->根据class实例化(新建)对象),之后按照规则将第三方的框架的对象使用MAP集合的形式进行数据的存储(对象生命周期).只要spring容器不关闭,则对象可以一直被人引用.

5).细节: Map<k:v> k是对象的唯一标识. v:被spring管理的对象.
例子: UserMapper接口如何被Spring容器管理的呢?
Map<userMappaer,userMapper接口的实例化对象>

6).DI: 依赖注入 @Autowried和@Resource
说明: 将spring容器中的对象,按照指定的规则进行注入.
注入方式: 1.根据key的方式进行注入
2.根据class类型的方式进行注入.
属性赋值方式: 一般利用Spring中的DI完成.
总结: spring中IOC和DI是一起使用的.缺一不可.

1.2SpringMVC框架作用

  1. SpringMVC说明:该框架是前台框架,主要的任务就是接收客户端提交的参数,同时在服务器中将业务处理完成之后,实现了页面跳转.
  2. 调用原理图:
    京淘实训Day05-SpringBoot加强
    请求说明:
    1).请求中一般包含用户提交参数.
    2).在响应中有2种返回值类型 1.JSON字符串 2.返回页面.

1.3Mybatis框架作用

  • 1.Mybatis作用:
    1).主要用来实现与数据库的交互. JAVA代码 -------Mybatis(JDBC)------ Mysql数据库
    2).可以利用对象的方式将数据进行封装. java代码 ------万物皆对象-------- 数据库记录
    数据库记录:
    京淘实训Day05-SpringBoot加强
    2).利用对象进行封装
public Class  User{
	private Integer id;
	private String name;
	private Integer age;
	private String sex;
}

2.STS安装

2.1STS介绍

1.下载地址:
京淘实训Day05-SpringBoot加强
2.JDK安装校验 JDK是java程序的运行环境
京淘实训Day05-SpringBoot加强
3.安装IDE(java代码开发)工具
说明: 通过如下的命令安装STS
命令:java -jar STSxxxxxxxxxxx.jar
安装完成之后:效果如下:
京淘实训Day05-SpringBoot加强
4.运行,输入地址
京淘实训Day05-SpringBoot加强

2.2安装报错说明

版本说明:
1.检查windows版本
京淘实训Day05-SpringBoot加强
2.检查JDK版本
京淘实训Day05-SpringBoot加强
3.JDK环境变量配置
京淘实训Day05-SpringBoot加强
4.sts效果展现
京淘实训Day05-SpringBoot加强

2.3STS环境配置

1).修改字符集编码格式
京淘实训Day05-SpringBoot加强
2).配置JDK环境变量
京淘实训Day05-SpringBoot加强
3).配置maven工具

3.1).引入maven 一站式的项目管理工具
京淘实训Day05-SpringBoot加强
3.2).添加maven配置文件
京淘实训Day05-SpringBoot加强
3.3).配置阿里云镜像

<!--阿里云镜像-->
		<mirror>
	        <id>nexus-aliyun</id>
	        <mirrorOf>*</mirrorOf>
	        <name>Nexus aliyun</name>
	        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
	 	</mirror>

4).关闭校验
京淘实训Day05-SpringBoot加强

3.SpringBoot框架

3.1新建SpringBoot项目

1).创建SpringBoot
京淘实训Day05-SpringBoot加强
2).编辑项目信息
京淘实训Day05-SpringBoot加强
3).选择组件
京淘实训Day05-SpringBoot加强

3.2编辑配置文件,解决STS整合SpringBoot问题

说明:修改POM.xml配置文件,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.3.0.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.jt.vip</groupId>
	<artifactId>springboot_demo_1</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>springboot_demo_1</name>
	<description>Demo project for Spring Boot</description>
	
	<!--引入新的配置  -->
	<properties>
		<java.version>1.8</java.version>
		<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
		<skipTests>true</skipTests>
	</properties>

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

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>

2).更新Maven项目:
报错说明:
京淘实训Day05-SpringBoot加强
更新操作:
京淘实训Day05-SpringBoot加强
3).启动测试:
京淘实训Day05-SpringBoot加强
4).启动效果 如果出现8080,则表示成功.
京淘实训Day05-SpringBoot加强

3.3SpringBoot-YML配置文件说明

#       2.缩进   代表层级关系
server:
  port: 8080      #tomcat服务器默认端口号都是8080
                  #类比: java运行环境JDK   
                  #      项目运行环境服务器(软件) tomcat
在这里插入代码片

3.4SpringBoot入门案例

package com.jt.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**自己编辑的包/类,应该是主启动类的子级. **/
@RestController		//将类交给Spring容器管理,同时启动SpringMVC框架
					//用来接收用户请求 该程序该类的返回值是JSON串/字符串
//@Controller			//返回的是页面名称
public class HelloController {

	/**
	 * 需求:  用户通过网址,获取服务器信息.
	 * url请求地址: http://localhost:8080/getMsg
	 * 			   http://通信协议名称
	 * 			   localhost:8080: 访问本地服务器   IP 127.0.0.1:端口
	 * 			   getMsg:  请求地址
	 * 参数: 页面提交给服务器的数据
	 * 返回值: 服务器做完业务处理之后,响应给客户的数据.
	 * 一次请求/一次响应  web规范
	 * 
	 * 报错的状态码:    404:请求地址服务器不能正确的匹配.
	 * 
	 * 
	 */
	
	/**
	 * 方法   1.访问修改符  public 
	 * 	    2.返回值类型 String   字符串
	 * 	    3.方法名称      getMsg    在一个类中方法名称及参数不能重复.
	 * 		4.方法体:   业务执行的逻辑及返回数据的定义.   
	 * @return
	 * 
	 * 重启服务器:  刷新内存数据.
	 */
	
	@RequestMapping("/getMsg")	//用来匹配用户的请求url地址的.
	public String getMsg() {
		
		return "您好JAVA,我是刘昱江";
	}
	
	/**
	 * 小作业:
	 * 	1.http://localhost:8080/getEat    询问你中午吃啥了??
	 *  2.http://localhost:8080/myLove    询问你爱谁????
	 */
	
	
}

3.5SpringBoot属性赋值

3.5.1 属性赋值的作用

说明:有时当类中的属性的值发生变化时,如果直接将代码写死到程序时,如果将来数据发生变化,则需要修改代码.
耦合性高.

3.5.2 @Value的方式为属性赋值

1).编辑YML配置文件

#语法       1.key: (空格)value  
#       2.缩进   代表层级关系
server:
  port: 8080      #tomcat服务器默认端口号都是8080
                  #类比: java运行环境JDK   
                  #      项目运行环境服务器(软件) tomcat

#YML配置文件在SpringBoot(Spring+SpringMVC等)程序中启动时 会被默认加载                  
#为属性赋值   如果操作时有红线则不管.
my:
  food: 番茄炒蛋     #k-v
  book: java编程思想

2).为属性赋值操作

@RestController	//说明返回值是json串
public class MsgController {
	
	//定义一个属性
	@Value("${my.food}")	//从容器中获取数据,之后完成赋值操作.
	private String food;	//变量
	@Value("${my.book}")
	private String book;
	
	@RequestMapping("/myMsg")
	public String myMsg() {
		
		return "我中午吃了:"+food+"|我读的书是:"+book;
	}
}

3).页面效果
京淘实训Day05-SpringBoot加强

3.5.3 利用properties文件管理数据.

说明:因为将所有的数据都保存到YML配置文件中时,会造成管理的混乱.所以需要pro文件进行单独的管理.并且如果有需要,可以准备多个pro文件.
1).创建pro文件
京淘实训Day05-SpringBoot加强
2).加载指定的pro文件,并且修改字符集编码格式
京淘实训Day05-SpringBoot加强
3).为属性赋值:

//@PropertySource(value="classpath:/properties/my.properties",encoding="UTF-8")
	@Value("${my2.food}")	//如果想要取值,必须先赋值.
	private String food2;
	@Value("${my2.book}")
	private String book2;
	
	
	@RequestMapping("/myMsg2")
	public String myMsg2() {
		
		return "我中午吃了:"+food2+"|我读的书是:"+book2;
	}

3.6程序热部署

说明:如果需要修改代码之后,程序可以自动的重启,则需要配置热部署
用法:引入jar包

<!--支持热部署 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
		</dependency>

3.7SpringBoot程序执行的原理

总结:SpringBoot启动启动时,必须包含的配置标签有3个.
<!--1.parent标签 jar包文件(工具) 
		通过parent标签,将springBoot中所有依赖的jar包,进行了统一的定义.
	 -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.3.0.RELEASE</version>	<!--2.3.0最新版本包  -->
		<relativePath /> <!-- lookup parent from repository -->
	</parent>

2).依赖标签

<!-- dependencies表示依赖. 需要什么包,添加什么依赖!!!! -->
	<dependencies>
	
		<!--原理: spring-boot-starter 启动器 代表者自动的配置和部署,可以直接使用
		其中的功能-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<!-- web表示springMVC框架  -->
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<!--支持热部署 只要添加了依赖包,则springBoot程序启动时,
		就会自动的加载运行. 对于用户而言,可以直接使用其服务.
		-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
		</dependency>
	</dependencies>

3).build标签

<!--build是负责项目打包部署  一般将项目开发完成之后,需要进行服务器部署(Linux)
	  -->
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

3.8LomBok插件配置

3.8.1LomBok插件作用

作用:为POJO对象生成get/set方法.简化代码的开发

//user表示实体对象 一般与数据库中的表进行关联.
public class User {
	//属性------数据库中的字段
	private Integer id;			//整数   一般用Integer/Long 区间>Integer
	private String name;		//String  一般写字符串
	private Integer age;
	private String sex;
	
	//一般都是添加set  为对象中的属性赋值   get:从对象中取值时使用.
	//如果需要动态的生成get/set方法,则可以使用lombok插件.
	
}

3.8.2引入jar包

<!--引入插件lombok 自动的set/get/构造方法插件 -->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>

3.8.3安装插件

1).lombok.jar包文件位置
京淘实训Day05-SpringBoot加强
2).根据坐标,查找lombok的位置
京淘实训Day05-SpringBoot加强

3).通过java 命令 执行 xxxx.jar

命令: java -jar lombok-1.18.12.jar
效果展现:
京淘实训Day05-SpringBoot加强
点击Install之后会提示代码执行成功!!!.

4.检查lomBok是否有效
说明:在STS的根目录中检查是否有lomBok的jar包文件
京淘实训Day05-SpringBoot加强
5).将STS开发工具重启.
检查STS是否可以正常启动.

3.8.4LOMBOK插件使用

//user表示实体对象 一般与数据库中的表进行关联.
@Data	//证明lombok引入成功
@Accessors(chain=true)	//链式加载
@NoArgsConstructor		//定义无参构造方法  如果什么都不写,默认添加无参构造
@AllArgsConstructor		//定义全参构造方法  如果添加了全参构造,必须先添加无参构造
						//为什么呢?  解释:乌龟的屁股!!!! 龟腚(规定)
public class User {
	//属性------数据库中的字段
	private Integer id;			//整数   一般用Integer/Long 区间>Integer
	private String name;		//String  一般写字符串
	private Integer age;
	private String sex;
	
	//一般都是添加set  为对象中的属性赋值   get:从对象中取值时使用.
	//如果需要动态的生成get/set方法,则可以使用lombok插件.
}

3.8.5LOMBOK测试案例

@RestController
public class UserController {
	
	@RequestMapping("/getUser")
	public User getUser() {
		//1.定义User对象
		User user = new User();		//无参构造
		user.setId(101)	//赋值操作有效
			.setName("tomcat猫")
			.setAge(18)
			.setSex("公");
		
		//2.利用构造方法(创建对象的方法)为user对象赋值
		User user2 = new User(102, "jerry", 17, "公");
		
		return user2;
	}
}

测试效果:
京淘实训Day05-SpringBoot加强

4.作业

1.将今天讲过的注解 整理成笔记(纸/word/text/xmind…)
2.Mybatis完成user表的 CRUD操作. (最好完成/不会留下作业记录 写写思路) 做!!!
目标:练习简单sql语句,mybatis用法
1.findAll() 查询所有的user表记录
2.insertUser() 新增user数据 user数据利用构造方法添加
3.deleteUserById() 根据Id值,删除user数据.
4.updateUserById() 根据Id值,修改user数据.

相关标签: 实训 java