目录
1.spring和springboot的区别
1. 框架 vs. 工具
- Spring:一个全面的Java框架,提供了丰富的功能(如IoC、AOP等),需要手动配置和管理。
- Spring Boot:基于Spring的框架,旨在简化Spring应用的创建和配置,提供开箱即用的配置。
2. 配置方式
- Spring:需要大量的XML或Java配置,配置复杂且繁琐。
- Spring Boot:采用约定优于配置,默认提供许多配置,减少了手动配置的需求。
3. 启动方式
- Spring:通常需要一个Servlet容器(如Tomcat)来部署和运行。
- Spring Boot:可以直接运行独立的Spring Boot应用,内嵌Servlet容器,简化了部署过程。
4. 项目结构
- Spring:项目结构不固定,开发者需要自行设计。
- Spring Boot:推荐的项目结构明确,有助于更快速地构建和管理项目。
5. 生态系统
- Spring:更为广泛,涵盖了众多模块和功能。
- Spring Boot:专注于快速开发和简化配置,常与Spring Cloud等工具结合使用。
2.SpringBoot2入门
1. 创建项目
- 使用Spring Initializr(https://start.spring.io/)生成项目:
- 选择项目类型(Maven或Gradle)。
- 选择Spring Boot版本(如2.x)。
- 添加所需的依赖(如Spring Web、Spring Data JPA等)。
- 点击“Generate”下载项目压缩包。
2. 项目结构
解压缩后,项目结构如下:
src
└── main
├── java
│ └── com
│ └── example
│ └── demo
│ └── DemoApplication.java
└── resources
├── application.properties
3. 编写主类
在DemoApplication.java
中,添加主方法:
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
4. 添加Controller
创建一个简单的REST Controller:
package com.example.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, Spring Boot!";
}
}
5. 配置应用
在application.properties
中进行基本配置:
server.port=8080
6. 启动应用
使用以下命令启动应用:
./mvnw spring-boot:run # Maven
# 或者
./gradlew bootRun # Gradle
7. 测试应用
在浏览器中访问 http://localhost:8080/hello
,您应该能看到 "Hello, Spring Boot!" 的响应。
8. 进一步学习
- 数据库集成:可以使用Spring Data JPA与数据库交互。
- 安全性:引入Spring Security进行安全控制。
- 微服务架构:结合Spring Cloud构建微服务。
3.了解自动配置原理
1. Spring Boot 特点
1.1 依赖管理
- 简化依赖管理:Spring Boot使用
spring-boot-starter
依赖管理来简化库的引入。通过starter
依赖,您可以轻松引入与特定功能相关的所有依赖,如Spring Web、Spring Data等。
1.2 自动配置
- 自动配置:Spring Boot可以根据项目中的依赖自动配置应用,减少手动配置的需求,提升开发效率。自动配置类通过条件注解进行控制。
2. 容器功能
2.1 使用注解完成容器功能
-
@Configuration
- 用于定义一个或多个
@Bean
方法的类,以表示Spring的配置类。
- 用于定义一个或多个
-
@Bean、@Component、@Controller
- @Bean:用于定义Spring管理的Bean,通常在
@Configuration
类中使用。 - @Component:用于标识一个Spring组件,Spring会自动扫描并注册。
- @Controller:用于定义一个控制器,主要用于处理请求。
- @Bean:用于定义Spring管理的Bean,通常在
-
@ComponentScan、@Import
- @ComponentScan:用于指定包路径,自动扫描并注册组件。
- @Import:用于导入其他配置类。
-
@Conditional
- 用于在满足特定条件时,才注册Bean。
2.2 原生配置文件引入
- @ImportResource
- 允许您导入传统的XML配置文件,使得Spring Boot可以与旧的Spring应用兼容。
3. 自动配置原理入门
3.1 引导加载自动配置类
- Spring Boot使用
@EnableAutoConfiguration
注解来启动自动配置,通过spring.factories
文件加载自动配置类。
3.2 按需开启自动配置项
- 您可以通过在
application.properties
或application.yml
文件中配置spring.autoconfigure.exclude
来排除特定的自动配置。
3.3 定制化修改自动配置
- 您可以自定义Bean以覆盖默认的自动配置,从而实现定制化。
3.4 最佳实践
- 熟悉自动配置原理和条件注解,可以更好地利用Spring Boot的强大功能。
4. 开发小技巧
4.1 Lombok
- Lombok是一个可以简化Java代码的库,通过注解生成常用的方法(如getter、setter、构造函数等),减少样板代码。
4.2 Spring Initializr
- Spring Initializr是一个在线工具,可以快速生成Spring Boot项目,选择依赖和项目配置,省去繁琐的手动设置。
4.3 DevTools
- Spring Boot DevTools提供热部署功能,支持自动重启和快速开发调试,提升开发效率。