几种装配bean注解的区别

@Autowired:该注解可以对类成员变量,方法和构造方法进行标注,完成自动装配的工作,通过使用@Autowired 来消除setter和getting方法。默认按照bean的类型进行注解;如果想按照名称来转配注入,则需要结合@Qualifier一起使用


@Resource:该注解与@Autowired的功能一样,区别在于该注解默认是按照名称来进行装配注入的,找不到与名称匹配的bean时才会按照类型来装配。想要按照名称来装配,需要@Resource和@Qualifier注解一起使用。@Resource注解有两个属性(name,type),name指定bean实例名称,即按照名称装配。type指定bean类型,即按照bean类型进行装配。


@Qualifier:按照名称来装配;bean的实例名称由@Qualifier注解的参数指定。

在Spring框架中,Bean的装配是指将各个Bean组合在一起,以便它们可以一起协同工作。有几种常见的Bean装配方式: 1. 自动装配(autowiring): Spring可以自动地注入依赖,而无需在配置文件中显式指定。自动装配可以通过XML配置或注解实现。使用注解时,可以使用@Autowired和@Inject来自动注入依赖。 示例(使用@Autowired注解): ```java public class MyService { private MyRepository myRepository; @Autowired public void setMyRepository(MyRepository myRepository) { this.myRepository = myRepository; } } ``` 2. 构造器装配(constructor injection): 通过Bean的构造器参数来注入依赖。这种方式可以保证依赖的注入,并且可以用来创建不可变对象。 示例(使用构造器注入): ```java public class MyService { private final MyRepository myRepository; public MyService(MyRepository myRepository) { this.myRepository = myRepository; } } ``` 3. Setter方法装配(setter injection): 通过Bean的setter方法来注入依赖。这种方式可以为属性提供默认值,也支持空值。 示例(使用setter方法注入): ```java public class MyService { private MyRepository myRepository; public void setMyRepository(MyRepository myRepository) { this.myRepository = myRepository; } } ``` 4. 字段注入(field injection): 直接在类的成员变量上使用注解来注入依赖。这种方式代码简洁,但降低了代码的可测试性。 示例(使用字段注入): ```java public class MyService { @Autowired private MyRepository myRepository; } ``` 5. 基于Java的配置(Java-based configuration): 使用@Configuration注解的类来定义Bean,并通过@Bean注解的方法来定义Bean的装配。 示例(Java配置类): ```java @Configuration public class AppConfig { @Bean public MyService myService(MyRepository myRepository) { MyService myService = new MyService(); myService.setMyRepository(myRepository); return myService; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值