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的注解:
  1. @SpringBootConfiguration 可以看到@SpringBootConfiguration又被以下四个注解修饰:

    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Configuration

  2. @EnableAutoConfiguration @EnableAutoConfiguration本身被以下注解修饰,其作用在于让主配置类所在包下面的所有类的注解都可以扫描
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    @AutoConfigurationPackage
    @Import(EnableAutoConfigurationImportSelector.class)

  3. @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-boot场景启动器,帮我们导入了web模块正常运行所依赖的组件。这个启动器是用于创建基于Spring的Web应用程序的。它包含了构建RESTful web服务或传统的web应用程序所需的所有Spring Web库。

主要组件包括:

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.DataSourceHikariDataSourceBasicDataSource三种数据源

posted @ 2024-06-23 02:46  狠狠赚一笔  阅读(36)  评论(0)    收藏  举报