私はSpring Beanスコープに関するチュートリアルを読んで、BeanスコープがSpringコンテナである場合、ステートメントprototype
ごとに新しいオブジェクトを作成することに言及しました。context.getBean("id")
スコープを指定すると、ステートメントを2回以上singleton
書いてもオブジェクトが1つだけ作成されますcontext.getBean("id")
...小さな例を行いました
Demo.java
public class Demo {
public static void main(String[] args)
{
ApplicationContext con=new ClassPathXmlApplicationContext("spconfig.xml");
Person p=(Person)con.getBean("person");
Person q=(Person)con.getBean("person");
System.out.println(" P hashCode :"+p.hashCode());
System.out.println(" Q hashCode :"+q.hashCode());
if (p==q)
{
System.out.println("Same instance!");
}
else {
System.out.println("Different instance");
}
}
}
上記のプログラムは印刷します
P hashCode :18303751
Q hashCode :18303751
Same instance!
しかし、Person
Beanスコープscope="prototype"
では、同じハッシュコードを出力している理由を与えました????
誰か説明...
前もって感謝します...
spconfig.xml
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="person" class="demo.Person" scope="prototype">
<property name="name" value="Hello World" />
</bean>
</beans>
Person.java
package demo;
public class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void printHello() {
System.out.println("Hello ! " + name);
}
@Override
public int hashCode() {
return super.hashCode();
}
}