Java-Spring框架创建Bean对象的三种方式

Spring基础知识:

控制反转 (IOC):
Spring通过一种称作控制反转的技术促进了松耦合。即 一个对象依赖的其他对象会通过被动的方式传递进来,而不是自己主动创建或者查找依赖对象。
面向切面编程(AOP):
在不改变软件原有功能的情况下,为软件扩展横向功能。AOP机制可以让开发者把业务流程中的通用功能(如登录,注册等)抽取出来,单独编写功能代码,在业务流程过程中,Spring框架会根据业务流程要求,自动把独立编写的功能模块代码切入到流程的合适位置。

Spring框架创建Bean对象的三种方式:

  1. 调用构造器创建Bean
  2. 调用静态工厂方法创建Bean
  3. 调用实例工厂方法创建Bean

构造器创建Bean示例如下:

package constructor;
/**
实体类
*/
public class Person {
	private String username;
	{
		System.out.println("使用构造器创建Bean对象");
	}
	public Person(String username){
		this.username=username;
	}
	public void hello(){
		System.out.println("调用普通方法对"+username+"说你好");
	}
}

配置文件:beanConstructor.xml


        
       
        
        	
        


package constructor;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
测试类
*/
public class TestBean {
	public static void main(String[] args) {
		//1初始化容器对象
		AbstractApplicationContext aac = new ClassPathXmlApplicationContext("beanConstructor.xml");
		//2创建bean实例 
		Person ps = aac.getBean("person",Person.class);
		//3调用bean实例方法
		ps.hello();
		//4关闭容器对象
		aac.close();
	}
}

静态工厂创建Bean示例如下:

//定义接口  统一接收类型
public interface People {
	public void hello();
}

//具体实现类    Chinese
public class Chinese implements People{
	private String nation;
	
	public void setNation(String nation) {
		this.nation = nation;
	}

	public void hello(){
		System.out.println("我是"+nation+"人");
	}
}

//具体实现类    American
public class American implements People{
	private String nation;
	
	public void setNation(String nation){
		this.nation = nation;
	}
	
	public void hello() {
		System.out.println("我是"+nation+"人");
	}

}

//定义静态工厂,编写实例方法
public class PeopleFactory {
	public static People getPeople(String arg){
		if(arg.equalsIgnoreCase("chinese")){
			return new Chinese();
		}
		else if(arg.equalsIgnoreCase("american")){
			return new American();
		}
		else{
			return new People(){
				@Override
				public void hello() {
					System.out.println("世界向你问好");
				}
				
			};
		}
	}
}

配置文件:beanStaticFactory.xml


        
        
        
        	
        	
        	
        
        
        	
        	
        


测试类:
//1初始化容器对象  (容器对象可以只初始化一个,此处编写为方便分开书写)
AbstractApplicationContext aacC = new ClassPathXmlApplicationContext("beanStaticFactory.xml");
//2创建bean实例 
People ppC = aacC.getBean("chinese",Chinese.class);
//3调用bean实例方法
ppC.hello();
//4关闭容器对象
aacC.close();

//1初始化容器对象
AbstractApplicationContext aacA = new ClassPathXmlApplicationContext("beanStaticFactory.xml");
//2创建bean实例 
People ppA = aacA.getBean("american",American.class);
//3调用bean实例方法
ppA.hello();
//4关闭容器对象
aacA.close();

实例工厂创建Bean示例如下:

实现类,测试类,实例工厂(非静态方法)基本一致,仅配置文件需要改动
配置文件示例如下:


        
        
        
        
        	
        	
        
        
        	
        	
        

你可能感兴趣的:(Java-Spring框架创建Bean对象的三种方式)