Spring 自动扫描组件

前面 Spring 文章都是使用 XML bean 配置文件实现 Spring 容器检测并注册Bean类或组件。其实,Spring是能够自动扫描,检测和预定义的项目包并实例化bean,不再有繁琐的Bean类声明在XML文件中。

现在,启用Spring组件扫描功能。使用@Component注释来表示这是类是一个自动扫描组件。

@Component
public class ArticleServiceImpl implements ArticleService {
	@Autowired
	private ArticleDao articleDao;
	
	public void setArticleDao(ArticleDao articleDao) {
		this.articleDao = articleDao;
	}

        ...
}

在配置文件添加“context:component”,即在 Spring 中启用自动扫描功能。base-package 是指明存储组件,Spring将扫描该文件夹,并找出Bean(注解为@Component)并注册到 Spring 容器。

<context:component-scan base-package="com.angelia.spring" />

效果和之前一样。

自定义自动扫描组件名称

默认情况下,Spring 将小写部件的第一字符- 从'ArticleServiceImpl'到'articleServiceImpl'。可以检索该组件名称为“articleServiceImpl”。

要创建组件的自定义名称,你可以这样自定义名称:

@Component("articleService")

自动组件扫描注释类型

以下为4个常用的自动扫描注释类型:

  • @Component – 指示自动扫描组件。
  • @Repository – 表示在持久层DAO组件。
  • @Service – 表示在业务层服务组件。
  • @Controller – 表示在表示层控制器组件

其实把所有可以被 @Repository,@Service 或 @Controller 注解的组件都注解为 @Component 也是可以的。Spring会自动扫描所有组件的 @Component 注解。但这并不是一个好的做法,为便于阅读,应该始终声明@Repository,@ Service 或 @Controller 在指定的层,使你的代码更易于阅读,如下:

@Repository
public class ArticleDaoImpl implements ArticleDao {
        ...

}

@Service
public class ArticleServiceImpl implements ArticleService {
            ...

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AngeliaZheng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值