1. Spring 的概述:
1.2 为什么学习 Spring:
1.2.1 Spring 的版本:
1.2.2 Spring 的入门案例:(IOC)
1.2.2.1 IOC 的底层实现原理
1.2.2.2 步骤一:下载 Spring 的开发包:
1.2.5 Spring 的相关配置:
1.2.5.1 id 属性和 name 属性标签的配置
id:Bean起个名字.在约束中采用ID的约束:唯一.必须以字母开始,可以使用字母、数字、连字符、
下划线、句话、冒号id:不能出现特殊字符.
<beanid=”bookAction”>
name:Bean 起个名字.没有采用ID的约束.name:出现特殊字符.如果<bean>没有 id 的话,name可
以当做 id使用.
*整合 struts1的时候:
<beanname=”/loginAction”>
1.2.5.2 scope 属性:Bean 的作用范围.
*singleton:默认值,单例的.
*prototype:多例的.
*request:WEB项目中,Spring创建一个 Bean的对象,将对象存入到 request域中.
*session:WEB项目中,Spring创建一个 Bean的对象,将对象存入到 session域中.
*globalSession:WEB项目中,应用在Porlet环境.如果没有Porlet环境那么 globalSession相当
于 session.
1.2.5.3 Bean 的生命周期的配置:
通过配置<bean>标签上的 init-method作为 Bean的初始化的时候执行的方法,配置 destroy-method
作为 Bean的销毁的时候执行的方法。
销毁方法想要执行,需要是单例创建的 Bean而且在工厂关闭的时候,Bean才会被销毁.
1.2.6 Spring 的Bean 的管理 XML 的方式:
1.2.6.1 Spring 生成 Bean 的时候三种方式(了解)
【无参数的构造方法的方式:】
<!--方式一:无参数的构造方法的实例化-->
<beanid="bean1"class="cn.et.spring.demo3.Bean1"></bean>
【静态工厂实例化的方式】
提供一个工厂类:
publicclassBean2Factory{
publicstaticBean2getBean2(){
returnnewBean2();
}
}
<!--方式二:静态工厂实例化Bean-->
<beanid="bean2"class="cn.et.spring.demo3.Bean2Factory"
factory-method="getBean2"/>
【实例工厂实例化的方式】
提供 Bean3的实例工厂:
publicclassBean3Factory{
publicBean3getBean3(){
returnnewBean3();
}
}
<!--方式三:实例工厂实例化Bean-->
<beanid="bean3Factory"class="cn.et.spring.demo3.Bean3Factory"></bean>
<beanid="bean3"factory-bean="bean3Factory"factory-method="getBean3"></bean>
1.2.6.2Spring 的 Bean 的属性注入:
【构造方法的方式注入属性】
<!--第一种:构造方法的方式-->
<beanid="car"class="cn.itcast.spring.demo4.Car">
<constructor-argname="name"value="保时捷"/>
<constructor-argname="price"value="1000000"/>
</bean>
【set 方法的方式注入属性】
<!--第二种:set方法的方式-->
<beanid="car2"class="cn.et.spring.demo4.Car2">
<propertyname="name"value="奇瑞QQ"/>
<propertyname="price"value="40000"/>
</bean>
1.2.6.3Spring 的属性注入:对象类型的注入:
<!--注入对象类型的属性-->
<beanid="person"class="cn.et.spring.demo4.Person">
<propertyname="name"value="会希"/>
<!--ref属性:引用另一个bean的id或name-->
<propertyname="car2"ref="car2"/>
</bean>
1.2.6.4名称空间 p 的属性注入的方式:Spring2.x 版本后提供的方式
第一步:引入 p名称空间
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
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">
第二步:使用 p名称空间.
*普通属性:p:属性名称=””
*对象类型属性:p:属性名称-ref=””
<!--p名称空间的属性注入的方式-->
<beanid="car2"class="cn.et.spring.demo4.Car2"p:name="宝 马 7" p:price="1200000"/>
<beanid="person"class="cn.et.spring.demo4.Person"p:name=" 思 聪 "
p:car2-ref="car2"/>
1.2.6.5SpEL 的方式的属性注入:Spring3.x 版本后提供的方式.
SpEL:SpringExpressionLanguage.
语法:#{SpEL}
<!--SpEL的注入的方式-->
<beanid="car2"class="cn.et.spring.demo4.Car2">
<propertyname="name"value="#{'奔驰'}"/><propertyname="price"value="#{800000}"/>
</bean>
<beanid="person"class="cn.et.spring.demo4.Person">
<propertyname="name"value="#{'冠希'}"/>
<propertyname="car2"value="#{car2}"/></bean>
<beanid="carInfo"class="cn.et.spring.demo4.CarInfo"></bean>
引用了另一个类的属性
<beanid="car2"class="cn.et.spring.demo4.Car2">
<!--<propertyname="name"value="#{'奔驰'}"/>--><propertyname="name"value="#{carInfo.carName}"/>
<propertyname="price"value="#{carInfo.calculatePrice()}"/>
</bean>
1.2.6.6注入复杂类型:
<!--Spring的复杂类型的注入=====================-->
<beanid="collectionBean"class="cn.et.spring.demo5.CollectionBean">
<!--数组类型的属性-->
<propertyname="arrs">
<list>
<value>会希</value>
<value>冠希</value>
<value>天一</value>
</list>
</property>
<!--注入List集合的数据-->
<propertyname="list">
<list>
<value>芙蓉</value>
<value>如花</value>
<value>凤姐</value>
</list>
</property>
<!--注入Map集合-->
<propertyname="map">
<map>
<entrykey="aaa"value="111"/>
<entrykey="bbb"value="222"/>
<entrykey="ccc"value="333"/>
</map>
</property>
<!--Properties的注入-->
<propertyname="properties">
<props>
<propkey="username">root</prop>
<propkey="password">123</prop>