- Spring管理的bean对象多少个?
每一个数据库的表格会对应一套Controller Service Dao,多个bean对象分属在不同的层次中,我们可以将配置拆分。
将XML文件拆分
①(String…)—-可变长度参数列表
BeanFactory factory=new ClassPathXmlApplicationContext("ApplicationContext.xml","ApplicationContext_Dao.xml","ApplicationContext_Service.xml","ApplicationContext_Controller.xml");
②(String[])
BeanFactory factory=new ClassPathXmlApplicationContext(new String[]{"ApplicationContext.xml","ApplicationContext_Dao.xml","ApplicationContext_Service.xml","ApplicationContext_Controller.xml"});
③通配符写法*
BeanFactory factory=new ClassPathXmlApplicationContext("ApplicationContext*.xml");
④主配置文件引入其他文件的方式
BeanFactory factory=new ClassPathXmlApplicationContext("ApplicationContext.xml");
- Spring管理的这些对象是每次new一个新的 还是单例
①Spring管理的bean对象默认的效果是单例模式
BeanFactory factory=new ClassPathXmlApplicationContext("ApplicationContext.xml");
//2.帮我们创建对象,跟工厂要一个对象
System.out.println(factory.getBean("student"));
System.out.println(factory.getBean("student"));
单例模式底层—-生命周期托管的方式(Servlet)
单例模式能否修改—-可以修改
①如果是单例对象,是立即加载方式public Student() {
System.out.println("Student创建了");
}
BeanFactory factory=new ClassPathXmlApplicationContext("ApplicationContext.xml");
如果是原型模式加载对象,不会立即加载<bean name="student" class="domain.Student" scope="prototype"></bean>
平时我们在开发的时候可能更多的使用延迟加载的机制,我们可以通过修改Spring配置的方式来改变
补充:
init-method="" //在创建对象时加载此方法
destroy-method=""//销毁对象时加载此方法
- 如果对象中有属性 自动将属性值赋上———->DI(Dependency Injection)