三.Spring4学习-----IOC (控制反转)创建对象的三种方式

一.使用IOC来创建对象的三种方式

1.通过无参的构造方法创建出来

public class User {
	public User() {
		System.out.println("user的无参构造方法");
	}
	private String name;
	public void setName(String name) {
		this.name = name;
	}
	public void show(){
		System.out.println("name="+name);
	}
}

2.通过有参的构造方法来创建对象

public class User {
	public User(String name) {
		super();
		this.name = name;
	}

	private String name;
	public void show(){
		System.out.println("name="+name);
	}
}

applicationContext.xml配置

三.Spring4学习-----IOC (控制反转)创建对象的三种方式_第1张图片

3.通过·工厂方法来创建对象

a)静态工厂

public class UserFactory {
	public static User newInstance(String name){
		return new User(name);
	}
}

applicationContext.xml配置

    
    	
    

b)动态工厂

public class UserDynamicFactory {
	public User newInstance(String name){
		return new User(name);
	}
}

applicationContext.xml配置

    
    
    	
    


二.IOC和DI

1.IOC

       IOC(Inversion of Control):其思想是反转资源获取的方向. 传统的资源查找方式要求组件向容器发起请求查找资源. 作为回应, 容器适时的返回资源. 而应用了 IOC 之后, 则是容器主动地将资源推送给它所管理的组件, 组件所要做的仅是选择一种合适的方式来接受资源. 这种行为也被称为查找的被动形式


2.DI

    DI(Dependency Injection) — IOC 的另一种表述方式:即组件以一些预先定义好的方式(例如: setter 方法)接受来自如容器的资源注入. 相对于 IOC 而言,这种表述更直接

3.IOC前生

需求:生成HTML或PDF格式的不同类型的报表

下图表示当我们需要生成时,自动去调用对应的类的方法,生成对应报表

三.Spring4学习-----IOC (控制反转)创建对象的三种方式_第2张图片


采用工厂设计模式

三.Spring4学习-----IOC (控制反转)创建对象的三种方式_第3张图片


采用控制反转

三.Spring4学习-----IOC (控制反转)创建对象的三种方式_第4张图片


三.配置文件详解

1.alias:为bean设置别名,可以设置多个别名

 
    
2.bean的设置

       
   
   
   
   	
   

3.为方便团队协作开发,可以通过import来实现


四.Spring容器

      在 Spring IOC 容器读取 Bean 配置创建 Bean 实例之前, 必须对它进行实例化. 只有在容器实例化后, 才可以从 IOC 容器里获取 Bean 实例并使用.

1.Spring 提供了两种类型的 IOC 容器实现.

      BeanFactory: IOC 容器的基本实现.
      ApplicationContext: 提供了更多的高级特性. 是 BeanFactory 的子接口.
      BeanFactory 是 Spring 框架的基础设施,面向 Spring 本身;ApplicationContext 面向使用 Spring 框架的开发者,几乎所有的应用场合都直接使用 ApplicationContext 而非底层的 BeanFactory
      无论使用何种方式, 配置文件时相同的.


2.ApplicationContext

      ApplicationContext 的主要实现类:
             ClassPathXmlApplicationContext:从 类路径下加载配置文件
             FileSystemXmlApplicationContext: 从文件系统中加载配置文件

      ConfigurableApplicationContext 扩展于 ApplicationContext,新增加两个主要方法:refresh() 和 close(), 让 ApplicationContext 具有启动、刷新和关闭上下文的能力
      ApplicationContext 在初始化上下文时就实例化所有单例的 Bean
      WebApplicationContext 是专门为 WEB 应用而准备的,它允许从相对于 WEB 根目录的路径中完成初始化工作



你可能感兴趣的:(Spring学习)