当前位置: 首页 > news >正文

@Bean有哪些属性

直接看原文

原文链接:Spring中bean标签的作用和属性的详解-CSDN博客

-------------------------------------------------------------------------------------------------------------------------------- 

  • Bean的配置一般都在XML文件进行配置
  • Bean相关包为:org.springframework.beans和org.springframework.context
  • spring的Bean管理的实现是依靠大量的反射来实现的。
bean标签常用属性
  • id:是bean的唯一标识,IoC容器中bean的id标签不能重复,否则报错。用于指定Bean的名称,在Bean被依赖时使用,在获取Bean时使用等
  • name:用于指定Bean的别名,bean标签的name属性也是不能重复,且id和name属性也不能重复,name标签应该等同于id属性。
  • class :  用来定义类的全限定名(包名+类名)。只有子类Bean不用定义该属性。
  • singleton(默认为“true”):定义Bean是否是Singleton(单例)。如果设为“true”, 表示为单例模式、则在BeanFactory作用范围内,只维护此Bean的一个实例。如果设为“flase”,表示原型模式 、Bean将是Prototype(原型)状态,BeanFactory将为每次Bean请求创建一个新的Bean实例。
  • depends-on:用于指定当前Bean的依赖Bean,强制指定的Bean在当前Bean初始化之前先完成初始化。
  • init-method:用于指定当前Bean的初始化方法,在Bean实例创建好后,首先会调用其指定名称的方法。
  • destory-method:用于指定当前Bean的销毁方法,在Bean即将被销毁之前会自动调用该属性指定的方法。
  • lazy-init:用于指定当前Bean的初始化时间,若值为true表示在初次调用时才会自动创建实例并初始化,false表示在IoC容器创建的时候就会完成创建和初始化。
  • autowire:用于指定当前Bean的依赖关系的自动注入方式 , autowire(自动装配,默认为“default”)、

           autowire 其有五个值:

                 no : 默认值,不进行自动装配

                 byName : 根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配

                 byType值:表示通过class指定的类型来自动装配、如果存在多个该类型bean,那么抛出异常,并指出不能使用byType方式进行自动装配;如果没有找到相匹配的bean,则什么事都不发生,也可以通过设置dependency-check="objects" 让Spring抛出异常。

               constructor值:表示使用构造函数的参数进行自动装配(参数的类型匹配)。如果容器中没有找到与构造器参数类型一致的bean, 那么抛出异常

               autodetect值:表示自动进行选择匹配方式,首先进行constructor自动装配,若不存在构造方法则使用byType方式进行自动装配;如果发现默认的构造器,那么将使用byType方式,否则采用 constructor。

                default:由上级标签的default-autowire属性确定。  

  • scope:Bean的作用范围 

           scope值  : 

                singleton值: 默认值是单例的。只有一个实例对象,就断创建多个对象,这些对象也是同一个对象,地址相同。此外,singleton类型的bean定义,从容器启动,到他第一次被请求而实例化开始,只要容器不销毁或退出,该类型的bean的单一实例就会一直存活。表示整个IOC容器共享一个Bean,也就是说每次说每次通过getBean获取的bean都是同一个。

                prototype值: 多例的 。每次对该bean请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)时都会创建一个新的bean实例。

                request值:web项目中spring创建一个bean对象,将对象存到request域中。Spring容器,XmlWebApplicationContext 会为每个HTTP请求创建一个全新的RequestPrecessor对象,当请求结束后,该对象的生命周期即告结束,如同Java web中request的生命周期。当同时有100个HTTP请求进来的时候,容器会分别针对这10个请求创建10个全新的RequestPrecessor实例,且他们相互之间互不干扰。

               session值:每次会话请求对应一个bean实例。比如存放登录信息。

               globalSession:web项目中,应用在prolet环境,如果没有prolet环境那么globalSession相当于session。

  • dependency-check属性:用于指定Bean的依赖检查模式,检查依赖关系是否完整,与自动装配合用。

            dependency-check属性 其有四个值:

                     simple值:表示针对基本类型、字符串、集合进行依赖检查

                     object值:表示对引用对象进行依赖检查 

                     all值:表示对基本类型、字符串、集合、引用对象全部进行依赖检查

                     none值:表示不进行任何依赖检查,默认情况。

  • factory-method : 工厂方法属性,通过该属性,我们可以调用一个指定的静态工厂方法,创建bean实例。
  • factory-bean : 就是生成bean的工厂对象,factory-bean属性和factory-method属性一起使用,首先要创建生成bean的工厂类和方法。

 property标签

  • name属性:用于指定属性的名称,与类中的set方法后方的名称一致
  • value属性:用于指定该属性的值,用于指定的值是基本类型、字符串类型
  • ref属性:用于指定该属性的值,用于指定的值是引用对象类型(即其他的Bean),ref后面的值为另一个Bean的id
  • value标签:用于指定属性的值,类型为基本类型、字符串类型,值为标签内的文本内容,可以使用null值将属性的值设置为null
  • ref标签:用于指定属性的值,类型为引用对象类型,值为其属性的值,

             其属性有以下三种:

                  local属性:用于指定依赖本地Bean实例,即同一XML文件中定义的Bean

                  bean属性:用于指定依赖的Bean实例,可以是不同XML文件中的Bean

                  parent属性:用于指定依赖的Bean实例,可以是当前BeanFactory或ApplicationContext的父BeanFactory或ApplicationContext中的Bean

