首页 > 其他分享 >SpringBoot学习

SpringBoot学习

时间:2023-08-07 17:45:52浏览次数:39  
标签:SpringBoot spring 配置 boot 学习 组件 org

SpringBoot学习

1. SpringBoot入门

1.1 Springboot Web项目pom.xml基本配置

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.7.5</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	
	<dependencies>
		<!--启动器-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>


		<!--web依赖: tomcat,dispatcherServlet,xml....-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<!--spring-boot-starter所有依赖都是以此开头-->
		<!--单元测试-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<!--lombok-->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>

		<!--thymeleaf两个依赖-->
		<dependency>
			<groupId>org.thymeleaf</groupId>
			<artifactId>thymeleaf-spring5</artifactId>
		</dependency>
		<dependency>
			<groupId>org.thymeleaf.extras</groupId>
			<artifactId>thymeleaf-extras-java8time</artifactId>
		</dependency>

	</dependencies>

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


			<!--在这里修改版本-->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<version>2.4.3</version>
			</plugin>
			<!---->
		</plugins>
	</build>

1.2 主程序

//程序主入口不能删,不能改
@SpringBootApplication
//方法名(HelloworldApplication)可变
public class HelloworldApplication {

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

}

1.3 编写业务

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String handle(){
        return "Hello Spring Boot 2";
    }
}

1.4 测试

直接运行main方法

1.5 简化配置

application.properties

#核心配置文件
server.port=8081

#关闭模板引起的缓存
spring.thymeleaf.cache=false

1.6 简化部署

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


			<!--在这里修改版本-->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<version>2.4.3</version>
			</plugin>
			<!---->
		</plugins>
	</build>

把项目打成jar包,直接在目标服务器执行即可。

了解自动配置原理

1. SpringBoot特点

1.1 依赖管理

  • 父项目做依赖配置
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.7.5</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

他的父项目
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.7.5</version>
  </parent>
几乎声明了所有开发中常用的依赖的版本号,自动版本仲裁
  • 开发导入starter场景启动器
1.spring-boot-starter-*:*就某种场景 如:spring-boot-starter-web
2.可自定义Start属于高阶内容,地址网站也有介绍
SpringBoot官方所有支持的场景地址:https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.build-systems.starters
  • 无需关注版本号,自动版本仲裁
  • 可以修改版本号
  1.查看spring-boot-dependencies里面规定当钱依赖的版本用的key
  2.在当前项目里面重写配置

1.2 自动配置

  • 自动配好Tomcat

  • 自动配好SpringMVC

    • 引入SpringMVC全套组件
    • 自动配好SpringMVC常用组件(功能)
  • 自动配好Web常见功能,如:字符编码问题

    • SpringBoot帮我们配置好了所有web开发的常见场景
  • 默认的包结构

    • 主程序所在包及其下面的所有子包里面的组件都被默认扫描进来
    • 无需以前的包扫描配置
    • 想要改变扫描路径
      • @ComponentScan()
      • @SpringBootApplication(scanBasePackages = "com.learn")
    @SpringBootConfiguration
    @EnableAutoConfiguration
    @ComponentScan("com.learn.boot")
    等同于
    @SpringBootApplication
    
  • 各种配置拥有默认值

    • 默认配置最终都是映射到某个类上的
    • 配置文件的值最终会绑定某个类上,这个类会在容器中创建对象
  • 按需加载所欲偶自动配置项

    • 引入哪些场景,引入的场景会自动配置
    • SpringBoot所有自动配置功能都在

2. 容器功能

2.1 组件添加

1.@Configuration

  1. 基本使用
  2. Full模式与Lite模式
    1. 实例
    2. 最佳实战
      1. 配置类组件之间无依赖关系用Lite模式加速容器启动过程,减少判断
      2. 配置类组件之间有依赖关系,方法会被调用得到之间单实例组件,用Full模式
/**
 * 配置类里面使用@Bean标注在方法上给容器注册组件,默认也是单实例的
 */
@Configuration//告诉SpringBoot这是一个配置类 == 配置文件
public class MyConfig {
    @Bean//给容器中添加组件。以方法名作为组件的id,返回类型就是组件类型返回值就是组件在容器中的实例
    public User user(){
        return new User("zhangsan",18);
    }
}

2.@Bean:给容器中添加组件、@Component:代表组件、@Controller:代表控制器、@Service:代表业务逻辑组件、@Repository:代表数据库层组件

3.@ComponentScan:代表通过包扫描指定包扫描规则、@Import:给容器中导入组件

@Import({DBHelper.class}) 给组件中自动创建这个类想的组件,默认组件的名字就是全类名

4.@Conditional

