Spring配置Bean

bean管理包括两方面

1.创建bean对象

2.给bean注入相关属性

bean的配置方式

1.基于xml文件配置方式

2.注解方式

最早的时候我们是通过id来获取bean,就像之前我们所提到的全类名去获取bean

通过类型来获取bean

在我们前面去定义这些类的时候,都是设置了setter的方法的

当我们给某个bean对象设置了某个属性的时候,在这底层我们就会去使用这个setter方法去设定的

没有这个setter方法的话就是会去报错,代码上不会去报错,但是一但去执行,就会出现相关的错误

没有setter就会出现错误

在底层为什么能对应这个相关的属性,就是有我们的setter方法去进行相关的创建的

public void getMonsterByType() {
ApplicationContext ioc = new ClassPathXmlApplicationContext("beans.xml");
Monster monster = ioc.getBean(Monster.class);
System.out.println("monster=" + monster);
Monster monster2 = ioc.getBean(Monster.class);
System.out.println("monster == monster2 的值= " + (monster == monster2));
}

 传入一个class对象,直接去传入一个类型

在这个容器配置文件之中,我们存在了两个相同类型的配置文件,而且没有去只指定相关的id这样的话就会出现相关的错误

NoUniqueBeanDefinitionException

通过指定构造器配置Bean

可以去指定相应的全参构造器

构造器是可以有多个的,可以进行构造器的重载,但是不可能出现一样的

在类里面构造器不能是相同的。通过一组类型来指定是时,不能有完全相同的类型的构造的

通过p名称空间配置Bean

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--
在 spring
的 ioc
容器,
可以通过 p
名称空间来配置 bean
对象 -->
<bean id="monster04" class="com.hspedu.spring.beans.Monster"
p:monsterId="4"
p:name="
红孩儿"
p:skill="
吐火~"
/

通过ref来配置   ref就是(reference)相互引用

在开发的时候我们要知道这个是怎么进行配置的,不需要死记硬背

service中有一个dao层对象

  在配置对象中大多数对象都是相互独立的,不产生依赖的

我们在配置中使用ref

这个依赖注入的意思就是

在我们的一个对象中的相关属性是要去依赖注入到另外一个对象属性的

我某一个对象的属性要依赖到另外一个对象的属性

这个容器本来就是一个编译执行类型的

注意在spring容器中,他是作为一个整体来执行的,如果你引用到一个bean对象,这个spring容器会在内部的底层进行一个相关的扫描,会在内部自动取生成一个关联关系,所以对你的配置顺序是没有要求的

不会出现顺序之差别,但是在我们的日常开发的时候,还是要按顺序编写,阅读时会比较方便

另外一种方式进行验证

debuger中的他们的两个的编号都是相互对应的

通过内部Bean来配置属性

在spring的ioc容器中,我们可以直接配置内部bean对象

对集合数组属性进行配置

Java基础

对于properties是Hashtable的子类,是以key-value的形式所存在的

这里的properties 的key和value都是String

体会spring容器配置的特点---依赖注入

进行属性配置的时候,我们可以去使用用内部创建一个bean也可以通过外部引用一个bean(提前配置好的)

要根据我们的业务去决定

这个array是相对来说是比较灵活的,这样的话我们就要去根据要求的变化去进行相关的改变

spring的依赖注入是身份灵活的

使用utillist进行配置

如果在这个类中没有其他的构造器的话

我们的无参构造器是可以不去创建的,在底层中就可以给我们自动去创建无参构造器

但是我们出现了其他的构造器的时候

这个无参构造器是不可以去省略的,底层不会进行自己的创建的

可以之后在ref直接去引用过去,可以达到数据的复用的效果

属性级联赋值配置

级联属性赋值:spring的ioc容器是可以直接给对象的属性的属性赋值

eg:当我们现在已经存在了两个对象,分别为A,B对象两个

但是在A对象中,我们可以发现仍然有B对象进行了相关的包括,这样的话,B对象的本身也会存在着属于自己的属性,然而当我们的A对象想在自己的对象容器中把B的属性进行包含,这样就叫做级联属性赋值

通过静态工厂获取Bean

使用static代码块,进行相关的初始化

Java基础,特点随着类的加载而执行的,而且每次的执行只会去执行一次

对于静态工厂去获取的时候,我们的bean中设置就有所简化

通过实例工厂获取Bean

普通代码块进行一个初始化

每次调用一次都会去执行一次

对于静态工厂的时候,当我们产生了两个工厂的时候,他们所产生的相关的值仍然就是相同的,因为静态的类加载只会去调用一个

但是我们所产生的是一个动态的工厂时,我们倘若只有一个工厂的时候,他所调用的确实时两个相同的值,但是当我们去创建两个动态工厂去分别调用两个不同的值的时候,这两个值所产生的就是两个不同的

import pointer

通过FactoryBean获取Bean

通过FactoryBean获取Bean就是先去创建一个相关的类,里面包含着所有的对象属性

这样的话我们在之后配置文件的时候

这样我们就可以去直接对这个类里面的相关内容进行调用

  • 27
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值