在resources目录下创建spring.spring_student.xml,写入:
<?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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="student" class="com.mine.bean.Student"></bean>
</beans>
加载模式
public class MyMain {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/spring_student.xml");
Student student1 = (Student) context.getBean("student");
Student student2 = (Student) context.getBean("student");
System.out.println(student1);
System.out.println(student2);
}
}
结果:
com.mine.bean.Student@31ef45e3
com.mine.bean.Student@31ef45e3
Process finished with exit code 0
结论:
Spring管理的bean对象默认的效果是单例模式
不进行单例模式的设置:
resources目录下的spring.spring_student.xml修改为:
<?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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="student" class="com.mine.bean.Student" scope="prototype"></bean>
</beans>
public class MyMain {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/spring_student.xml");
Student student1 = (Student) context.getBean("student");
Student student2 = (Student) context.getBean("student");
System.out.println(student1);
System.out.println(student2);
}
}
结果:
com.mine.bean.Student@146ba0ac
com.mine.bean.Student@4dfa3a9d
Process finished with exit code 0
加载方式
com.mine.bean.Student.class修改为:
public class Student {
public Student(){
System.out.println("Student 的无参构造");
}
}
resources目录下的spring.spring_student.xml修改为:
<?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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="student" class="com.mine.bean.Student"></bean>
</beans>
public class MyMain {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/spring_student.xml");
}
}
结果:
Student 的无参构造
Process finished with exit code 0
结论:
如果采用的是默认单例模式 对象的创建是立即加载的
将加载方式修改为延迟加载:
resources目录下的spring.spring_student.xml修改为:
<?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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="student" class="com.mine.bean.Student" lazy-init="true"></bean>
</beans
public class MyMain {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/spring_student.xml");
}
}
结果:
Process finished with exit code 0