spring第三篇
在昨天下午更新sprin第二篇中,叙述了将对象交给spring创建和管理,今天在spring第三篇中,主要写两个点一是spring的思想 二是spring中bean元素的属性配置。
1 spring思想
1.1 IOC(Inverse of Control) :控制反转,将对象的创建权交给了 Spring.
1.2 DI :Dependency Injection 依赖注入.需要有IOC 的环境,Spring 创建这个类的过程中,Spring 将类的依赖的属性设置进去. 实现IOC 需要DI做支持,在注入方式上有set注入
构造函数注入 字段注入 其中set注入是最常用的,构造函数相对来说用的也相对较多。
2 spring 配置详解
2.1 bean元素的配置
clas属性 :被管理对象的完整类名
name属性:需要给被管理对象起一个名字 可以重复
id属性:与name属性一模一样 但是名字不可以重复 建议使用name属性
建立User和Plane两个类(分别有名字年龄以及名字和颜色的属性 生成get和set 同时生成toString方法)---》代码省略
配置代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
<bean name="user" class="com/lijun/Demo/User.java"></bean>
</beans>
同时bean元素还可以配置scope 属性 scope的默认值为sigleton ----->单例表示spring容器中只会存在一个实体
配置文件如下
<bean name="user" class="bean.User"></bean>
测试代码如下:
package demo;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import bean.User;
public class Demo {
@Test
public void fun1(){
ApplicationContext ac = new ClassPathXmlApplicationContext("NewFile.xml");
User u = (User)ac.getBean("u");
User u1 = (User)ac.getBean("u");
System.out.println(u==u1);
}
} 结果为true
当配置文件为:<bean name="u" class="bean.User" scope="prototype"></bean>
测试代码不变 结果为false