1.概述
当有多个相同类型的实现时,命名一个spring bean非常有用。这是因为 bean 没有唯一的名称,那么注入 bean 对 spring 来说是不明确的。
通过控制 bean 的命名,可以告诉 spring 要将哪个 bean 注入目标对象。
2.默认 bean 命名策略
spring为创建 bean提供了多个注解,可以在不同的层次上使用这些注解。例如,可以在 bean 类上放置一些注解,而在创建 bean 的方法上放置一些注解。
首先,来看 spring 的默认命名策略在。当只指定注解而没有任何值时,spring 如何命名 bean?
2.1.类级注释
从在类级别使用的注解默认命名策略开始。为了命名一个 bean,spring 使用类名并将第一个字母转换为小写。
来看一个例子:
@service
public class loggingservice {
}
在这里,spring 为类_loggingservice_创建一个 bean,并使用名称“ loggingservice ”注册它。
同样的默认命名策略适用于所有用于创建 spring bean 的类级别注解,例如*@component*、_@service_和*@controller*。
2.2. 方法级注解
spring 提供了*@bean_和_@qualifier*类的注解,用于创建 bean 的方法。
看一个例子来理解*@bean*注解的默认命名策略:
@configuration
public class auditconfiguration {
@bean
public auditservice audit() {
return new auditservice();
}
}在这个配置类中,spring在名称“audit ”下注册了一个**auditservice类型的 bean,当在方法上使用@bean注解时,spring 使用方法名称作为 bean 名称。
还可以在方法上使用*@qualifier*注解
3. bean的自定义命名
当需要在同一个 spring 上下文中创建多个相同类型的 bean 时,可以为这些 bean 提供自定义名称并使用这些名称来引用它们。
下面例子 如何给 spring bean 一个自定义名称:
@component("mybean")
public class mycustomcomponent {
}
这一次,spring 将创建名为“ mybean”的mycustomcomponent类型的 bean 。
由于明确地为 bean 命名,spring 将使用这个名称,然后可以使用它来引用或访问 bean。
与*@component(“mybean”)类似,可以使用*@service(“myservice”)、@controller(“mycontroller”)和@bean(“mycustombean”)等其他注解来指定名称,然后spring 会注册具有给定名称的 bean。
到此这篇关于spring bean名称的文章就介绍到这了,更多相关spring bean名称内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论