SpringBoot启动类相关注解汇总:

@SpringBootApplication

@SpringBootApplication 是一个复合注解,用于在 Spring Boot 应用程序的主类上进行标记。它组合了以下三个注解的功能:@Configuration@EnableAutoConfiguration@ComponentScan

  • @Configuration 注解表示该类是一个配置类,用于定义和配置 Bean。
  • @EnableAutoConfiguration 注解启用自动配置机制,根据项目依赖和配置来自动推测和创建 Spring Bean。
  • @ComponentScan 注解指示 Spring 扫描包路径下的组件(包括被 @Service@Repository@Controller等修饰的类),并将其纳入到 Spring 容器之中。

使用 @SpringBootApplication 注解时,通常需要保证启动类与其他相关组件所在的包路径一致,或者位于更高层级的包路径中。这样可以确保 Spring 能够扫描到所有需要管理的组件,并按照预期初始化和配置。

下面是一个简单的例子,演示如何使用 @SpringBootApplication 注解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

在上述代码中,MyApplication 类作为一个 Spring Boot 应用程序的主类。通过使用 @SpringBootApplication 注解,我们可以简化引导应用程序的过程,并让 Spring 自动处理配置和组件扫描。

根据 @SpringBootApplication 注解的特性,遵循约定大于配置的原则,在默认情况下 Spring Boot 会自动扫描主类所在包及其子包中的组件,并根据依赖和配置进行相应的自动配置。这样可以减少手动配置的工作量,加快项目开发进程。

因此,一个基本的 Spring Boot 应用程序通常需要有一个带有 @SpringBootApplication 注解的主类来启动整个应用程序,并进行相关的配置和组件管理。

@EntityScan

在 Spring 框架中,@EntityScan 注解,用于指示扫描和识别实体类(Entity classes)。它通常被应用于配置类或启动类上。

@EntityScan 的主要作用是告诉 Spring 扫描包路径下的实体类,并将其纳入到 Spring 容器的管理范围内。实体类通常表示与数据库表对应的对象。

使用 @EntityScan 注解时,可以通过指定不同的参数来控制实体类的扫描范围。常见的参数如下:

  • basePackages:指定需要扫描实体类的包路径,支持多个包路径。
  • basePackageClasses:指定某些类所在的包路径作为实体类的扫描范围。
  • value:等同于 basePackages

下面是一个简单的例子,展示了如何在 Spring Boot 项目中使用 @EntityScan 注解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;

@SpringBootApplication
@EntityScan(basePackages = "com.example.entity")
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

在上述代码中,@SpringBootApplication 注解用于标记该类为 Spring Boot 应用程序的启动类。而 @EntityScan 注解指示 Spring 扫描 "com.example.entity" 包路径下的实体类。

通过使用 @EntityScan 注解,Spring 将会自动扫描并加载指定包路径下的实体类,以便进行相关数据库操作或其他处理。这样就无需手动配置每个实体类,大大简化了项目的配置和管理。

@EnableJpaRepositories

@EnableJpaRepositories 是 Spring 框架中的一个注解,用于启用 JPA(Java Persistence API)仓库的自动配置和管理。它通常被应用于配置类或启动类上。

在使用 @EnableJpaRepositories 注解时,需要指定相应的参数来配置 JPA 仓库的相关属性。常见的参数如下:

  • basePackages:指定需要扫描 JPA 仓库接口的包路径,支持多个包路径。
  • basePackageClasses:指定某些类所在的包路径作为 JPA 仓库接口的扫描范围。
  • value:等同于 basePackages
  • repositoryImplementationPostfix:设置默认情况下生成实现类的名称后缀,默认为 “Impl”。
  • entityManagerFactoryRef:指定要使用的 EntityManagerFactory 的名称。
  • transactionManagerRef:指定要使用的事务管理器的名称。

下面是一个简单的例子,展示了如何在 Spring Boot 项目中使用 @EnableJpaRepositories 注解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

