Spring Boot常用注解

目录

1.Spring Boot常用注解

分类 注解 位置 对应的XML标签 作用
读取配置 @ConfigurationProperties 用于对Component进行扫描
读取配置 @PropertySource <context:property-placeholder> 通过一次性读取到一个 Java 配置类,相当于一次性使用多个@Value注解
读取配置 @Import <import> 用来导入配置类或者一些需要前置加载的类
读取配置 @Value 属性 <property> 注入普通字符,操作系统属性,表达式结果, 其它bean属性,文件资源,网站资源,配置文件等
配置启动 @SpringBootApplication 此注解相当于@Configuration、@EnableAutoConfiguration、@ComponentScan的组合
配置启动 @Configuration 声明当前类为配置类,相当于xml形式的Spring配置
配置启动 @EnableAutoConfiguration 启用SpringBoot的自动化配置
配置启动 @ComponentScan <context:component-scan> 启用SpringBoot的组件扫描功能
全局异常处理 @ControllerAdvice 常与@ExceptionHandler注解一起使用,用于捕获全局异常,能作用于所有controller中。
全局异常处理 @ExceptionHandler 类/方法 修饰方法时,表示该方法为处理全局异常的方法
数据库事务相关注解 @EnableTransactionManagement 启用Spring基于注解的事务管理功能,需要和@Configuration注解一起使用
数据库事务相关注解 @Transactional 类/方法 表示方法和类需要开启事务

Spring相关注解可参考:Spring常用注解

2.读取配置

@Import

@Import注解是用来导入配置类或者一些需要前置加载的类。作用和在spring的xml配置文件中的:<import resource=""></import>是一样.

value[]:用于指定其他配置类的字节码。

java 复制代码
@Configuration
@ComponentScan(basePackages = "com.by")
@Import({Configuration_Other.class})
public class SpringConfiguration {

}

@PropertySource("classpath:config.properties")
public class Configuration_Other {

}

@value

可以在任意 Spring 管理的 Bean 中通过这个注解获取任何来源配置的属性值。

比如 application.properties 或者 application.yml 配置文件中配置的属性值,当然也可以是 JVM 属性配置或者系统环境变量配置的值.

java 复制代码
@Component
public class MyComponent {
 
    @Value("${my.property}")
    private String myProperty;
 
    // 其他方法
}

在属性级别上,@Value注解指定了需要注入的属性值,这个属性值可以通过${...}的方式引用配置文件中的属性值。

@ConfigurationProperties

上面 @Value 在每个类中获取属性配置值的做法其实是不推荐的,一般在企业项目开发中,不会使用那么杂乱无章的写法而且维护也麻烦。

通过一次性读取到一个 Java 配置类,相当于一次性使用多个@Value注解,需要使用的地方直接引用这个类就可以多次访问了,方便维护。

java 复制代码
@Component
@Data
@ConfigurationProperties(prefix = "servers")
public class ServerConfig {
    private String ipAddress;
    private int port;
    private long timeout;
}

@PropertySource

这个注解是用来指定读取自定义的配置文件的。

java 复制代码
@Component
@ConfigurationProperties(prefix= "my" )
@PropertySource(value = {"classpath:my.properties"})
@Data
public class MyProperties {
    private int maxValue= 0;
}

搭配@Bean使用:

java 复制代码
@PropertySource("classpath:db.properties")
public class JdbcConfig {
    @Value("${jdbc.driver}")
    private String driver;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String userName;
    @Value("${jdbc.password}")
    private String password;

    @Bean("dataSource")
    public DataSource getDatasource() {
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setUsername(userName);
        ds.setPassword(password);
        return ds;
    }
}

3.配置启动

@SpringBootApplication

@SpringBootApplication注解是一个快捷的配置注解,在被它标注的类中,可以定义一个或多个Bean,并自动触发自动配置Bean和自动扫描组件。此注解相当于@Configuration@EnableAutoConfiguration@ComponentScan的组合。

在Spring Boot应用程序的主类中,就使用了此注解。示例代码如下:

java 复制代码
@SpringBootApplicationpublic 
class Application{ 
	public static void main(String [] args){   		
		SpringApplication.run(Application.class,args); 
	}
}

@Configuration

用于声明一个Java形式的配置类,SpringBoot推荐使用Java配置,在该类中声明的Bean等配置将被SpringBoot的组件扫描功能扫描到。

java 复制代码
@Configuration
@MapperScan({"com.by.mapper"})
public class MyBatisConfig {
}

@EnableAutoConfiguration

启用SpringBoot的自动化配置,会根据你在pom.xml添加的依赖和application-dev.yml中的配置自动创建你需要的配置。

java 复制代码
 @Configuration
@EnableAutoConfiguration
public class AppConfig {
}

@ComponentScan

启用SpringBoot的组件扫描功能,标注哪些路径下的类需要被Spring扫描。将自动装配和注入指定包下的Bean实例。

java 复制代码
@Configuration
@ComponentScan({"com.by.mapper"})
public class EruptConfig {
}

4.全局异常处理

@ControllerAdvice

包含@Component。可以被扫描到。统一处理异常。

常与@ExceptionHandler注解一起使用,用于捕获全局异常,能作用于所有controller中。

@ExceptionHandler

修饰方法时,表示该方法为处理全局异常的方法。

java 复制代码
@ControllerAdvice
public class GlobalExceptionHandler {

    @ResponseBody
    @ExceptionHandler(value = ApiException.class)
    public CommonResult handle(ApiException e) {
        if (e.getErrorCode() != null) {
            return CommonResult.failed(e.getErrorCode());
        }
        return CommonResult.failed(e.getMessage());
    }
}

5.数据库事务相关注解

@EnableTransactionManagement

启用Spring基于注解的事务管理功能,需要和@Configuration注解一起使用。

java 复制代码
@Configuration
@EnableTransactionManagement
@MapperScan({"com.by.mapper"})
public class MyBatisConfig {
}

@Transactional

表示方法和类需要开启事务

当作用与类上时,类中所有方法均会开启事务

当作用于方法上时,方法开启事务,方法上的注解无法被子类所继承。

java 复制代码
@Service
@Transactional
public class CheckItemServiceImpl implements CheckItemService {

    @Autowired
    private CheckItemMapper checkItemMapper;
    @Override
    public void add(CheckItem checkItem) {
        checkItemMapper.add(checkItem);
    }
相关推荐
东阳马生架构14 分钟前
订单初版—5.售后退货链路中的技术问题说明文档
java
小小寂寞的城19 分钟前
JAVA策略模式demo【设计模式系列】
java·设计模式·策略模式
志辉AI编程34 分钟前
别人还在入门,你已经精通!Claude Code进阶必备14招
后端·ai编程
JAVA学习通37 分钟前
图书管理系统(完结版)
java·开发语言
代码老y41 分钟前
Spring Boot项目中大文件上传的高级实践与性能优化
spring boot·后端·性能优化
abigalexy43 分钟前
深入Java锁机制
java
paishishaba44 分钟前
处理Web请求路径参数
java·开发语言·后端
神仙别闹1 小时前
基于Java+MySQL实现(Web)可扩展的程序在线评测系统
java·前端·mysql
程序无bug1 小时前
Java中的8中基本数据类型转换
java·后端
雨落倾城夏未凉1 小时前
8.Qt文件操作
c++·后端·qt