怎样手机做网站教程,什么软件可以搜索关键词精准,给别人做网站挣钱吗,wordpress安装插件ftp学习目标 基于SpringBoot框架的程序开发步骤 熟练使用SpringBoot配置信息修改服务器配置 基于SpringBoot的完成SSM整合项目开发
一、SpringBoot简介
1. 入门案例
问题导入
SpringMVC的HelloWord程序大家还记得吗#xff1f; SpringBoot是由Pivotal团队提供的全新框架…学习目标 基于SpringBoot框架的程序开发步骤 熟练使用SpringBoot配置信息修改服务器配置 基于SpringBoot的完成SSM整合项目开发
一、SpringBoot简介
1. 入门案例
问题导入
SpringMVC的HelloWord程序大家还记得吗 SpringBoot是由Pivotal团队提供的全新框架其设计目的是用来简化Spring应用的初始搭建以及开发过程 原生开发SpringMVC程序过程 1.1 入门案例开发步骤
手动创建方式
①新建maven项目 ②引入依赖 ③创建引导类 ③开发控制器类
RestController
RequestMapping(/books)
public class BookController {GetMapping(/{id})public String getById(PathVariable Integer id) {System.out.println(id id);return hello , spring boot! ;}
}④运行自动生成的Application类 SpringBoot脚手架方式
①创建新模块选择Spring初始化并配置模块相关基础信息 ②选择当前模块需要使用的技术集 ③开发控制器类
RestController
RequestMapping(/books)
public class BookController {GetMapping(/{id})public String getById(PathVariable Integer id) {System.out.println(id id);return hello , spring boot! ;}
}④运行自动生成的Application类 最简SpringBoot程序所包含的基础文件
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.5.0/version/parentgroupIdcom.itheima/groupIdartifactIdspringboot-01-quickstart/artifactIdversion0.0.1-SNAPSHOT/versiondependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependencies
/project
SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}Spring程序与SpringBoot程序对比 注意事项
基于idea开发SpringBoot程序需要确保联网且能够加载到程序框架结构
1.2 基于SpringBoot官网创建项目 1.3 SpringBoot项目快速启动
① 对SpringBoot项目打包执行Maven构建指令package
② 执行启动指令
java -jar springboot_01_quickstart.jar # 项目的名称根据实际情况修改注意事项
jar支持命令行启动需要依赖maven插件支持请确认打包时是否具有SpringBoot对应的maven插件。
buildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins
/build2. SpringBoot概述
问题导入
入门案例中没有引入spring-webmvc等依赖包没有配置Tomcat服务器为什么能正常启动我们没有配置端口号为什么端口是8080
2.1 起步依赖
starter SpringBoot中常见项目名称定义了当前项目使用的所有项目坐标以达到减少依赖配置的目的
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.5.0/version/parentgroupIdcom.itheima/groupIdartifactIdspringboot-01-quickstart/artifactIdversion0.0.1-SNAPSHOT/versiondependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependencies
/projectproject xmlnshttp://maven.apache.org/POM/4.0.0xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancemodelVersion4.0.0/modelVersiongroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion2.5.0/versionpackagingpom/packagingpropertiesservlet-api.version4.0.1/servlet-api.version .../properties
/project
parent 所有SpringBoot项目要继承的项目定义了若干个坐标版本号依赖管理而非依赖以达到减少依赖冲突的目的spring-boot-starter-parent2.5.0与 spring-boot-starter-parent2.4.6共计57处坐标版本不同
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancemodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion2.5.0/version/parentartifactIdspring-boot-starter-parent/artifactIdpackagingpom/packaging ...
/project实际开发 使用任意坐标时仅书写GAV中的G和AV由SpringBoot提供如发生坐标错误再指定version要小心版本冲突
dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion${junit.version}/version
/dependency
dependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion${servlet-api.version}/version
/dependency?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.5.0/version/parentdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependencies
/project
2.2 默认配置
tomcat默认配置了端口号为8080 二、基础配置
1. 配置文件格式
问题导入
框架常见的配置文件有哪几种形式
1.1 修改服务器端口
http://localhost:8080/books/1 http://localhost/books/1
SpringBoot提供了多种属性配置方式
application.properties
server.port80application.yml
server:port: 81application.yaml
server:port: 821.2 自动提示功能消失解决方案
操作步骤 1.3 SpringBoot配置文件加载顺序了解
application.properties application.yml application.yaml
注意事项
SpringBoot核心配置文件名为applicationSpringBoot内置属性过多且所有属性集中在一起修改在使用时通过提示键关键字修改属性
2. yaml
问题导入
什么是yaml和properties有什么区别
YAMLYAML Ain’t Markup Language一种数据序列化格式优点 容易阅读容易与脚本语言交互以数据为核心重数据轻格式 YAML文件扩展名 .yml主流.yaml
2.1 yaml语法规则
大小写敏感属性层级关系使用多行描述每行结尾使用冒号结束使用缩进表示层级关系同层级左侧对齐只允许使用空格不允许使用Tab键属性值前面添加空格属性名与属性值之间使用冒号空格作为分隔#表示注释核心规则数据前面要加空格与冒号隔开
2.2 yaml数组数据
数组数据在数据书写位置的下方使用减号作为数据开始符号每行书写一个数据减号与数据间空格分隔 2.3 yaml数据读取
使用Value读取单个数据属性名引用方式${一级属性名.二级属性名……} 封装全部数据到Environment对象 自定义对象封装指定数据【常用】
public class Enterprise {private String name;private Integer age;private String tel;private String[] subject;//自行添加getter、setter、toString()等方法
}自定义对象封装数据警告解决方案 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional
/dependency3. 多环境开发配置
问题导入
在实际开发中项目的开发环境、测试环境、生产环境的配置信息是否会一致如何快速切换
3.1 多环境启动配置
yaml文件多环境启动 properties文件多环境启动
#主启动配置文件 application.properties
spring.profiles.activepro#环境分类配置文件 application-pro.properties
server.port80#环境分类配置文件 application-dev.properties
server.port81#环境分类配置文件application-test.properties
server.port823.2 多环境启动命令格式
带参数启动SpringBoot
java –jar springboot.jar --spring.profiles.activetest
java –jar springboot.jar --server.port88
java –jar springboot.jar --server.port88 --spring.profiles.activetest参数加载优先顺序 参看文档https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config 3.3 多环境开发控制
Maven与SpringBoot多环境兼容步骤
①Maven中设置多环境属性
profilesprofileiddev_env/idpropertiesprofile.activedev/profile.active/propertiesactivationactiveByDefaulttrue/activeByDefault/activation/profileprofileidpro_env/idpropertiesprofile.activepro/profile.active/properties/profileprofileidtest_env/idpropertiesprofile.activetest/profile.active/properties/profile
/profiles②SpringBoot中引用Maven属性 ③执行Maven打包指令
Maven指令执行完毕后生成了对应的包其中类参与编译但是配置文件并没有编译而是复制到包中 解决思路对于源码中非java类的操作要求加载Maven对应的属性解析${}占位符
④对资源文件开启对默认占位符的解析
buildpluginspluginartifactIdmaven-resources-plugin/artifactIdconfigurationencodingutf-8/encodinguseDefaultDelimiterstrue/useDefaultDelimiters/configuration/plugin/plugins
/buildMaven打包加载到属性打包顺利通过 4. 配置文件分类
问题导入
SpringBoot的配置文件可以放在项目的哪些地方 java –jar springboot.jar --spring.profiles.activetest --server.port85 --server.servlet.context-path/heima --server.tomcat.connection-timeout-1 ... ...SpringBoot中4级配置文件 1级 file config/application.yml 【最高】 2级 file application.yml 3级classpathconfig/application.yml 4级classpathapplication.yml 【最低】 作用 1级与2级留做系统打包后设置通用属性 3级与4级用于系统开发阶段设置通用属性
三、整合第三方技术
1. 整合JUnit
问题导入
回忆一下Spring整合JUnit的步骤
1.1 Spring整合JUnit复习 1.2 SpringBoot整合JUnit
【第一步】添加整合junit起步依赖(可以直接勾选)
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope
/dependency【第二步】编写测试类默认自动生成了一个
SpringBootTest
class Springboot07JunitApplicationTests {Autowiredprivate BookService bookService;Testpublic void testSave() {bookService.save();}
}2. 基于SpringBoot实现SSM整合
问题导入
回忆一下Spring整合MyBatis的核心思想
2.1 Spring整合MyBatis复习
SpringConfig 导入JdbcConfig导入MyBatisConfig
Configuration
ComponentScan(com.itheima)
PropertySource(classpath:jdbc.properties)
Import({JdbcConfig.class, MyBatisConfig.class})
public class SpringConfig {}JDBCConfig 定义数据源加载properties配置项driver、url、username、password
#jdbc.properties
jdbc.drivercom.mysql.jdbc.Driver
jdbc.urljdbc:mysql://localhost:3306/spring_db
jdbc.usernameroot
jdbc.passworditheimapublic class JdbcConfig {Value(${jdbc.driver})private String driver;Value(${jdbc.url})private String url;Value(${jdbc.username})private String userName;Value(${jdbc.password})private String password;Beanpublic DataSource getDataSource() {DruidDataSource ds new DruidDataSource();ds.setDriverClassName(driver);ds.setUrl(url);ds.setUsername(userName);ds.setPassword(password);return ds;}
}
MyBatisConfig 定义SqlSessionFactoryBean定义映射配置
Bean
public SqlSessionFactoryBean getSqlSessionFactoryBean(DataSource dataSource) {SqlSessionFactoryBean ssfb new SqlSessionFactoryBean();ssfb.setTypeAliasesPackage(com.itheima.domain);ssfb.setDataSource(dataSource);return ssfb;
}Bean
public MapperScannerConfigurer getMapperScannerConfigurer() {MapperScannerConfigurer msc new MapperScannerConfigurer();msc.setBasePackage(com.itheima.dao);return msc;
}2.2 SpringBoot整合MyBatis
SpringBoot整合Spring不存在SpringBoot整合SpringMVC不存在SpringBoot整合MyBatis主要
①创建新模块选择Spring初始化并配置模块相关基础信息 ②选择当前模块需要使用的技术集MyBatis、MySQL ③设置数据源参数
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/ssm_db?serverTimezoneUTCusername: rootpassword: roottype: com.alibaba.druid.pool.DruidDataSource注意事项
SpringBoot版本低于2.4.3(不含)Mysql驱动版本大于8.0时需要在url连接串中配置时区或在MySQL数据库端配置时区解决此问题
jdbc:mysql://localhost:3306/ssm_db?serverTimezoneUTC④定义数据层接口与映射配置
Mapper
public interface UserDao {Select(select * from tbl_book where id#{id})Book getById(Integer id);
}⑤测试类中注入dao接口测试功能
SpringBootTest
class Springboot08MybatisApplicationTests {Autowiredprivate BookDao bookDao;Testpublic void testGetById() {Book book bookDao.getById(1);System.out.println(book);}
}2.3 案例-SpringBoot实现ssm整合
【第一步】创建SpringBoot工程添加druid依赖
!-- todo 1 添加druid连接池依赖--
dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.2.6/version
/dependency【第二步】复制springmvc_ssm各种资源(主java类、页面、测试类)
【第三步】删除config包中的所有配置在BookDao接口上加Mapper注解
//todo 3 在BookDao接口上加Mapper注解让SpringBoot给接口创建代理对象
Mapper
public interface BookDao {//...
}【第四步】将application.properties修改成application.yml配置端口号和连接参数
server:port: 80
# todo 4 配置数据库连接参数
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/ssm_dbusername: rootpassword: roottype: com.alibaba.druid.pool.DruidDataSource【第五步】修改BookServiceTest配置类进行配置
// todo 5 修改单元测试类添加SpringBootTest主键修复Test注解导包
SpringBootTest
public class BookServiceTest {Autowiredprivate BookService bookService;Testpublic void testGetById(){Book book bookService.getById(2); //传递参数1会抛出异常System.out.println(book);}Testpublic void testGetAll(){ListBook all bookService.getAll();System.out.println(all);}
}【第六步】在static目录中提供index.html页面跳转到pages/books.html
scriptlocation.hrefpages/books.html
/script最后运行引导类即可访问
name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/ssm_db username: root password: root type: com.alibaba.druid.pool.DruidDataSource **【第五步】修改BookServiceTest配置类进行配置**java
// todo 5 修改单元测试类添加SpringBootTest主键修复Test注解导包
SpringBootTest
public class BookServiceTest {Autowiredprivate BookService bookService;Testpublic void testGetById(){Book book bookService.getById(2); //传递参数1会抛出异常System.out.println(book);}Testpublic void testGetAll(){ListBook all bookService.getAll();System.out.println(all);}
}【第六步】在static目录中提供index.html页面跳转到pages/books.html
scriptlocation.hrefpages/books.html
/script最后运行引导类即可访问