我们在getBean()的时候也可以用name里面的名字进行调用:
package com.example.demo231116;import com.example.demo231116.dao.BookDao;import com.example.demo231116.service.BookService;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Demo231116Application2 {public static void main(String[] args) {// 3. 获取IoC容器ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");// 4. 获取bean// BookDao bookDao = (BookDao) ctx.getBean("bookDao");// bookDao.save();BookService bookService = (BookService) ctx.getBean("service");bookService.save();}} bean的作用范围 在如下代码中,默认会打印出两个相同的结果: BookDao bookDao = (BookDao) ctx.getBean("dao");BookDao bookDao1 = (BookDao) ctx.getBean("dao");System.out.println(bookDao);System.out.println(bookDao1); com.example.demo231116.dao.impl.BookDaoImpl@309e345fcom.example.demo231116.dao.impl.BookDaoImpl@309e345f这是因为默认不会创造多个实例,假如每调用一次创建一个新的实例将会是很大的内存消耗。 使用scopre属性进行配置,在xml文件中在bookDao后面配置scopre属性为prototype后,结果会是
com.example.demo231116.dao.impl.BookDaoImpl@309e345fcom.example.demo231116.dao.impl.BookDaoImpl@56a6d5a6