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
- 基本使用
- Full模式与Lite模式
- 实例
- 最佳实战
- 配置类组件之间无依赖关系用Lite模式加速容器启动过程,减少判断
- 配置类组件之间有依赖关系,方法会被调用得到之间单实例组件,用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