Spring IOC 容器
-
Bean Factory 和 ApplicationContext 谁才是 Spring IOC 容器? package org.xiaoge.thinking.in.spring.ioc.overview.dependency.injection;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.ListableBeanFactory;
import org.springframework.beans.factory.ObjectFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.env.Environment;
import org.xiaoge.thinking.in.spring.ioc.overview.annotation.Super;
import org.xiaoge.thinking.in.spring.ioc.overview.domain.User;
import org.xiaoge.thinking.in.spring.ioc.overview.repository.UserRepository;
import java.util.Map;
public class DependencyInjectionDemo {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:META-INF/dependency-injection-context.xml");
UserRepository userRepository = applicationContext.getBean("userRepository", UserRepository.class);
System.out.println(userRepository.getBeanFactory());
Environment environment = applicationContext.getBean(Environment.class);
System.out.println("获取 Environment 类型的 Bean: " + environment);
whoIsIoCContainer(applicationContext, userRepository);
}
public static void whoIsIoCContainer(ApplicationContext applicationContext, UserRepository userRepository) {
System.out.println(userRepository.getBeanFactory() == applicationContext);
}
}
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SX74COlE-1667361419483)(C:\Users\13301\AppData\Roaming\Typora\typora-user-images\image-20221102112749409.png)]](https://img-blog.csdnimg.cn/ebe7f6e374094beab0a97a6a09f526c8.png) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lr4rNBzJ-1667361419484)(C:\Users\13301\AppData\Roaming\Typora\typora-user-images\image-20221102112819003.png)]](https://img-blog.csdnimg.cn/403d66163cbc47b283cc4d6a406b58d4.png) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jq8yaQwy-1667361419484)(C:\Users\13301\AppData\Roaming\Typora\typora-user-images\image-20221102113021845.png)]](https://img-blog.csdnimg.cn/b73fa3d0186741f681add3bcf036bebc.png) ![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h64Ep7J7-1667361419485)(C:\Users\13301\AppData\Roaming\Typora\typora-user-images\image-20221102113039495.png)]](https://img-blog.csdnimg.cn/daeaa94717394a0a82772d5670340131.png) -
相当于是代理对象getBean, 我们可以看出DefaultListableBeanFactory是一个组合对象
|