Spring——bean的基本配置依赖注入
Posted 老赖的小弟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring——bean的基本配置依赖注入相关的知识,希望对你有一定的参考价值。
文章目录
前言
今天我想给大家随便说说的内容在下面
一、bean的基本配置
1.基本配置
看我圈里的东西,主要看id、class、name、value
1、id 属性:bean 的名称,在 IOC 容器中,bean 的名称必须是唯一的。
2、如果没有指定 id 属性,那么将会用 class 属性作为 bean 的名称。
3、Class 属性:类的全名称(包名+类名)
2.spring容器
在 Spring IOC 容器读取 Bean 配置创建 Bean 实例之前, 必须对它进行实例化. 只有
在容器实例化后, 才可以从 IOC 容器里获取 Bean 实例并使用(要获取 bean 就必须要先实
例化 IOC 容器,然后从容器中获取 bean)
Spring 提供了两种类型的 IOC 容器实现.
1、BeanFactory——> IOC 容器的基本实现
2、ApplicationContext——> 提供了更多的高级特性. 是 BeanFactory 的子接口
而BeanFactory 是 Spring 框架的基础设施,面向 Spring 本身;ApplicationContext 面向使用 Spring 框架的开发者,几乎所有的应用场合都直接使用 ApplicationContext 而非底层的BeanFactory。无论使用何种方式, 配置文件是相同的。
ApplicationContext 的主要实现类:
ClassPathXmlApplicationContext:从 类路径下加载配置文件
FileSystemXmlApplicationContext: 从文件系统中加载配置文件
ConfigurableApplicationContext 扩展于 ApplicationContext,新增加两个主要方法:refresh()和 close(),让 ApplicationContext 具有启动、刷新和关闭上下文的能力,ApplicationContext 在初始化上下文时就实例化所有单例的 Bean。(默认 spirng 容器中的 bean 都是单例对象)WebApplicationContext 是专门为WEB 应用而准备的,它允许从相对于 WEB 根目录的路径中完成初始化工作
3.从 IOC 容器中获取 Bean
调用 ApplicationContext 的 getBean() 方法
getBean()方法的参数:
String:根据配置文件中的 ID 属性来获取 bean
Class:根据对象的类型来获取 bean。注意:如果只指定要返回的 Bean 的类型就想从 IOC容器中取得 Bean 的前提是该类型的 Bean 在 IOC 容器中只有一个,如果重复就会报错
我们写好的配置文件如下:
调用 ApplicationContext 的 getBean() 方法
第一步创建ioc容器
第二步调用getBean方法
二、依赖注入
所谓依赖注入:通过配置文件,构造方法等向 bean 的属性中注入值。在 Spring 中依赖注入有三种方式。通过属性注入;通过构造方法注入;通过工厂方法注入(强烈不推荐使用)
1.属性注入(为了大家理解光文字没意思,加上代码图片)
属性注入即通过 setter 方法注入 Bean 的属性值或依赖的对象
属性注入使用 元素, 使用 name 属性指定 Bean 的属性名称,value 属性或 子节点指定属性值。属性注入是实际应用中最常用的注入方式
1.1创建一个测试需要用的cat类
代码如下(cat类):
package com.cc;
public class Cat
// 就给一个名字属性
private String name;
//无参构造函数
public Cat()
//有参构造函数
public Cat(String name)
this.name = name;
//get/set方法
public String getName()
return name;
public void setName(String name)
this.name = name;
@Override
public String toString()
return "Cat" +
"name='" + name + '\\'' +
'';
1.2配置resources 文件夹下 spring-2.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="cat" class="com.cc.Cat">
<property name="name" value="大橘"></property>
</bean>
</beans>
在上面我向 cat这个 bean 的 name 属性中注入值“大橘”
1.3测试
代码如下(测试):
import com.cc.Cat;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class CatSpringTest
public static void main(String[] args)
//1、创建 ioc 容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-2.xml");
//2、从容器中获取 bean
Cat cat = (Cat) ctx.getBean("cat");
//3、调用方法
System.out.println(cat);
代码如下(输出):
信息: Loading XML bean definitions from class path resource [spring-2.xml]
Catname='大橘'
Process finished with exit code 0
1.构造方法注入(用得不多)
构造方法的注入有好几种方法,比如原生的使用构造方法注入值,还有按照 index 来匹配构造方法的参数 、按照类型匹配输入参数(麻烦不推荐使用)、通过参数名称来匹配输入参数,其实都是xml配置文件发生一点改变如下图圈中位置,继续看下面就知道了,这里的测试类就将就用上面的cat类
1.1构造方法注入值
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="cat1" class="com.cc.Cat">
<constructor-arg value="小花"></constructor-arg>
</bean>
</beans>
1.2按照 index 来匹配构造方法的参数
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="cat2" class="com.cc.Cat">
<constructor-arg value="小花" index="0"></constructor-arg>
</bean>
</beans>
1.3通过参数名称来匹配输入参数
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="cat3" class="com.cc.Cat">
<constructor-arg value="小白" name="name"></constructor-arg>
</bean>
</beans>
至于测试都是如上面的一样
1、建立IOC容器
2、getBean
总结
咱们开始学习知识嘛,就得把书读薄,捡重要的常用的学,那样才学的轻松一点,免生厌烦之感,spring的东西还是很多的。
以上是关于Spring——bean的基本配置依赖注入的主要内容,如果未能解决你的问题,请参考以下文章
SPRING01_概述配置文件bean实例化依赖注入的方式依赖注入的数据类型分模块开发API使用
Spring -- Spring配置文件详解(Bean实例化的三种方式IoC(控制反转) 与 DI(依赖注入)依赖注入详解)