网上很多关于Spring Ioc容器的文章和教程,本文记录下博主学Spring的时候对Spring容器的理解和认识,后面随着深入的了解和应用可能有更新。
什么是容器
个人理解,容器就是个黑盒子工厂,作用就是:创建对象,初始化对象的参数,然后其他地方需要用到这些对象都从这个黑盒子里面取,这些对象被称为Spring Beans。 当然里面涉及到很多细节,比如元数据通过xml、注释、代码等方式获取(元数据就是实例化对象的时候传的参数),容器还会做比如对象生命周期的管理、依赖注入管理组件等等。
容器具体有哪些
Pring提供了2种不同类型的容器
1.BeanFactory 简单容器
2.ApplicationContext 包含BeanFactory的功能,还提供更多功能 (一般使用这个)
什么是Beans
JavaBeans是一个接口规范,JavaBeans是一个Java的类,一般来说,这样的Java类将对应于一个独立的 .java文件,遵循以下规范:
1.有一个public默认构造器(例如无参构造器,)属性使用public 的get,set方法访问,也就是说设置成private,
2.同时get,set方法与属性名的大小也需要对应。例如属性name,get方法就要写成,public String getName(){},N大写。
3.需要序列化。这个是框架,工具跨平台反映状态必须的
Spring Beans就是这些类的实例化对象。
如何定义 Bean
之前说了可以通过xml、注释、代码等方式,下面介绍xml方式,注释后面再说,还没学到
在 src目录下面的xml配置文件中,定义一个bean 至少需要一个id或name, 然后一个class,
<?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="helloWorld" class="com.xtc.HelloWorld">
</bean>
</beans>
bean的属性上可以有一些参数可以控制作用域,创建,销毁等,比如:scope、init-method、lazy-init、destroy-method等等,具体参数和作用看教程吧,不赘述了,<<w3cschool教程地址>>
<bean id="helloWorld" class="com.xtc.HelloWorld" destroy-method="dsct">
</bean>
可以对类里面的参数进行赋值,定义的这个就叫元数据
<bean id="helloWorld" class="com.xtc.HelloWorld" destroy-method="dsct">
<property name="message" value="Hello World" />
</bean>
这个message就对应着HelloWorld.java 的 messages属性(注意message是private,需要设置set方法 setMessage())
bean也可以继承
ok,Spring容器和容器创建的Spring bean就理解到这里