<?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 --> <bean id="helloworld" class="com.demo.beans.HelloWorld"> <property name="name" value="Spring"></property> </bean> </beans>
<!-- 配置bean
class : bean的全类名,通过反射的方式在IOC容器中创建Bean,所以要求Bean中必须有无参数的构造器
id:标识容器中的bean,id唯一
-->
在SpringIOC容器读取Bean配置创建Bean实例之前,必须对他进行实例化,只有在容器实例化后,才能从IOC容器中获取Bean实例并使用。
Spring提供了两种类型的IOC容器实现
----BeanFactory IOC容器的基本实现
----ApplicationContext提供了更多的高级特性,是BeanFactory的子接口
前者是Spring框架的基础设置,面向Spring本身;
后者是面向使用Spring框架的开发者,几乎所有的应用场合都使用后者,而非前者。
ApplicationContext的主要实现类:
----ClassPathXmlApplicationContext : 从类基路径下加载配置文件
----FileSystemXmlApplicationContext : 从文件系统中加载配置文件
ConfigurableApplicationContext扩展于ApplicationContext,新增两个主要方法:
refresh()和close(),让ApplicationContext具有启动,刷新和关闭上下文的能力
ApplicationContext在初始化上下文时就实例化所有单利bean
WebApplicationContext是专门为WEB应用而准备 ,它允许从相对于WEB根目录的路径中完成初始化工作
依赖注入(属性注入,构造器注入,工厂方法模式注入)
属性注入:就是<property name="username" value="jim"/>
构造器注入:
使用构造器注入属性值可以指定参数的位置和参数的类型(可混用),以区分重载的构造器。
Car.java
package com.demo.beans; public class Car { private String brand; private String corp; private int price; private int maxspeed; public Car(String brand, String corp, int price) { this.brand= brand; this.corp = corp; this.price = price; } @Override public String toString() { return this.brand+this.price; } }
<bean id="car" class="com.demo.beans.Car"> <constructor-arg value="Audi"></constructor-arg> <constructor-arg value="Shanghai"></constructor-arg> <constructor-arg value="10000"></constructor-arg> <!-- <constructor-arg value="10000" index="2"></constructor-arg> --> <!-- <constructor-arg value="10000" type="int"></constructor-arg> --> </bean>