服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|JavaScript|易语言|

服务器之家 - 编程语言 - Java教程 - springboot注册bean的三种方法

springboot注册bean的三种方法

2021-07-17 11:01张占岭 Java教程

这篇文章主要介绍了springboot注册bean的三种方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

spring在启动时会自己把bean(java组件)注册到ioc容器里,实现控制反转,在开发人员使用spring开发应用程序时,你是看不到new关键字的,所有对象都应该从容器里获得,它们的 生命周期 在放入容器时已经确定!

下面说一下三种注册bean的方法

  • @componentscan
  • @bean
  • @import

@componentscan注册指定包里的bean

spring容器会扫描@componentscan配置的包路径,找到标记@component注解的类加入到spring容器。

我们经常用到的类似的(注册到ioc容器)注解还有如下几个:

  • @configuration:配置类
  • @controller :web控制器
  • @repository :数据仓库
  • @service:业务逻辑

下面代码完成了emaillogserviceimpl这个bean的注册,当然也可以放在@bean里统一注册,需要看@bean那一节里的介绍。

?
1
2
3
4
5
6
7
8
9
10
@component
public class emaillogserviceimpl implements emaillogservice {
 private static final logger logger = loggerfactory.getlogger(emaillogserviceimpl.class);
 
 @override
 public void send(string email, string message) {
  assert.notnull(email, "email must not be null!");
  logger.info("send email:{},message:{}", email, message);
 }
}

@bean注解直接注册

注解@bean被声明在方法上,方法都需要有一个返回类型,而这个类型就是注册到ioc容器的类型,接口和类都是可以的,介于面向接口原则,提倡返回类型为接口。

下面代码在一个@configuration注解的类中,同时注册了多个bean。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@configuration
public class logserviceconfig {
 
 /**
  * 扩展printlogservice行为,直接影响到logservice对象,因为logservice依赖于printlogservice.
  *
  * @return
  */
 @bean
 public printlogservice printlogservice() {
  return new printlogserviceimpl();
 }
 
 @bean
 public emaillogservice emaillogservice() {
  return new emaillogserviceimpl();
 }
 
 @bean
 public printlogservice consoleprintlogservice() {
  return new consoleprintlogservice();
 }
}

@import注册bean

这种方法最为直接,直接把指定的类型注册到ioc容器里,成为一个java bean,可以把@import放在程序的八口,它在程序启动时自动完成注册bean的过程。

?
1
2
3
4
@import({ logservice.class,printservice.class })
public class registrybean {
 
}

spring之所以如何受欢迎,我想很大原因是它自动化注册和自动化配置这一块的设计,确实让开发人员感到非常的自如,.net里也有类似的产品,像近几年比较流行的abp框架,大叔自己也写过类似的lind框架,都是基于自动化注册和自动化配置的理念。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://www.cnblogs.com/lori/p/10418271.html

延伸 · 阅读

精彩推荐