网站开发侵权,网络营销app有哪些,电子网站建设策划模板,网站一般要设计几页目录
一、SpringBoot 简介
1、Spring 的缺点
2、SpringBoot 功能
二、SpringBoot 入门案例
1、实现步骤
2、访问服务器
3、入门小结
4、Idea 快速构建 SpringBoot 工程
5、起步依赖无需版本号
6、主启动类的在项目中的位置#xff08;*重要*#xff09;
三、Sprin…目录
一、SpringBoot 简介
1、Spring 的缺点
2、SpringBoot 功能
二、SpringBoot 入门案例
1、实现步骤
2、访问服务器
3、入门小结
4、Idea 快速构建 SpringBoot 工程
5、起步依赖无需版本号
6、主启动类的在项目中的位置*重要*
三、SpringBoot 配置
1、配置文件分类
2、yaml 基本介绍
3、yaml 基本语法
4、yaml 数据格式
四、读取配置文件内容
1、Value
2、Environment 类
3、ConfigurationProperties
4、读取配置文件的问题汇总
五、Profile
1、为什么需要 profile
2、profile 的配置方式
3、profile 激活方式之多 profile 文件
4、profile 激活方式之 yml 多文档
5、虚拟机参数与命令行参数
6、激活 profile 问题汇总
7、项目内部配置文件加载顺序
六、SpringBoot 整合其他框架
1、整合 Junit
2、整合 Redis
3、整合 MyBatis演示注解开发
4、框架整合问题汇总 一、SpringBoot 简介
1、Spring 的缺点
1配置繁琐
Spring 的组件代码是轻量级的但是它的配置文件是重量级的。在思考 Spring 特性配置和解决业务问题之间需要进行思维切换所以编写配置挤占了编写程序的时间。
2依赖繁琐
自己导入 maven 很可能会导致依赖冲突还得自行判断版本号。
2、SpringBoot 功能
1自动配置核心
SpringBoot 的自动配置是一个运行时(更准确地说是应用程序启动时的过程考虑了众多因素才决定 Spring 配置应该用哪个不该用哪个。该过程是 SpringBoot 自动完成的。
2起步依赖核心
起步依赖本质上是一个 Maven 项目对象模型Project Object ModelPOM定义了对其他库的传递依赖这些东西加在一起即支持某项功能。简单的说起步依赖就是将具备某种功能的坐标打包到一起并提供一些默认的功能。
3辅助功能
提供了一些大型项目中常见的非功能性特性如嵌入式服务器、安全、指标健康检测、外部配置等。就比如 Tomcat 服务器不需要再手动配置了。
总的来说SpringBoot 提供了一种快速开发 Spring 项目的方式而不是对 Spring 功能上的增强。
二、SpringBoot 入门案例
搭建 SpringBoot 工程定义 HelloController.hello() 方法返回 ”Hello SpringBoot!”。
1、实现步骤
在整个步骤中不需要写一行配置没有引入 Tomcat 的插件。
1导入 SpringBoot 起步依赖
我的 JDK 是 16 版本只适合用 2.7.3根据自己的 JDK 版本选择。
!-- SpringBoot 需要继承的父工程 --
parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.7.3/version
/parentdependencies!-- web 开发的起步依赖 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- 测试 --dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope/dependency
/dependencies
2定义 Controller
需要注意的是由于我们没有定义视图解析器所以会导致 404。既然没有解析器和对应 html那么可以将返回值显示到 /hello 的页面上加上 ResponseBody 即可。
package com.demo.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;Controller
public class HelloController {RequestMapping(value /hello)ResponseBodypublic String hello() { // 在 /hello 页面输出 hello, springboot!System.out.println(/hello);return hello, springboot!;}
}3编写引导类
引导类一般以 Application 作为后缀。这是 SpringBoot 的入口。
package com.demo.application;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class HelloApplication {}4编写测试代码
测试类假的别用
public class HelloApplicationTest {Testpublic void test1() {SpringApplication.run(HelloApplication.class);}
}
在实际使用中我们需要在 main 方法中执行 run 方法因为服务器需要保持运行也就是在引导类中的 main 方法调用 run 方法
package com.demo.application;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class HelloApplication {public static void main(String[] args) {SpringApplication.run(HelloApplication.class, args);}
}2、访问服务器
当我们在 main 方法中调用 run 方法后该如何访问服务器呢
在输出的信息中其实有这么一些信息 显然 Tomcat 服务器已经在 8080 端口开放了直接访问即可。 3、入门小结
SpringBoot 在创建项目时使用 jar 的打包方式。SpringBoot 的引导类是项目入口运行 main 方法就可以启动项目。使用 SpringBoot 和 Spring 构建的项目业务代码编与方式完全一样。
4、Idea 快速构建 SpringBoot 工程
如果我们连工程需要引入什么样的依赖都不想自己动手写那么可以直接使用 SpringBoot 的生成器。但是需要一个联网环境。
1新建选择 SpringInitial
服务器 URL是 Spring 构建工程的服务器。 2直接选择我们需要的依赖 3项目结构 5、起步依赖无需版本号
在入门案例中我们写的 POM 文件里spring-boot-starter-web 是没有规定版本号的。
这是因为在 SpringBoot 的父工程里已经设定了大量的依赖的版本号这也是 SpringBoot 能防止依赖冲突的原因之一。
6、主启动类的在项目中的位置*重要*
这是非常重要的一个问题主启动类的位置决定了 SpringBoot 自动扫描的范围。
如果其他框架的包如 mapper不在主启动类的同目录、子目录下那么 SpringBoot 自动扫描是找不到其他框架的包的。要么将主启动类放置在父目录要么在主启动类中进行包扫描缺点就是各类框架扫描注解不一样
三、SpringBoot 配置
1、配置文件分类
SpringBoot是基于约定的所以很多配置都有默认值但如果想使用自己的配置替换默认配置的话就可以使用 application.properties 或者application.yml (application.yaml进行配置。yml 和 yaml 是一样的 1语法的大致区别
properties
prop.driver110
yaml
prop:port: 110
yaml 的缩进以及 : 后的空格都有讲究。
2简单使用
当我们在 properties 中将端口号修改为 8088就会发现可以从 8088 访问服务器了。 还可以配置自定义属性只不过需要我们手动加载这部分内容。
3加载顺序优先级
当 properties、yml、yaml 都存在 application 配置文件时加载顺序为
properties yml yaml
此时在低优先级中的同一个名称的属性就会失效。
2、yaml 基本介绍
YAML全称是YAML Aint Markup Language。
YAML是一种直观的能够被电脑识别的的数据数据序列化格式容易被人类阅读容易和脚本语言交互可以被支持 YAML 库的不同的编程语言程序导入YAML 文件的扩展名可以使用 .yml 或者 .yaml特点简洁以数据为核心 可以发现properties 不方便看出层级关系xml 能看出层级关系但是写标签繁琐yaml 只需要相同缩进就能得出层级关系。 3、yaml 基本语法 4、yaml 数据格式 1示例 2参数引用
使用 ${ } 可以引用其他对象。
四、读取配置文件内容
读取配置文件的方法有好几种
ValueEnvironment 类ConfigurationProperties
1、Value 具体使用https://blog.csdn.net/qq_31960623/article/details/116902786 1application.yml 文件
address:- beijing- wuhan- shanghaimyUser:name: wytage: 20hobby:- c- python- java:web: java \n webspring: spring \n springbootaddress: ${address[1]}
2Controller 代码
Value(value ${myUser.hobby[2].java.web})
private String web;Value(value ${myUser.hobby[2].java.spring})
private String spring;Value(value ${myUser.address})
private String address;RequestMapping(value /testAtValue)
ResponseBody
public String testAtValue(Value(value ${myUser.name}) String username) {System.out.println(username username);System.out.println(web web);System.out.println(spring spring);System.out.println(address address);return testAtValue;
}
3输出结果 4结果分析
从 web 和 spring 的获取中我们发现数组中的对象在使用 [ ] 后还需要 .点运算 才能的到对象从 web 和 spring 的输出来看单引号不会识别转义字符从 address 的获取来看yml 可以实现参数引用
2、Environment 类
从 Value 的使用中可以发现当参数很多时使用起来就非常麻烦要为每一个属性都加上 Value。而使用 Environment 只需要调用一个 getProperty() 方法就可以获取到配置参数。Environment 是 Spring 提供的直接 Autowired 注入即可。
1Controller 代码
Autowired
private Environment environment;RequestMapping(value /testEnvironment)
ResponseBody
public String testEnvironment() {for (int i 0; i 2; i) {System.out.println(address1 environment.getProperty(address[ i ]));}return testEnvironment;
}
3、ConfigurationProperties
使用这个注解可以将配置文件中的对象对应地注入到一个 POJO 对象中。
1编写 POJO 实体类
Component让 Spring 识别将其作为一个 bean 加入 IOC 中ConfigurationProperties(prefix person)设置一个前缀标识该 POJO 类的属性应该从 yml 的哪一个对象中获取值get 和 set 方法不要忘记了
package com.demo.pojo;import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;Component
ConfigurationProperties(prefix person)
public class Person {private String name;private Integer age;private String[] address;
}2application.yml 文件 3测试代码
Autowired
private Person person;RequestMapping(value /testConfiguration)
ResponseBody
public String testConfiguration() {System.out.println(name person.getName());System.out.println(age person.getAge());for (String s : person.getAddress()) {System.out.println(address s);}return testConfiguration;
}
4输出结果 5给 yml 添加提示功能
!-- 配置 配置文件的处理器 --
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional
/dependency
添加这个依赖后我们在 yml 中写配置信息时就可以得到提示。 4、读取配置文件的问题汇总
1username
或许有一个疑问在上面 Value 中的 yml 配置文件里为什么写 myUser而不是直接写个 user 呢
如果尝试过就知道输出 user.name得到的居然是个人操作系统当前的用户名。显然 user 作为了一个保留的关键字因此当我们以后实际开发中最好给 user 加上前缀。 像数据库连接池需要使用 username 时就要考虑这个问题了https://blog.csdn.net/weixin_48841931/article/details/126671315 2 ConfigurationProperties 前缀命名问题
prefix 的命名是由要求的。 https://blog.csdn.net/a2664181446/article/details/122581439 3ConfigurationProperties 添加后yml 还是没有提示
首先尝试重新 Build 项目根据报错信息进行 Googel。 其中一种原因是编码问题https://blog.csdn.net/gaogzhen/article/details/107348314 五、Profile
1、为什么需要 profile
我们在开发 SpringBoot 应用时通常同一套程序要经过好几个环节会被安装到不同的环境。
不同环境开发、联调、预发、正式等所需的配置不同如果每改变一个环境就更改配置不但麻烦修改代码、重新构建而且容易出错。
profile 的功能就是来进行动态配置切换的。
2、profile 的配置方式
1多 profile 文件方式properties也是多 yml 文件方式
2yml 多文档方式不是多 yml 文件方式
3、profile 激活方式之多 profile 文件
profile 的激活方式有三种配置文件、虚拟机参数、命令行参数。
下面以 配置文件 为例子说明 profile 激活。
1创建配置文件
配置各个环境下对应的 properties 配置文件并为他们设置不同的服务器端口 server.port xxxx。各后缀意义如下
develoment表示开发环境product表示生产环境test表示测试环境 2激活配置
当我们创建好这几个配置文件后启动 SpringBoot会发现服务器端口还是 8080。这是因为还没有激活任一配置。
在 application.properties 中使用 spring.profiles.active后缀就可激活指定的配置文件 为 development 设置端口为 8081 启动 SpringBoot此时端口已经改变 4、profile 激活方式之 yml 多文档
1创建配置文件
只需要一个 application.yml 即可在其中使用 --- 来区分不同的配置。每一个 --- 开头表示一个新的配置区域。spring.config.activate.on-profile 用来表示配置的名称作用于前面的“后缀”类似。旧版本使用 spring.profiles 来表示配置名称。 2激活配置
同样也是 spring.profiles.active 来激活指定配置。 3文件代码
---
server:port: 8081
spring:config:activate:on-profile: development
---
server:port: 8082
spring:config:activate:on-profile: product
---
server:port: 8083
spring:config:activate:on-profile: test
---
spring:profiles:active: development
4启动结果
激活 development 配置端口应为 8081。 5、虚拟机参数与命令行参数
1虚拟机参数
在 VM 选项中输入 -Dspring.profiles.active后缀即可激活对应配置。 2命令行参数
将我们当前的 SpringBoot 工程打包成 jar可以使用 maven 的 package在命令行窗口中先 cd 到 jar 的目录下然后运行命令java -jar xxx.jar --spring.profiles.activedevelopment 即可application.properties 和 appliaction.yml 都可以通过这种方式修改 spring.profiles.active 的值 6、激活 profile 问题汇总
1Demo-Profile-0.0.1-SNAPSHOT.jar中没有主清单属性
请确保 pom.xml 中有一下内容
buildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins
/build7、项目内部配置文件加载顺序 六、SpringBoot 整合其他框架
1、整合 Junit
1引入依赖
引入 SpringBoot 的起步依赖 test。引入 Junit。
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope
/dependency
dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdscopetest/scope
/dependency
2创建测试类一个 Service 3RunWith 注解作用
RunWith 就是一个运行器
RunWithJUnit4.class就是指用 JUnit4 来运行RunWithSpringJUnit4ClassRunner.class让测试运行于 Spring 测试环境以便在测试开始的时候自动创建 Spring 的应用上下文RunWithSuite.class的话就是一套测试集合
4SpringBootTest(classes 启动类名称.class)
基本等同于启动了整个服务此时便可以开始功能测试。
如果注解 SpringBootTest(classes 启动类名称.class) 中配置了项目启动类则 test 测试类可以放在 test 下任何包中 如果注解 SpringBootTest 没有配置参数 classes Application.class则需要确保 test 测试类在启动类的同目录或者子目录下网上一堆说是包路径一致的都是片面的 2、整合 Redis Redis5 安装https://github.com/tporadowski/redis/releases 1引入依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId
/dependency
2本机地址测试
先不配置远程使用本机测试。运行之前先启动 redis 本地服务器redie-server.exe
package com.demo.demoredis;import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;SpringBootTest
class DemoRedisApplicationTests {Autowired// 本机才不用配置端口等信息private RedisTemplate redisTemplate;Testvoid contextLoads() {}Testpublic void testSet() {redisTemplate.boundValueOps(name).set(wyt);}Testpublic void testGet() {System.out.println(redisTemplate.boundValueOps(name).get());}}3通过配置文件修改 ip 和 port
修改 properties 或者 yml 都可以。 3、整合 MyBatis演示注解开发
1引入 MyBatis 起步依赖、PostgreSQL 驱动依赖
MyBatis 起步依赖是由 MyBatis 官方编写的Spring 没有提供根据自己所用的数据库更改 SQL 驱动
dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.3.1/version
/dependencydependencygroupIdorg.postgresql/groupIdartifactIdpostgresql/artifactIdscoperuntime/scope
/dependency
2建立相关表信息 3配置数据源
在配置文件中配置数据源的四个参数driver、url、username、password。 4注解开发
注解开发则没有使用 Spring 配置文件mapper 接口可以用 Mapper 来识别Spring 配置文件中用包扫描的方式将所有 mapper 都生成了 bean 对象因此在这里用个 Repository 来标识
Mapper
Repository
public interface UserMapper {Select(select * from \MyUser\;)ListUser queryForAll();
}
5测试及其结果
Test
public void test() {ListUser userList userMapper.queryForAll();System.out.println(userList);
} 6注解开发小结
Fromhttps://blog.csdn.net/weixin_43591980/article/details/110043008参考https://blog.csdn.net/qq_40598321/article/details/117730759 4、框架整合问题汇总
1是否必须添加 RunWith 注解 其实不一定非要添加主要看导入的 Test 的包是哪一个https://www.bmabk.com/index.php/post/121982.html