侧边栏壁纸
博主头像
Shawe`Blog博主等级

正确的思维是创造一切的前提。

  • 累计撰写 33 篇文章
  • 累计创建 4 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

Spring之控制反转

什么是spring ioc?

控制反转,通过xml配置或者注解的方式 将对象的生命周期交给ioc容器进行管理。

spring是怎么实现控制反转的,具体原理是什么?

实现控制反转的方式主要有两种:依赖注入(Dependency Injection,DI)和依赖查找(Dependency Lookup)

依赖注入:通过配置文件、java注解、或者java代码的方式告诉spring容器如何创建对象以及如何注入依赖

依赖查找:与依赖注入相反,是由被依赖的对象主动去查找和获取依赖对象的引用,如ApplicationContext 接口的 getBean()方法

ioc使用了哪些技术,是怎样利用这些技术的?

ioc使用了反射、配置元数据、工厂模式、动态代理。

反射:使用了反射动态的加载类并创建对象实例

配置元数据:通过xml配置文件、注解或者java配置类等方式提供配置元数据,告诉容器该如何实例化对象、配置属性以及解决依赖关系。

工厂模式:Spring中的ApplicationContext充当了工厂的角色,负责根据配置文件或注解的信息来创建对象

抽象工厂模式:BeanFactory充当抽象工厂,ApplicationContext具体的实现ClassPathXmlApplicationContext、AnnotationConfigApplicationContext等充当了具体工厂的角色

动态代理:通过动态代理使spring再运行时动态的给目标对象生成代理对象,并将增强的逻辑织入到目标方法中。动态代理是根据目标类class方法以及方法名使用反射、泛型来完成的。

spring的生命周期是怎样的?

实例化:根据配置文件或者注解 通过java反射完成实例化 Bean 对象

依赖注入:spring通过 构造函数、setter方法、字段的方式注入 依赖关系

初始化:在依赖注入完成后,调用Bean初始化方法(如果有), 实现方式可以通过注解@PostConstruct 或者 配置文件init-method="init"来指定

使用:业务根据实际情况调用spring中的bean对象实例

销毁:在程序关闭或者容器销毁的时候,调用Bean销毁方法(如果有),通过注解@PreDestro或者配置文件 destroy-method="cleanup" 来指定

有哪几种方式可以实现ioc?

xml配置方式

注解的方式:如@Component、@Service、@Repository、@Autowired

java config的方式:如@Configuration 和 @Bean

@Resource和@Autowired的区别是什么?

@Resource:

是j2ee自带的注解

默认根据名称进行注入,可以直接通过指定name 或者 type属性来指定具体名称的bean

是javaee规范的一部分

可以在任何兼容JavaEE规范的容器中使用,包括Spring容器

@Autowired

是spring框架提供的注解

默认根据类型进行注入,如果有多个匹配的Bean,通过 @Qualifier或者@Primary来指定具体名称的bean

只能在spring中使用

无法兼容其他的javaee规范容器

0

评论区