​ 条件装配:满足Conditional指定的条件,则进行组件注入

5.ConfigurationProperties

​ 导入spring配置

2.2配置绑定

1.@ConfigurationProperties

2.@EnableConfigurationProperties + @ConfigurationProperties

3.@Component + @ConfigurationProperties

问题一:pom.xml中添加lombok后未生效

解决办法:沒辦法new對象 和使用getter setter的 要去IDEA左上角 File->setting->Plugins找lombok插件安裝

标签:SpringBoot,spring,配置,boot,学习,组件,org
From: https://www.cnblogs.com/lurenj/p/17612022.html

相关文章

  • springboot集成seata1.5.2+nacos2.1.1
    一、前言Seata出现前,大部分公司使用的都是TCC或者MQ(RocketMq)等来解决分布式事务的问题,TCC代码编写复杂,每个业务均需要实现三个入口,侵入性强,RocketMQ保证的是最终一致性。二、环境准备1、nacos:(这里采用最新版本2.1.1)下载地址:https://github.com/alibaba/nacos/releases......
  • 【狂神说Java】Java零基础学习笔记-Java数组
    【狂神说Java】Java零基础学习笔记-Java数组Java数组01:数组的定义数组是相同类型数据的有序集合.数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们.Java数组02:数组声明创建......
  • 李超线段树学习笔记
    用途李超线段树的用法非常固定,一般就是让你求对于给出的一些线段或直线中,对于某个x最大的y是那个。通常可以用于斜率优化。而其的时间复杂度是\(O(n\logn^2)\)思路注:下文默认是线段,因为直线也只用改一下就行了。我们建立一颗线段树,每个节点保存在当前区间,当x=mid时最大的......
  • LabView学习第一天
    一、LabView的三大特点1.图形编程2.并行性运行3..基于数据流二、LabView中常用的快捷键1.Ctrl+B删除断线2.Ctrl+E切换前后面板3.Ctrl+R开始测试程序4.Ctrl+S及时保存程序5.Ctrl+H选中需要查询的控件,按Ctrl+h,出现该控件的帮助文档三、LabView应用程序的构成1.所有的LabVi......
  • 如何用好Chatgpt学习——以IPV6举例
    一、如何用Chatgpt已经火了挺久,在学习中如何能把Chatgpt使用到极致。一个字就是问,两个字就是沟通,比如想要了解什么是ipv6,向Chatgpt提问,Chatgpt会给我们详细的介绍。如果还不了解,可以进一步追问,比如让chatgpt举例,或者探讨。二、ChatGPT的扩展应用在ChatGPT创建一些想法(你想象中的万......
  • springboot智能3D导诊系统源码,基于规则模板的开发原理
    互联网智慧3D导诊系统源码通过智能导诊,进行自助问询及挂号服务,减轻导诊台护士压力,挂号更加方便快捷。技术架构:springboot+redis+mybatisplus+mysql+RocketMQ  智慧导诊系统开发原理导诊系统从原理上大致可分为基于规则模板和基于数据模型两类。1、基于规则推理的方法通过人工建......
  • Springboot-Mybatis(idea)-自学笔记
    Spring-boot-Mybaties快速入门使用Mybatis查询所有用户数据准备工作(创建springboot工程,数据库表格user,实体类User)引入Mybatis的相关依赖,配置Mybatis(数据库连接信息)编写SQL语句(注解/XML)单元测试packagecom.example;importcom.example.mapper.UserMapper;impo......
  • mp-分页查询的学习
    使用limit关键字进行分页步骤:创建配置类,创建一个拦截器,在尾部添加limit实现分页然后创建IPage对象,利用Page实现IPage<User>page=newPage<>(1,3); 自定义分页查询:自己在resources中创建自定义查询方法,进行如下配置随后在对应的接口中将User类改为IPage IPage<User>......
  • SpringBoot3基础用法
    技术和工具「!喜新厌旧」一、背景最近在一个轻量级的服务中,尝试了最新的技术和工具选型;即SpringBoot3,JDK17,IDEA2023,Navicat16,虽然新的技术和工具都更加强大和高效,但是适应采坑的过程总是枯燥的;【环境一览】首先框架主体从SpringBoot2升级到SpringBoot3,Java基础环境从JDK8升......
  • SpringBoot3基础用法
    目录一、背景二、环境搭建1、工程结构2、框架依赖3、环境配置三、入门案例1、测试接口2、全局异常3、日志打印3.1日志配置3.2日志打印四、打包运行五、参考源码技术和工具「!喜新厌旧」一、背景最近在一个轻量级的服务中,尝试了最新的技术和工具选型;即SpringBoot3,JDK17,IDEA......