前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring 注解开发之 @Bean 及其相关注解

Spring 注解开发之 @Bean 及其相关注解

作者头像
wsuo
发布2020-07-30 23:03:51
4120
发布2020-07-30 23:03:51
举报
文章被收录于专栏:技术进阶之路技术进阶之路

这次介绍一下 Spring 中的几个注解 @Bean 以及 @Scope@Lazy

本文的组织结构如下:

  • 先看一下该注解取代了配置文件中的哪些配置;
  • 再总览这些注解有哪些属性值;
  • 最后讲解一下重要的属性值。

Spring 版本 5.1.2.RELEASE

一、XML 配置

在配置文件中,我们使用 bean 标签将组件放入容器中,使用它的 scope 指定作用范围,lazy-init 指定模式是懒加载;

代码语言:javascript
复制
<bean class="top.wsuo.pojo.Person" id="person" scope="singleton" lazy-init="true">
    <property name="name" value="李四"/>
    <property name="age" value="18"/>
</bean>

我们使用 id 属性为组件指定 key 值。

懒加载什么意思? 在解释这个之前先来看一下 scope 的作用。

xml 配置中,scope 属性有两个候选值,分别为:

  • singleton:单实例,默认值;
  • prototype:多实例。

单实例即容器只会初始化对象一次,以后每次获取的对象都是同一个对象;而多实例则相反,每次都不一样。

  • 如果我们指定为单实例的,那么 容器启动时会将对象放到容器中,以后每次获取都是从容器中拿(map.get())
  • 如果指定为多实例的,那么 容器启动时不会去创建对象,而是每次获取的时候才会创建对象

所以当我们指定为单实例的时候无论我们用不用,容器在初始化的时候都会创建对象,即使我们不使用,我们可以通过设置懒加载来延缓创建实例的时间。

lazy-init="true" 改为 true 即代表开启懒加载,默认是关闭的。

以上讲到的配置,均有对应的注解:

配置文件

注解

bean 标签

@Bean 注解

scope 属性

@Scope 注解

lazy-init 属性

@Lazy 注解

二、属性总览

首先放一个例子:

代码语言:javascript
复制
@Lazy
@Scope("prototype")
@Bean("person")
public Person person() {
    System.out.println("给容器添加一个对象");
    return new Person("张三", 20);
}

上面的配置表示:

  • 设置该 Beanid 值为 person
  • 设置作用域为多实例;
  • 设置为懒加载;

三、重要属性讲解

1、@Bean

默认情况:@Bean 注解对应于 Bean 标签,它作用于方法上,其中 class 值即方法的返回值,id 值即方法名。

代码语言:javascript
复制
@AliasFor("value")
String[] name() default {};

可以使用它的 name 属性或者 value 属性值设置自定义的 id 值。

2、@Scope

他有一个属性 value 或者叫作 scopeName 可以指定作用域,有下面几种取值:

代码语言:javascript
复制
// 取值的类型
ConfigurableBeanFactory		# SCOPE_PROTOTYPE
ConfigurableBeanFactory		# SCOPE_SINGLETON
org.springframework.web.context.WebApplicationContext		# SCOPE_REQUEST
org.springframework.web.context.WebApplicationContext		# SCOPE_SESSION
代码语言:javascript
复制
// 具体的值
singleton://单实例;
prototype://多实例;
request://一个请求创建一个实例;
session://一个会话创建一个实例;
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、XML 配置
  • 二、属性总览
  • 三、重要属性讲解
    • 1、@Bean
      • 2、@Scope
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com