JavaSpring中的Bean(概述、配置、实例化、作用域)

Bean的概念
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。

Bean的本质就是java当中的一个类,而Spring的bean其实就是对实体类的一个引用。在Bean配置文件当中使用< bean> 和 < /bean>标记定义每一个bean

Bean的配置
Spring容器支持俩种文件进行配置,分别是xmlproperties
Bean定义包括容器必须知道的关于bean的基本信息,如:创建bean的过程,bean的生命周期的详细信息,以及该bean的各种依赖。

Bean标签标记的属性:

  • id:唯一标识符
  • name:用于指定bean的别名
  • class:用于指定bean类的全限定名称(包名和类名)
  • scope:用于定义已被定义的bean的作用域,对于不同取值有不同效果。默认值是singleton单例,表示不管怎么获取Bean对象,这一些Bean对象都是同一个,

在配置文件当中对bean进行配置:id为唯一标识 自定义,class指向一个类

<bean id="Person" class="com.lzq.spring.model.Person">
		<property name="name" value="月月鸟"></property>
		<property name="age" value="18"></property>
	</bean>

Bean属性id的name的详解:

  • 当Bean标签没有id和name属性的时候,则类名表示该bean的名字
  • 当出现只有id或者name的时候,当name属性的值用分隔符分开,第一个字符串表示该bean的名字,当name的属性只有一个的时候,与id作用相同。

当一个name属性有很多值的时候,我们可以使用实例化的ApplicationContext的对象调用getAliases方法,该方法传入一个name的值,再使用一个数组接收,使用for循环输出。使用该方法的输出的结果表示所有id name对应的值(传入的值不包括)。如下代码所示:

String [] a=ac.getAliases("a") ;
	//这个地方的ac就是一个ApplicationContext对象
	System.out.println("获取别名:");
	for(String b:a) {
		System.out.println(b);
	}

Bean的实例化
在面向对象当中,如果要使用莫一个对象,必须要先对其进行实例化,同意,在Spring当中要想使用也需要进行实例化,实例化Bean有三种方式。

  • 构造器实例化
    在上述代码使用的就是构造器实例化,也是最常用的方法
  • 静态工厂方式实例化
    顾名思义,是对一个静态对象进行实例化,Static修饰的方法在其他类当中不需要实例化类,可以直接使用类名.方法名调用。
  • 实例工厂方式实例化
    在使用实例化工厂实例化的时候相比于静态工厂多了一句,如下图:
    在这里插入图片描述
    Bean的作用域
    Spring4.3提供了7种作用域。如下图所示:
    在这里插入图片描述
    在这7种作用域中,singleton和prototype是最常用的两种作用域
    首先是对于singleton作用域:实例化的对象并对其直接输出,可以看到是相同的参数。
    在这里插入图片描述
    再看一下prototype作用域,与singleton异曲同工,可以看到输出的结果是不同的参数:
    在这里插入图片描述
发布了285 篇原创文章 · 获赞 39 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_44973159/article/details/104578461
今日推荐