Spring Boot(一)
SpringBoot
SpringBoot是一个集成了Spring技术栈的一个大整合,是一个简化了Spring应用开发的框架,可以一站式解决J2EE的开发流程。
回顾IoC(控制反转)与DI(依赖注入)
IOC控制反转,就是将对象的控制权交给Spring的IOC容器,由IOC容器创建及管理对象。IOC容器创建的对象称为bean对象。
声明bean的时候,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写。
使用以上四个注解都可以声明bean,但是在springboot集成web开发中,声明控制器bean只能用@Controller。
依赖注入,是指IOC容器要为应用程序去提供运行时所依赖的资源,而资源指的就是对象。
@Autowired注解,默认是按照类型进行自动装配的(去IOC容器中找某个类型的对象,然后完成注入操作)
@Autowired 与 @Resource的区别
@Autowired 是spring框架提供的注解,而@Resource是JDK提供的注解
@Autowired 默认是按照类型注入,而@Resource是按照名称注入
第一个SpringBoot应用
项目结构

静态资源存放
在SpringBoot项目中,静态资源默认可以存放的目录:
-
classpath:/static/
-
classpath:/public/
-
classpath:/resources/
-
classpath:/META-INF/resources/
classpath
项目中直接用相对路径的方式读取文件是不合适的,因为用户的工作目录未必一定是固定的。
classpath代表的是类路径,在maven的项目中,其实指的就是 src/main/resources 或者src/main/java,但是java目录是存放java代码的,所以相关的配置文件及静态资源文档,就放在 src/main/resources下。
static: 放置静态资源如js,css,image等内容
templates: 放置模板引擎(SpringBoot默认不支持Jsp),如freemarker,thymeleaf(官方推荐)
application.properties/application.yml: Spring Boot应用的配置文件;可以修改一些默认设置
-
根package:com.zyj.learn
-
SpringBoot要求main()方法所在启动类放在根package下
-
Application
@SpringBootApplication public class Application { public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); } }
-
核心注解
@SpringBootApplication
- 用来标注应用的主配置类。启动Spring Boot应用程序只需要对启动类加上一个注解@SpringBootApplication,相当于启动了自动配置和自动扫描,本质上是一个组合注解

- 修饰@SpringBootApplication的注解:
-
@SpringBootConfiguration可以看到@SpringBootConfiguration又被以下四个注解修饰:@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration -
@EnableAutoConfiguration@EnableAutoConfiguration本身被以下注解修饰,其作用在于让主配置类所在包下面的所有类的注解都可以扫描:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(EnableAutoConfigurationImportSelector.class) -
@ComponentScan
启动依赖/起步依赖
共同的特征:就是以 spring-boot-starter- 作为开头
spring-boot-starter-parent
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
</parent>
Spring Boot 的父级依赖。可以简单理解为一个“模板”,它为创建Spring Boot应用程序提供了一些预设的规则和配置。spring-boot-starter-parent也有父级依赖:spring-boot-dependencies(这里规定了很多依赖版本信息)
spring-boot-starter-parent的优点:
1. 自动管理依赖版本:自动管理Spring Boot相关依赖的正确版本,使用它之后,常用的包依赖可以省去 version 标签。
2. 预设的构建插件:提供了一些已经配置好的构建插件,比如编译Java代码的插件,运行测试的插件等。
3. 确保Spring Boot特性正常工作:确保Spring Boot的自动配置、微服务等特性可以正常使用,可以识别名字包含application以及特点后缀的配置文件。
4. 简化配置:很多常用的配置都已经为你设置好了,内置了maven工具。
spring-boot-starter-web
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
主要组件包括:
spring-web:提供Web应用程序的基础支持。
spring-webmvc:提供Spring MVC实现,用于构建RESTful web服务或模型-视图-控制器(MVC)应用程序。
其他相关库,如用于JSON处理的jackson-databind。
引入spring-boot-starter-web时,自动创建了:
ServletWebServerFactoryAutoConfiguration:自动创建一个嵌入式Web服务器,默认是Tomcat;
DispatcherServletAutoConfiguration:自动创建一个DispatcherServlet;
HttpEncodingAutoConfiguration:自动创建一个CharacterEncodingFilter;
WebMvcAutoConfiguration:自动创建若干与MVC相关的Bean。
spring-boot-starter-jdbc
这个启动器提供了构建使用JDBC(Java Database Connectivity)数据库操作的应用程序所需的依赖项。
主要组件包括:
spring-jdbc:提供JDBC抽象和Spring的JDBC支持。
spring-boot-starter:包含了自动配置、日志和YAML属性处理等Spring Boot核心功能。
spring-boot-starter-aop:提供面向切面编程(AOP)的支持,可用于声明式事务管理等。
引入spring-boot-starter-jdbc时,启动时会自动扫描所有的XxxAutoConfiguration:
DataSourceAutoConfiguration:自动创建一个DataSource,其中配置项从application.yml的spring.datasource读取;
DataSourceTransactionManagerAutoConfiguration:自动创建了一个基于JDBC的事务管理器;
JdbcTemplateAutoConfiguration:自动创建了一个JdbcTemplate。
数据源
SpringBoot是默认支持org.apache.tomcat.jdbc.pool.DataSource、HikariDataSource、BasicDataSource三种数据源


浙公网安备 33010602011771号