网站建设 广,深圳做人工智能芯片的公司,上海的设计网站,wordpress poiplayer目录 一 SpringBoot简介1. 入门案例问题导入1.1 入门案例开发步骤1.2 基于SpringBoot官网创建项目1.3 SpringBoot项目快速启动 2. SpringBoot概述问题导入2.1 起步依赖2.2 辅助功能 二 基础配置1. 配置文件格式问题导入1.1 修改服务器端口1.2 自动提示功能消失解决方案1.3 Spri… 目录 一 SpringBoot简介1. 入门案例问题导入1.1 入门案例开发步骤1.2 基于SpringBoot官网创建项目1.3 SpringBoot项目快速启动 2. SpringBoot概述问题导入2.1 起步依赖2.2 辅助功能 二 基础配置1. 配置文件格式问题导入1.1 修改服务器端口1.2 自动提示功能消失解决方案1.3 SpringBoot配置文件加载顺序 2. yaml2.1 yaml语法规则2.2 yaml数组数据2.3 yaml数据读取 3. 多环境开发配置问题导入3.1 多环境启动配置3.2 多环境启动命令格式3.3 多环境开发控制 4. 配置文件分类问题导入 三 整合第三方技术1. 整合JUnit问题导入1.1 Spring整合JUnit1.2 SpringBoot整合JUnit 2. 基于SpringBoot实现SSM整合问题导入2.1 Spring整合MyBatis2.2 SpringBoot整合MyBatis2.3 案例-SpringBoot实现ssm整合 一 SpringBoot简介
1. 入门案例
问题导入
SpringMVC的HelloWord程序大家还记得吗
SpringBoot是由Pivotal团队提供的全新框架其设计目的是用来简化Spring应用的初始搭建以及开发过程原生开发SpringMVC程序过程
1.1 入门案例开发步骤
①创建新模块选择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
/projectSpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}Spring程序与SpringBoot程序对比 注意事项
基于idea开发SpringBoot程序需要确保联网且能够加载到程序框架结构
1.2 基于SpringBoot官网创建项目
官网https://start.spring.io/
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概述
问题导入
学习了SpringBoot入门案例之后感觉对比SpringMVC哪一个更加方便简洁
SpringBoot是由Pivotal团队提供的全新框架其设计目的是用来简化Spring应用的初始搭建以及开发过程Spring程序缺点 配置繁琐依赖设置繁琐 SpringBoot程序优点 自动配置起步依赖简化依赖配置辅助功能内置服务器……
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
/projectparent 所有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
/project2.2 辅助功能
SpringBoot程序启动
SpringBootApplication
public class Springboot01QuickstartApplication {public static void main(String[] args) {SpringApplication.run(Springboot01QuickstartApplication.class, args);}
}SpringBoot在创建项目时采用jar的打包方式SpringBoot的引导类是项目的入口运行main方法就可以启动项目使用maven依赖管理变更起步依赖项Jetty比Tomcat更轻量级可扩展性更强相较于Tomcat谷歌应用引擎GAE已经全面切换为Jetty
dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId!--web起步依赖环境中排除Tomcat起步依赖--exclusionsexclusiongroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-tomcat/artifactId/exclusion/exclusions/dependency!--添加Jetty起步依赖版本由SpringBoot的starter控制--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jetty/artifactId/dependency
/dependencies二 基础配置
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
YAMLYAML Ain’t Markup Language一种数据序列化格式优点 容易阅读容易与脚本语言交互以数据为核心重数据轻格式 YAML文件扩展名 .yml主流.yaml
2.1 yaml语法规则
大小写敏感属性层级关系使用多行描述每行结尾使用冒号结束使用缩进表示层级关系同层级左侧对齐只允许使用空格不允许使用Tab键属性值前面添加空格属性名与属性值之间使用冒号空格作为分隔#表示注释核心规则数据前面要加空格与冒号隔开
2.2 yaml数组数据
数组数据在数据书写位置的下方使用减号作为数据开始符号每行书写一个数据减号与数据间空格分隔
2.3 yaml数据读取
lesson: SpringBootserver:port: 80enterprise:name: itcastage: 16tel: 4006184000subject:- Java- 前端- 大数据使用Value读取单个数据属性名引用方式${一级属性名.二级属性名……} 封装全部数据到Environment对象 自定义对象封装指定数据【常用】
//封装yaml对象格式数据必须先声明当前实体类受Spring管控
Component
//使用ConfigurationProperties注解定义当前实体类读取配置属性信息通过prefix属性设置读取哪个数据
ConfigurationProperties(prefix enterprise)
public class Enterprise {private String name;private Integer age;private String tel;private String[] subject;Overridepublic String toString() {return Enterprise{ name name \ , age age , tel tel \ , subject Arrays.toString(subject) };}public String getName() {return name;}public void setName(String name) {this.name name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}public String getTel() {return tel;}public void setTel(String tel) {this.tel tel;}public String[] getSubject() {return subject;}public void setSubject(String[] subject) {this.subject subject;}
}RestController
RequestMapping(/books)
public class BookController {//使用Value读取单一属性数据Value(${lesson})private String lesson;Value(${server.port})private Integer port;Value(${enterprise.subject[0]})private String subject_00;//使用Environment封装全配置数据Autowiredprivate Environment environment;Autowiredprivate Enterprise enterprise;GetMapping(/{id})public String getById(PathVariable Integer id){System.out.println(lesson);System.out.println(port);System.out.println(subject_00);System.out.println(--------------------);System.out.println(environment.getProperty(lesson));System.out.println(environment.getProperty(server.port));System.out.println(environment.getProperty(enterprise.age));System.out.println(environment.getProperty(enterprise.subject[1]));System.out.println(---------------------);System.out.println(enterprise);return hello , spring boot!;}
}自定义对象封装数据警告解决方案
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional
/dependency3. 多环境开发配置
问题导入
在实际开发中项目的开发环境、测试环境、生产环境的配置信息是否会一致如何快速切换
3.1 多环境启动配置
yaml文件多环境启动
#设置启用的环境
spring:profiles:active: dev---
#开发(推荐写法)
spring:config:activate:on-profile: dev
server:port: 80
---
#生产(过时写法)
spring:profiles: pro
server:port: 81
---
#测试(过时写法)
spring:profiles: test
server:port: 82
---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.yml3级classpathconfig/application.yml4级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【第二步】编写BookService
public interface BookService {public void save();
}【第三步】编写BookServiceImpl
Service
public class BookServiceImpl implements BookService {Overridepublic void save() {System.out.println(book service is running...);}
}【第四步】编写测试类默认自动生成了一个
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.cj.jdbc.Driver
jdbc.urljdbc:mysql://localhost:3306/ssm_db?characterEncodingutf8useSSLfalseserverTimezoneAsia/ShanghairewriteBatchedStatementstrue
jdbc.usernameroot
jdbc.passwordrootpublic 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 dataSource(){DruidDataSource dataSource new DruidDataSource();dataSource.setDriverClassName(driver);dataSource.setUrl(url);dataSource.setUsername(username);dataSource.setPassword(password);return dataSource;}//Spring事务管理需要的平台事务管理器对象Beanpublic PlatformTransactionManager transactionManager(DataSource dataSource){DataSourceTransactionManager ds new DataSourceTransactionManager();ds.setDataSource(dataSource);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 ③pom文件
?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/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.itheima/groupIdartifactIdspringboot_08_mybatis/artifactIdversion0.0.1-SNAPSHOT/versionnamespringboot_08_mybatis/namedescriptionspringboot_08_mybatis/descriptionpropertiesjava.version1.8/java.version/propertiesdependenciesdependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.2.0/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdscoperuntime/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build
/project④创建Book实体类
public class Book {private Integer id;private String name;private String type;private String description;public Integer getId() {return id;}public void setId(Integer id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}public String getType() {return type;}public void setType(String type) {this.type type;}public String getDescription() {return description;}public void setDescription(String description) {this.description description;}Overridepublic String toString() {return Book{ id id , name name \ , type type \ , description description \ };}
}⑤定义数据层接口与映射配置
Mapper
public interface BookDao {Select(select * from tbl_user where id #{id})public Book getById(Integer id);
}⑥设置数据源参数
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/ssm_db?characterEncodingutf8useSSLfalseserverTimezoneAsia/ShanghairewriteBatchedStatementstrueusername: rootpassword: root⑦测试类中注入dao接口测试功能
SpringBootTest
class Springboot08MybatisApplicationTests {Autowiredprivate BookDao bookDao;Testpublic void testGetById() {Book book bookDao.getById(1);System.out.println(book);}
}⑧可以自定义数据源不添加则使用默认
添加druid依赖
dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.2.8/version
/dependency⑨修改数据源参数
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/ssm_db?characterEncodingutf8useSSLfalseserverTimezoneAsia/ShanghairewriteBatchedStatementstrueusername: rootpassword: root#可以自定义数据源type: com.alibaba.druid.pool.DruidDataSource2.3 案例-SpringBoot实现ssm整合
【第一步】创建SpringBoot工程添加druid依赖
?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/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.itheima/groupIdartifactIdspringboot_09_ssm/artifactIdversion0.0.1-SNAPSHOT/versionnamespringboot_09_ssm/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.2.0/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdscoperuntime/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency!--TODO 1 添加必要的依赖坐标--dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.2.8/version/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build
/project【第二步】复制springmvc_11_page工程各种资源(主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_db?characterEncodingutf8useSSLfalseserverTimezoneAsia/ShanghairewriteBatchedStatementstrueusername: 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最后运行引导类即可访问