@SpringBootApplication
@EnableJpaRepositories(basePackages = "com.example.repository")
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

在上述代码中,@SpringBootApplication 注解用于标记该类为 Spring Boot 应用程序的启动类。而 @EnableJpaRepositories 注解指示 Spring 启用 JPA 仓库的自动配置,扫描并管理 "com.example.repository" 包路径下的接口。

通过使用 @EnableJpaRepositories 注解,Spring 将会自动扫描并加载指定包路径下的 JPA 仓库接口,并为其生成相应的实现类。这样就可以直接在代码中调用 JPA 仓库的方法来进行数据库操作,而无需手动编写具体的实现类和 SQL 语句。

@MapperScan

@MapperScan 是 MyBatis 框架中的一个注解,用于指示 Spring 扫描和注册 Mapper 接口并添加到容器管理。它通常被应用于配置类或启动类上。

在使用 @MapperScan 注解时,我们需要提供至少一个参数来指定要扫描的包路径,并且该路径下必须存在对应的 Mapper 接口。@MapperScan 注解还支持设置多个包路径和使用通配符进行模糊匹配。

下面是一个简单的例子,说明了如何在 Spring Boot 项目中使用 @MapperScan 注解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
@MapperScan("com.example.mapper")
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

在上述代码中,@SpringBootApplication 注解标记主类为 Spring Boot 应用程序的启动类。而 @MapperScan 注解告诉 Spring 扫描 "com.example.mapper" 包路径下的 Mapper 接口,并将其纳入到容器管理中。

通过使用 @MapperScan 注解,我们可以不再需要手动编写以接口形式定义的 Mapper 对象的实现类。相反,只需在代码中直接调用这些接口的方法即可完成数据库的操作,MyBatis 将会根据接口中定义的 SQL 内容来执行相应的语句。

需要注意的是,@MapperScan 注解在 MyBatis-Spring 中使用,而不是在 MyBatis 中使用。因此,在添加 @MapperScan 注解之前,确保项目中已经正确引入了 MyBatis-Spring 的依赖。

@EnableTransactionManagement

@EnableTransactionManagement 是 Spring 框架中的一个注解,用于启用基于注解的事务管理功能。它通常被应用于配置类或启动类上。

在使用 @EnableTransactionManagement 注解时,无需提供任何参数。该注解的作用是告诉 Spring 启用对标有 @Transactional 注解的方法进行事务管理的支持。

下面是一个简单的例子,展示了如何在 Spring Boot 项目中使用 @EnableTransactionManagement 注解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@SpringBootApplication
@EnableTransactionManagement
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

在上述代码中,@SpringBootApplication 注解标记主类为 Spring Boot 应用程序的启动类。而 @EnableTransactionManagement 注解则指示 Spring 启用基于注解的事务管理功能。

通过使用 @EnableTransactionManagement 注解,我们可以在需要进行事务管理的方法上直接添加 @Transactional 注解,从而将其标记为受事务控制的方法。这样,在调用该方法时,Spring 将会自动开启一个新的事务,并根据方法的执行结果来决定事务的提交或回滚操作。

需要注意的是,@EnableTransactionManagement 注解只是启用了事务管理功能,并不会对代码中的具体实现产生影响。因此,要实现事务的具体管理,还需要在使用 @Transactional 注解时设置合适的传播属性和回滚规则,或者使用编程式事务进行更精确的控制。同时,在添加 @EnableTransactionManagement 注解之前,确保项目中已经正确引入了 Spring 的事务管理依赖。

@ComponentScan

@ComponentScan 是 Spring 框架中的一个注解,用于指示 Spring 扫描和注册组件(包括类、接口和注解)并添加到容器管理。它通常被应用于配置类或启动类上。

在使用 @ComponentScan 注解时,我们需要提供至少一个参数来指定要扫描的包路径。Spring 将会递归地扫描该路径下的所有类,并为其中标有相应注解的类创建实例并将其添加到容器管理中。