集合标签

list标签:用于声明该依赖对象为一个list集合,其下用value和ref标签来指定list中的各值(基本、字符串、对象等)
set标签:用于声明该依赖对象为一个set集合,其用法与list标签相同。
map标签:用于声明该依赖对象为一个map集合,其下用entry标签来声明一个键值对
entry标签:用于声明map集合下的一个键值对,其下用key属性指明键,value/ref标签指明值
key属性:用于指明键值对中的键,它一般为字符串

相关文章:

  • Comparator接口与Lambda表达式
  • 回调函数——qsort的模拟实现
  • 『MySQL快速上手』-③-库的操作
  • 一、Hadoop初始化配置(final+ubuntu保姆级教程)
  • 钉钉内嵌H5遇到的一些问题
  • html中使用JQ自定义锚点偏移量
  • 价钱统计
  • 数字摄影测量
  • 换服还是掀桌?哪条才是程序员的出路?
  • C++ [继承]
  • 【delphi】中 TNetHTTPClient 注意事项
  • springboot(ssm 高校教师电子名片系统 Java(codeLW)
  • 【ARM Trace32(劳特巴赫) 使用介绍 2 - Veloce 环境中使用trace32 连接 Cortex-M33】
  • C++ http协议POST body raw 字段向服务器发送请求
  • Linux Vim批量注释和自定义注释
  • CentOS7简单部署NFS
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • gf框架之分页模块(五) - 自定义分页
  • input实现文字超出省略号功能
  • Java基本数据类型之Number
  • mac修复ab及siege安装
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • python 装饰器(一)
  • Redis字符串类型内部编码剖析
  • vue.js框架原理浅析
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 如何实现 font-size 的响应式
  • 设计模式(12)迭代器模式(讲解+应用)
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • #pragma 指令
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (pojstep1.3.1)1017(构造法模拟)
  • (办公)springboot配置aop处理请求.
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (五)IO流之ByteArrayInput/OutputStream
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)visual stdio 书签功能介绍
  • (转载)从 Java 代码到 Java 堆
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .net core 依赖注入的基本用发
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .net反混淆脱壳工具de4dot的使用
  • .net项目IIS、VS 附加进程调试
  • @ComponentScan比较
  • @ConfigurationProperties注解对数据的自动封装
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • [20161214]如何确定dbid.txt
  • [CISCN 2023 初赛]go_session
  • [IE6 only]关于Flash/Flex,返回数据产生流错误Error #2032的解决方式
  • [IE编程] IE8的SDK 下载