spring框架的核心思想:
1.IOC——Inversion of Control 控制反转
强调的是原来在程序中创建Bean的权利反转给第三方
2.DI——Dependency Injection 依赖注入
强调Bean之间的关系,这种关系由第三方负责去设置
3.Aop Aspect Oriented Pregramming 面向切面编程
功能的横向抽取,主要的实现方式就是Proxy
问:程序领域中的框架具备了哪些特点?
- 框架 Framewerk 是基于基础技术之上,从众多业务中抽取出的通用解决方案
- 框架是一个半成品.使用框架规定的语法开发可以提高开发效率
- 框架内部使用大量设计模式 算法.底层代码操作技术 og.反射.内省.Aml解析.注解解析等
- 框架一般具有扩展性
spring框架的特点点结
- 方便解耦.简化开发
- 方便集成各种优秀框架
- 降低JavaEE API的使用难度
- 方便程序的测试
- AOP编程的支持
- 声明式事务的支持
获取容器的两种方式代码实现:
// 第一种:从类路径下加载bean配置文件,得到一个容器对象
ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("bean.xml");// 使用容器对象里的getBean方法,通过配置文件里面的唯一标识id得到该bean对象
HelloWorld helloWorld = (HelloWorld) app.getBean("helloWorld");// 第二种:创建bean工厂对象
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();// 创建一个读取配置bean文件的对象
XmlBeanDefinitionReader definitionReader = new XmlBeanDefinitionReader(beanFactory);// 加载配置bean文件并交给bean工厂对象
definitionReader.loadBeanDefinitions("bean.xml");// 根据bean配置文件里面的唯一标识id获取bean对象
HelloWorld helloWorld = (HelloWorld)beanFactory.getBean("helloWorld");
对应容器获取对象的getBean方法分析:
getBean方法有多种重载形式,以适应不同的使用场景。
以下是几种常见的`getBean`方法及其用途:
1. `public Object getBean(String name) throws BeansException`:
- 参数:`String name`:要获取的bean的名称。
- 返回值:`Object`:返回指定名称的bean的实例。
- 用途:根据bean的名称获取bean实例。
2. `public <T> T getBean(String name, Class<T> requiredType) throws BeansException`:
- 参数:`String name`:要获取的bean的名称。
- 参数:`Class<T> requiredType`:指定bean的类型。
- 返回值:`T`:返回指定名称和类型的bean的实例。
- 用途:根据bean的名称和类型获取bean实例,用于类型检查。
3. `public Object getBean(String name, Object... args) throws BeansException`:
- 参数:`String name`:要获取的bean的名称。
- 参数:`Object... args`:传递给构造函数或工厂方法的参数。
- 返回值:`Object`:返回指定名称的bean的实例。
- 用途:根据bean的名称和构造函数参数或工厂方法参数获取bean实例。
4. `public <T> T getBean(String name, @Nullable Class<T> requiredType, @Nullable Object... args) throws BeansException`:
- 参数:`String name`:要获取的bean的名称。
- 参数:`Class<T> requiredType`:指定bean的类型。
- 参数:`Object... args`:传递给构造函数或工厂方法的参数。
- 返回值:`T`:返回指定名称和类型的bean的实例。
- 用途:根据bean的名称、类型和构造函数参数或工厂方法参数获取bean实例。
对应Spring的控制反转(Inversion of Control, IoC)思想,开发者通过指定bean的名称来获取容器中管理的bean实例,而不是通过显式地创建bean实例。这使得开发者可以更加专注于业务逻辑的实现,而将对象创建和依赖关系的管理交给Spring容器。
依赖注入(Dependency Injection, DI)的核心思想在于通过外部配置(如XML或注解)来指定bean之间的依赖关系,然后在创建bean实例时,Spring容器会自动将这些依赖注入到bean实例中。getBean
方法的参数Object... args
可以传递给构造函数或工厂方法的参数,Spring容器会使用这些参数来创建bean实例,并自动注入依赖关系。
综上所述,Spring的getBean
方法是实现控制反转和依赖注入的关键组成部分,它们使得开发者可以更加灵活地管理和使用对象,从而提高代码的可维护性和可测试性。