<?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-3.0.xsd"> //前缀
<bean id="helloWorld" class="com.tutorialspoint.HelloWorld">
<property name="message" value="Hello World!"/>
</bean>
1、创建一个xxx.XML文件,前缀必须带
2、<bean></bean>标签代表POJO,id:类名,class:类的全名
property:name和POJO中属性一一对应,有value:直接赋值 或者 ref:引用容器中已有的beans(id)
3、获取ApplicationContext:
ApplicationContext context = new ClassPathXmlApplicationContext(configLocation:"xxx.xml");
Bean 与 Spring 容器的关系
Bean的作用域:(<bean>标签中,通过scope="xxxxx"改变值)
1、singleton 是默认(缺省)的作用域,也就是说,当定义 Bean 时,如果没有指定作用域配置项,则 Bean 的作用域被默认为 singleton。
Singleton是单例类型,就是在创建起容器时就同时自动创建了一个bean的对象,不管你是否使用,他都存在了,每次获取到的对象都是同一个对象。
适用于无状态对象(Stateless Bean):就是没有实例变量的对象,不能保存数据,是不变类,是线程安全的。bean一旦实例化就被加进会话池中,各个用户都可以共用。即使用户已经消亡,bean 的生命期也不一定结束,它可能依然存在于会话池中,供其他用户调用。由于没有特定的用户,那么也就不能保持某一用户的状态,所以叫无状态bean。
2、Prototype是原型类型,它在我们创建容器的时候并没有实例化,而是当我们获取bean的时候才会去创建一个对象,而且我们每次获取到的对象都不是同一个对象。
适用于有状态对象(Stateful Bean):就是有实例变量的对象,可以保存数据,是非线程安全的。每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即“有状态”;一旦用户灭亡(调用结束或实例结束),bean的生命期也告结束。即每个用户最初都会得到一个初始的bean。
Bean 定义继承:
1、子 bean 的定义继承父定义的配置数据。子定义可以根据需要重写一些值,或者添加其他值。
2、Bean 定义的继承与 Java 类的继承无关,但是继承的概念是一样的。
3、基于 XML 的配置元数据时,通过使用parent(父)属性,指定父 bean 作为该属性的值来表明子 bean 的定义。
4、一个 Bean 定义模板时,你不应该指定class(类)的属性,而应该指定带 true 值的abstract(抽象)属性。
5、父 bean 自身不能被实例化,因为它是不完整的,而且它也被明确地标记为抽象的。它仅仅作为一个纯粹的模板 bean 定义来使用的,充当子定义的父定义使用。