创建一个简单spring实例,spring单例与多例,初始化与销毁

(1)在配置完spring提示框架后(上一遍文章有介绍),首先创建一个项目,导入sprig所需的jar包


然后书写主配置文件applicationContext.



           
           
           
           
  




又创建了一个window类,用来测试:

package cn.java.ioc1;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Window {

	public static void main(String[] args) {
		//启动框架(context代表spring容器)
		ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");//只写这句也可以调用YellowMouseWolf类中的无参构造方法
         //获取spring容器中创建的对象(通过id值获取)
		YellowMouseWolf yello1=(YellowMouseWolf)context.getBean("yellowMouseWolf");
		yello1.behavior();
		
	}

}
package cn.java.ioc1;

public class YellowMouseWolf {
	
	public YellowMouseWolf() {
		System.out.println("YellowMouseWolf----黄鼠狼出生");
		
	}
	
	public void behavior() {
		
		System.out.println("吃鸡");
		
	}
}

如上便是一个简单的实例。

(2)单例与多例

创建一个Dog

package cn.java.singleton2;

public class Dog {

	public Dog() {
		System.out.println("一直狗狗诞生了");
	}
	public void behavior() {
		System.out.println("狗会叫");
		
	}

}

配置文件,这里设置为多例



           
           
           
           
  







创建一个调用的类

package cn.java.ioc1;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.java.singleton2.Dog;

public class Window {

	public static void main(String[] args) {
		//启动框架(context代表spring容器)
		ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");//只写这句也可以调用YellowMouseWolf类中的无参构造方法
         //获取spring容器中创建的对象(通过id值获取)
		Dog dog1=(Dog)context.getBean("dog");
		Dog dog2=(Dog)context.getBean("dog");
		Dog dog3=(Dog)context.getBean("dog");
		//获得各自地址
		System.out.println(dog1);
		System.out.println(dog2);
		System.out.println(dog3);
		
	}

}

这是多例的结果:

创建一个简单spring实例,spring单例与多例,初始化与销毁_第1张图片

dog1,dog2,dog3分别获得了数据,而且这三个的地址不同。

这是单例的配置:



           
           
           
           
  



结果如下:只输出一个数据,而且地址相同。


(3)初始化

先看配置信息



           
           
           
           
  

再看一个类:

package cn.java.initAndDistroy;

public class Ji {
	public Ji() {
		System.out.println("ji..........鸡出生了");
	}
	public void init() {
		System.out.println("ji.......我是初始化方法");
		
	}
	public void behavior() {
		System.out.println("鸡会打鸣");
		
	}


}

以及一个调用类:

package cn.java.ioc1;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.java.initAndDistroy.Ji;
import cn.java.singleton2.Dog;

public class Window {

	public static void main(String[] args) {
		//启动框架(context代表spring容器)
		ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");//只写这句也可以调用YellowMouseWolf类中的无参构造方法
         //获取spring容器中创建的对象(通过id值获取)
		Ji ji=(Ji)context.getBean("smallJi");
		ji.behavior();
		
	}

}
结果如下:

创建一个简单spring实例,spring单例与多例,初始化与销毁_第2张图片

我们看出,先执行构造方法,然后执行的是初始化方法。

销毁:

xml version="1.0" encoding="UTF-8"?>

           
           
              
  
package cn.java.initAndDistroy;

public class Ji {
	public Ji() {
		System.out.println("ji..........鸡出生了");
	}
	public void init() {
		System.out.println("ji.......我是初始化方法");
		
	}
	public void behavior() {
		System.out.println("鸡会打鸣");
		
	}
	//销毁
	public void destroy() {
		System.out.println("ji........鸡挂了");
		
	}


}

package cn.java.ioc1;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.java.initAndDistroy.Ji;
import cn.java.singleton2.Dog;

public class Window {

	public static void main(String[] args) {
		//启动框架(context代表spring容器)
		ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");//只写这句也可以调用YellowMouseWolf类中的无参构造方法
         //获取spring容器中创建的对象(通过id值获取)
		Ji ji=(Ji)context.getBean("smallJi");
		ji.behavior();
		//关闭context容器,并且销毁容器中所有的对象
		((ClassPathXmlApplicationContext) context).close();
		
	}

}

结果:

创建一个简单spring实例,spring单例与多例,初始化与销毁_第3张图片



你可能感兴趣的:(java)