Java容器
如List,ArrayList,Vector,Map。
容器可以管理对象的生命周期、对象与对象之间的依赖关系,您可以使用一个配置文件(通常是XML),在上面定义好对象的名称、如何产生(Prototype 方式或Singleton 方式)、哪个对象产生之后必须设定成为某个对象的属性等。
在启动容器之后,所有的对象都可以直接取用,不用编写任何一行程序代码来产生对象,或是建立对象与对象之间的依赖关系。
Spring IoC 容器
IOC 容器是具有依赖注入功能的容器,它可以创建对象。控制反转是指new实例不由程序员来做而是交给Spring容器来做。IOC 容器还负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。这些对象叫做Bean。
Spring中两种IoC容器:BeanFactory和 ApplicationContext。
ApplicationContext 容器包括 BeanFactory 容器的所有功能。
程序中建立容器接口的引用(虽然接口不能实例化,但是任何实现该接口的类的实例都可以存储在该接口类型的引用中)来调用容器接口的方法进而管理bean。
public class MainApp {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("Beans.xml");
HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
obj.getMessage();
}
}
Bean配置
有三种方法:
XML配置
XML是有逻辑的文本,被设计用来存储和传输数据。这个逻辑就是树形数据结构。
XML 没有预定义的元素。用户可以随便命名元素。(元素指的是从(且包括)开始标签直到(且包括)结束标签的部分)
XML Schema是W3C制定的基于XML格式的XML文档结构描述标准。
一个XML Schema会定义:文档中出现的元素、文档中出现的属性、子元素、子元素的数量、子元素的顺序、元素是否为空、元素和属性的数据类型、元素或属性的默认和固定值。
直接点说就是一个xml引入的XML Schema中定义了这个xml的预定义元素。
xsi是w3c认证的专用的命名空间,是用来引用XML Schema的。
引入xmlns:xsi=“一个长得像url的命名空间”。就可以通过在根结点上使用xsi:schemaLocation属性来指定要引用的XML Schema文件(.xsd文件)格式是:
xsi:schemaLocation=“命名空间 具体文件地址”
一个Bean配置文件结构:
<?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-->
</beans>
一个bean长这样:
- id就是bean的id
- class是这个bean的类
- property元素的name属性表示类的属性,value就是类的属性的value
<bean id="" class="">
<property name="" value=""/>
</bean>
(元素id class property的名字叫id class property 应该是由IoC容器定义的)
(xsd描述了这个定义)