IOC
约 262 字小于 1 分钟
2024-12-26
即控制反转,由 Spring 的 IOC 容器管理 bean,并通过 @Autowired 或 @Resource 注解([[#@Autowired 与 @Resource 差别|两者区别]])进行自动装配 默认配置下,每一个 bean 都是 singleton
,即全局只会创建一个对象
获取 IOC 容器创建对象
通过读取包含 bean 信息的 xml 文件创建 IOC 容器
ApplicationContext container = new ClassPathXmlApplicationContext("spring.xml");
通过 SpringApplication 对象的 run 方法可以获取ConfigurableApplicationContext
,即 ApplicationContext 的子类
SpringApplication springApplication = new SpringApplication(SpringDemoApplication.class);
ApplicationContext context = springApplication.run();
通过 BeanFactory
获取 Bean 对象 这种方式为按需分配,而ApplicationContext
会一次性创建所有 bean,且相比于 ApplicationContext
不支持自动装配 此外,ApplicationContext
实际上是从 BeanFactory
继承而来
BeanFactory factory = new XmlBeanFactory(new ClassPathResource("spring.xml"));
Student s = factory.getBean(Student.class);
@Autowired 与 @Resource 差别
@Autowired 由 Spring 提供,先根据类型查找,若存在多个相同类型的 bean,再根据类名进行查找 @Resource 由 Java 提供,与 @Autowired 相反,先通过类型查找,若存在重复,再根据类型进行查找