除了设置包路径外,@ComponentScan 注解还支持其他一些属性,例如指定要排除掉的类、设置过滤规则等。可以根据具体需求来调整这些属性的值,以达到更精确的组件扫描范围。

下面是一个简单的例子,展示了如何在 Spring Boot 项目中使用 @ComponentScan 注解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan("com.example")
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

在上述代码中,@SpringBootApplication 注解标记主类为 Spring Boot 应用程序的启动类。而 @ComponentScan 注解告诉 Spring 扫描 "com.example" 包路径下的所有组件,并将其纳入到容器管理中。

通过使用 @ComponentScan 注解,我们可以自动扫描和注册项目中的组件,无需手动添加 @Bean 或其他相关注解。这样,我们就能够方便地在代码中使用依赖注入、AOP 等 Spring 的核心功能,并让 Spring 自动管理这些组件的生命周期。

需要注意的是,@ComponentScan 注解默认情况下会扫描与配置类所在包及其子包下的所有组件。如果想要更精确地指定扫描范围,可以通过设置 basePackages 属性来指定具体的包路径,或者使用 basePackageClasses 属性来指定以某个类所属的包为基准进行扫描。

@EnableScheduling

@EnableScheduling 是 Spring 框架中的一个注解,用于启用定时任务的支持。它通常被应用于配置类或启动类上。

在使用 @EnableScheduling 注解时,无需提供任何参数。该注解的作用是告诉 Spring 启用对标有 @Scheduled 注解的方法进行调度的支持。

下面是一个简单的例子,展示了如何在 Spring Boot 项目中使用 @EnableScheduling 注解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

在上述代码中,@SpringBootApplication 注解标记主类为 Spring Boot 应用程序的启动类。而 @EnableScheduling 注解则指示 Spring 启用定时任务的支持。

通过使用 @EnableScheduling 注解,我们可以在需要定时执行的方法上添加 @Scheduled 注解,并根据具体情况设置合适的执行时间表达式等属性。这样,Spring 将会按照所设置的时间表达式自动调度执行相应的任务方法。

需要注意的是,除了 @EnableScheduling 注解外,还需要引入 Spring 的计划任务依赖,例如 spring-boot-starter-quartzspring-boot-starter-tasks 等,以确保定时任务的正常运行。

@Slf4j

@Slf4j 是一个 Lombok 注解,用于在类中自动生成日志对象。它通过注解生成的代码实现了便捷的日志记录操作。

使用 @Slf4j 注解后,在类中就可以直接使用 log 对象来进行日志记录,而无需手动创建和初始化日志对象。log 对象是由 Slf4j 日志框架提供的,根据实际情况会被绑定到具体的日志库(如 Logback、Log4j2 等)。

下面是一个简单的例子,展示了如何在 Java 类中使用 @Slf4j 注解:

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class MyService {
    public void doSomething() {
        log.info("Doing something...");
        // 其他日志级别和方法...
    }
}

在上述代码中,我们只需要在类上方添加 @Slf4j 注解即可。Lombok 将会根据该注解自动生成一个名为 log 的静态字段,并初始化为适当的日志实现。

然后,我们就可以在类的方法中使用 log 对象来记录不同级别的日志信息,如 infodebugerror 等。

需要注意的是,使用 @Slf4j 注解前,还需要确保项目中正确引入了 Lombok 依赖,并配置了相应的插件以使其能够在编译时生成代码。通常,使用 Maven 作为项目构建工具时,可以在 pom.xml 文件中添加以下配置:

<dependencies>
    
    <dependency>
        <groupId>org.projectlombokgroupId>
        <artifactId>lombokartifactId>
    dependency>
dependencies>

此外,一些 IDE(如 IntelliJ IDEA、Eclipse 等)也需要安装 Lombok 插件以支持自动生成代码的功能。

具体使用案例

SpringBoot启动类相关注解汇总:_第1张图片

你可能感兴趣的:(Spring注解,面试,spring,boot,java,后端)