Spring Framework注释指南

本文详细介绍了Spring框架中各种核心注释的用法,包括@Required、@Autowired、@Qualifier等,以及Spring Boot、Spring MVC和REST注释,如@Controller、@GetMapping等。文章还涵盖了Spring Cloud和数据访问注释,如@EnableCircuitBreaker、@Transactional等,旨在帮助开发者更好地理解和使用Spring框架。
摘要由CSDN通过智能技术生成

Java编程语言从Java 5.0开始为注解提供支持。领先的Java框架很快就采用了注解,Spring 框架开始使用2.5版本的注解。由于它们的定义方式,注释在其声明中提供了大量上下文。

在注释之前,Spring 框架的行为主要通过 XML 配置进行控制。今天,注释的使用为我们提供了如何配置 Spring 框架行为的巨大功能。

在这篇文章中,我们将看看 Spring 框架中可用的注释。

Spring 框架核心注释

@Required

此注释应用于bean setter方法。考虑一个需要强制执行所需属性的场景。@Required注释指示受影响的bean必须在配置时使用必需的属性填充。否则,将引发BeanInitializationException类型的异常。

@Autowired

此注释应用于字段、setter方法和构造函数。@Autowired注释隐式注入对象依赖关系。

当您在字段上使用@Autowired并使用属性名称传递字段的值时,Spring将自动为字段分配传递的值。

您甚至可以在私有属性上使用@Autowired,如下所示。(不过,这是一个非常糟糕的做法!)

public class Customer {
   
    @Autowired                               
    private Person person;                   
    private int type;
}

当您在setter方法上使用@Autowired时,Spring会尝试通过在方法上键入autowireing来执行它。您指示Spring应该使用setter方法初始化此属性,在该方法中您可以添加自定义代码,就像使用此属性初始化任何其他属性一样。

public class Customer {
                                                                                            
    private Person person;
    @Autowired                                                                                                      
    public void setPerson (Person person) {
   
       this.person=person;
    }
}

考虑这样一个场景:您需要类A的实例,但没有将A存储在类的字段中。您只需要使用A来获得B的一个实例,并且您将B存储在该字段中。在这种情况下,setter方法自动布线将更适合您。您将不会有类级别未使用的字段。

当您在构造函数上使用@Autowired时,构造函数注入会在创建对象时发生。它告诉构造函数在用作Bean时自动连线。这里需要注意的一点是,任何Bean类只有一个构造函数可以携带@Autowired注释。

@Component
public class Customer {
   
    private Person person;
    @Autowired
    public Customer (Person person) {
   
        this.person=person;
    }
}

注意:从Spring 4.3开始,@Autowired在具有单个构造函数的类上成为可选的。在上面的例子中,如果您省略了@Autowired注释,Spring仍然会注入Person类的一个实例。

@Qualifier

此注释与@Autowired注释一起使用。当您需要对依赖项注入过程进行更多控制时,可以使用@Qualifier@可以在各个构造函数参数或方法参数上指定限定符。此注释用于避免在创建多个相同类型的bean并希望仅将其中一个bean与属性关联时出现混淆。

考虑一个例子,其中接口BeanInterface由两个bean(BeanB1和BeanB2)实现。

@Component
public class BeanB1 implements BeanInterface {
   
    //
}
@Component
public class BeanB2 implements BeanInterface {
   
    //
}

现在,如果BeanA自动连接这个接口,Spring将不知道要注入两个实现中的哪一个。

这个问题的一个解决方案是使用@Qualifier注释。

@Component
public class BeanA {
   
    @Autowired
    @Qualifier("beanB2")
    private IBean dependency;
    ...
}

添加了@Qualifier注释后,Spring现在将知道要自动连接哪个bean,其中beanB2是beanB2的名称。

@Configuration

此注释用于定义bean的类@配置是对XML配置文件的模拟——它是使用Java类进行配置的。用@Configuration注释的Java类本身就是一个配置,它将具有实例化和配置依赖项的方法。

以下是一个示例:

@Configuartion
public class DataConfig {
   
    @Bean
    public DataSource source() {
   
        DataSource source = new OracleDataSource();
        source.setURL();
        source.setUser();
        return source;
    }
    @Bean
    public PlatformTransactionManager manager() {
   
        PlatformTransactionManager manager = new BasicDataSourceTransactionManager();
        manager.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值