我在春天学习标签的使用。我写了一个简单的编。使用Spring需要说明:<aop:scoped-proxy />
<bean id="book" class="com.test.scoped.Book" scope="prototype" >
<property name="name" value="DefaultName"></property>
<aop:scoped-proxy/>
</bean>
<bean id="reader" class="com.test.scoped.Reader" >
<property name="book" ref="book" />
</bean>
public class Book {
private String name;
public String toString(){
return this.name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Reader {
private Book book;
public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext ctx = new ClassPathXmlApplicationContext("ScopedProxy.xml");
Book firstBook = ((Reader)ctx.getBean("reader")).getBook();
System.out.println("First Book : "+firstBook.getName());
firstBook.setName("Edge of Eternity");
System.out.println("First Book : "+firstBook.getName());
Book secondBook = ((Reader)ctx.getBean("reader")).getBook();
System.out.println("Second Book : "+secondBook.getName());
}
}
当我运行主类,我得到如下结果:
First Book : DefaultName
First Book : DefaultName
Second Book : DefaultName
我的问题,为什么是firstBook即使我已经将它设置没有设置的名称:firstBook .setName(“永恒的边缘”); 。当我删除aop:scoped-proxy时,名称设置正确。 为什么默认名称不会超写?