(1)在配置完spring提示框架后(上一遍文章有介绍),首先创建一个项目,导入sprig所需的jar包
然后书写主配置文件applicationContext.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- bean:将一个类的对象创建过程交给spring容器
class:指定类的具体路径
id:唯一标识符
-->
<bean id="yellowMouseWolf" class="cn.java.ioc1.YellowMouseWolf" ></bean>
</beans>
又创建了一个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("狗会叫");
}
}
配置文件,这里设置为多例
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- bean:将一个类的对象创建过程交给spring容器
class:指定类的具体路径
id:唯一标识符
scope:用来控制spring容器产生对象的方式,可以为单例也可以为多例。
常用的值为singleton(单例),prototype(多例),默认的是单例
-->
<bean id="dog" class="cn.java.singleton2.Dog" scope="prototype" ></bean>
</beans>
创建一个调用的类
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);
}
}
这是多例的结果:
dog1,dog2,dog3分别获得了数据,而且这三个的地址不同。
这是单例的配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- bean:将一个类的对象创建过程交给spring容器
class:指定类的具体路径
id:唯一标识符
scope:用来控制spring容器产生对象的方式,可以为单例也可以为多例。
常用的值为singleton(单例),prototype(多例),默认的是单例
-->
<bean id="dog" class="cn.java.singleton2.Dog" ></bean>
</beans>
结果如下:只输出一个数据,而且地址相同。(3)初始化
先看配置信息
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- bean:将一个类的对象创建过程交给spring容器
class:指定类的具体路径
id:唯一标识符
scope:用来控制spring容器产生对象的方式,可以为单例也可以为多例。
常用的值为singleton(单例),prototype(多例),默认的是单例
init-method:表示初始化方法,只写初始化方法的名字,不用加上();
-->
<bean id="smallJi" class="cn.java.initAndDistroy.ji" init-method="init"></bean>
</beans>
再看一个类:
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();
}
}
结果如下:我们看出,先执行构造方法,然后执行的是初始化方法。
销毁:
xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- bean:将一个类的对象创建过程交给spring容器
class:指定类的具体路径
id:唯一标识符
scope:用来控制spring容器产生对象的方式,可以为单例也可以为多例。
常用的值为singleton(单例),prototype(多例),默认的是单例
init-method:表示初始化方法,只写初始化方法的名字,不用加上();
destroy-method是销毁方法。
--> <bean id="smallJi" class="cn.java.initAndDistroy.ji" init-method="init" destroy-method="destroy"></bean> </beans>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();
}
}
结果: