Bean 的加载方式
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext1.xml");
ApplicationContext 管理你所有的对象(在 Spring 里叫 Bean)。你需要对象时,不再自己 new 了,而是找这个 ctx 管家要。
ClassPathXmlApplicationContext 实现类,这是一个具体的管家类型。这行代码执行完后,Spring 容器就创建好了。接下来你通常会写这样的代码来获取对象:
// 向管家要一个 ID 为 "bookService" 的对象
BookService bookService = (BookService) ctx.getBean("bookService");

Spring Boot 与 Spring 写法对比
ClassPathXmlApplicationContext 功能很单一:只负责创建 Bean。它启动后,你只是得到了一个装满对象的容器。如果你想做一个网站,你还得自己去下载 Tomcat,配置 web.xml,把 Spring 塞进 Tomcat 里运行。
SpringApplication.run 启动时,不仅创建了 Bean 容器,还自带了一个 Tomcat 服务器,并把它启动起来。
1. XML 方式声明 Bean
第一步:准备好你的 Java 类 (Bean)
举例:假设你写了一个BookDaoImpl类,放在com.example.dao.impl包下。第二步:编写 XML 配置文件
这是最关键的一步。打开配置文件,在<beans>标签内部添加配置。关键属性解释:
id:它是 Bean 的身份证号。Spring 容器就是一个大 Map,id就是 Key,Value 就是 Spring 帮你创建出来的那个'对象实例'。通常使用首字母小写的类名(驼峰命名法)。class:它是 Bean 的图纸。必须写全路径(包名。类名),千万不要只写类名,否则 Spring 找不到类会报错ClassNotFoundException。第三步:在测试代码中获取并使用
在 main 方法启动容器,通过id把对象取出来。如果不写 id,获取的时候使用默认名称。Spring 默认底层是使用反射调用类的无参构造方法来创建对象的。如果你的类里只写了一个带参数的构造方法(覆盖了默认的无参构造),Spring 就无法创建它,会报错。
2. 使用注解定义 Bean
不需要动 XML,直接在 Java 类的头顶上加一个标记:







