一、Spring开发
1,Spring源码下载地址:
http://repo.springsource.org/libs-release-local/org/springframework/spring/
目录结构:(Spring目录结构)
*docs :API和开发规范
*libs:jar包和源码
*schema:约束
2,Spring开发核心lib包
3,IOC和DI
IOC:控制反转,将对象的创建权交给了Spring。
DI:dependency injection 依赖注入,需要有IOC的环境,Spring穿件这个类的过程中,Spring将类的依赖属性设置进去。
4,BeanFactory和ApplicationContext的区别
BeanFactory:是在getBean的时候才会生成类的实例。
ApplicationContext:是在加载applicationContext.xml的时候创建。
5,Spring配置文件中提示的配置
复制路径:
* http://www.springframework.org/schema/beans/spring-beans.xsd
查找XML Catalog:
6,Scope属性bean的作用范围
singleton:默认值,单利的
prototype:多例的。
request:WEB项目中,创建一个bean的对象,将对象存入到request作用域中。
session:WEB项目中,创建一个bean的对象,将对象存入到session作用域中。
globalSession:WEB项目中,应用在porlet环境,如果没有porlet环境那么globalSession相当于session。
二,Spring 中 bean属性的注入方式
1,Spring 的Bean的属性注入
(1)构造方法xml的注入
<!-- 1,构造方法依赖注入 -->
<bean id="myPerson" class="com.itcast.test4.Person">
<constructor-arg name="pName" value="张三"></constructor-arg>
<constructor-arg name="age" value="30"></constructor-arg>
</bean>
<bean id="car" class="com.itcast.test4.Car1">
<constructor-arg name="name" value="宝马" />
<constructor-arg name="price" value="30万" />
<constructor-arg name="person" ref="myPerson" />
</bean>
构造方法对应java类
public class Car1 {
private String name;
private String price;
private Person person;
public Car1(String name, String price, Person person) {
super();
this.name = name;
this.price = price;
this.person = person;
}
}
(2)set方法xml属性的注入
<!--2,set方法依赖注入 -->
<bean id="persion2" class="com.itcast.test4.Person2">
<property name="pName" value="张三"></property>
<property name="age" value="23"></property>
</bean>
对应的java类
public class Person2 {
private String pName;
private int age;
public String getpName() {
return pName;
}
public void setpName(String pName) {
this.pName = pName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
(3)属性对象类型的注入
<!--2,set方法依赖注入 -->
<bean id="persion2" class="com.itcast.test4.Person2">
<property name="pName" value="张三"></property>
<property name="age" value="23"></property>
</bean>
<bean id="car2" class="com.itcast.test4.Car2">
<property name="name" value="李四" />
<property name="price" value="20" />
<property name="person" ref="persion2" />
</bean>
对应的java类:
public class Car2 {
private String name;
private String price;
private Person2 person;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public Person2 getPerson() {
return person;
}
public void setPerson(Person2 person) {
this.person = person;
}
}
三、复杂类型的注入(集合依赖注入)
(1)数组类型
<bean id="user" class="com.itcast.test4.User">
<property name="arr">
<list>
<value>123</value>
<value>456</value>
</list>
</property>
</bean>
对应的java代码
public class User {
private String arr[];
public String[] getArr() {
return arr;
}
public void setArr(String arr[]) {
this.arr = arr;
}
}
(2)list集合的注入
<bean id="user" class="com.itcast.test4.User">
<property name="list">
<list>
<ref bean="myPerson" />
</list>
</property>
</bean>
对应的java类
public class User {
private List<Person> list;
public List<Person> getList() {
return list;
}
public void setList(List<Person> list) {
this.list = list;
}
}
(3)map集合的注入
<bean id="user" class="com.itcast.test4.User">
<property name="map">
<map>
<entry key-ref="myPerson" value="234" />
<entry key-ref="myPerson" value="1234" />
</map>
</property>
</bean>
对应的java类
public class User {
private Map<Person, String> map;
public Map<Person, String> getMap() {
return map;
}
public void setMap(Map<Person, String> map) {
this.map = map;
}
}
(4)Properties的注入
<bean id="user" class="com.itcast.test4.User">
<property name="pro">
<props>
<prop key="username">张三</prop>
<prop key="age">20</prop>
</props>
</property>
</bean>
对应的java类
public class User {
private Properties pro;
public Properties getPro() {
return pro;
}
public void setPro(Properties pro) {
this.pro = pro;
}
}
四、Spring多个配置文件合作开发
1,创建工厂的时候加载多个配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml","applicationContext2.xml");
2,在主配置文件中包含子配置文件
<import resource="applicationContext2.xml"></import>
五、实例代码