原型模式在Spring框架中源码分析
1 Spring中原型bean的创建,就是原型模式的应用
Monster
dart
package com.baidu.spring.bean;
public class Monster {
private Integer id = 10;
private String nickname = "牛魔王";
private String skill = "芭蕉扇";
public Monster() {
System.out.println("monster 创建 ..");
}
public Monster(Integer id, String nickname, String skill) {
this.id = id;
this.nickname = nickname;
this.skill = skill;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getSkill() {
return skill;
}
public void setSkill(String skill) {
this.skill = skill;
}
@Override
public String toString() {
return "Monster{" +
"id=" + id +
", nickname='" + nickname + '\'' +
", skill='" + skill + '\'' +
'}';
}
}
ProtoType
dart
package com.baidu.spring.test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ProtoType {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
Object bean = applicationContext.getBean("id01");
System.out.println("bean = " + bean);
Object bean2 = applicationContext.getBean("id01");
System.out.println("bean2 = " + bean2);
System.out.println(bean == bean2);
}
}
bean.xml
dart
<?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.xsd">
<bean id="id01" class="com.baidu.spring.bean.Monster" scope="prototype" />
</beans>
debug执行

