17.Spring Beans和依赖注入

博客介绍了在Spring Boot里可使用标准Spring Framework技术定义Bean和进行依赖注入。常用@ComponentScan查找Bean,@Autowired进行注入。若程序按标准结构,无需配置即可用@ComponentScan自动注册组件为Spring Beans,还给出了构造函数注入的示例及相关提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        你可以自由的使用任何标准的Spring Framework技术来定义你得beans以及进行依赖的注入。方便起见,我们经常使用@ComponentScan(查找你得beans)和@Autowired(进行依赖注入),这两个使用起来很不错。

        如果你得程序是按照上述所说的标准结构(入口类在根目录中),无需任何配置就可以使用@ComponentScan注释,这样程序的所有组件(被@Component@Service@Repository@Controller等注释的类)都会自动注册为Spring Beans。

        下面的例子显示了一个@Service Bean通过构造函数注入所需的RiskAssessor Bean。

package com.example.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class DatabaseAccountService implements AccountService {

 private final RiskAssessor riskAssessor;

 @Autowired
 public DatabaseAccountService(RiskAssessor riskAssessor) {
  this.riskAssessor = riskAssessor;
 }

 // ...

}

如果你注入的Bean有一个构造方法,则可以省略@Autowired注释,代码如下:

@Service
public class DatabaseAccountService implements AccountService {

 private final RiskAssessor riskAssessor;

 public DatabaseAccountService(RiskAssessor riskAssessor) {
  this.riskAssessor = riskAssessor;
 }

 // ...

}

提示:

        注意,当使用构造器注入依赖时,用final修饰了riskAssessor属性,这意味着它在之后不能发生改变。

 

 

总目录:总纲 Spring Boot官方文档(2.1.5版翻译)

上一篇:16.自动配置机制

下一篇:18.使用@SpringBootApplication注释

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'UpdateEcoDataTask': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'restTemplate': Requested bean is currently in creation: Is there an unresolvable circular reference? at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessProperties(CommonAnnotationBeanPostProcessor.java:332) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1431) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:619) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:410) at org.springframework.beans.factory.su
最新发布
08-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值