面试,说白了就是展现自己的价值。
当面试官提出一个问题时,我们应该在答出问题的基础上尽量的扩展知识面,以此来展现我们的价值,或者说---竞争力。
当然,不是盲目的扩展知识面,我们应该引导话题到我们擅长的领域,去掌握面试节奏。
面试过程中,语气要稳,语速不要着急,要逻辑清晰,自信。
下面步入正题:
这是问题回答:
所谓IOC,就是控制反转。
分开了说,控制就是创建bean对象的操作过程,或者说是权限。
而反转,是指将这个权限交给IOC容器,让其自行创建bean对象。
接下来就是扩展:
这样做可以让开发人员减少大量的创建bean的操作,大大增加开发效率。
话题引导 :
IOC 创建好bean对象后,我们通过依赖注入来获取相应对象。
再扩展:
期间用到一个注解@Autowried。一般情况下注入对象名,是相应Bean类名的首字母小写。
因为Bean注入是通过类名来作用的,所以Bean类一般不会同名。
出现同名的情况下,我们用@Qualifier("")起别名来解决问题,或者设置首选用@Primary注解。@Resource注解与@Autowried功能相似,都是依赖注入。但却也不同,@Resource注解是根据名称注入。@Autowried是根据类型注入。
话题引导:
与依赖注入类似的有一个@Value注解。
扩展:
其作用是属性注入,常用的方式是读取配置文件application.yml中的值。另一种用法是直接赋值,一般是不用这个方法。
话题引导:
依赖注入和属性注入前需要添加IOC相关注解:@Conpoment @Controller @Service @Repositroy
扩展:
四个注解其实作用相同,都是将类注册到Spring的上下文,只是表示的语意不同。
Controller表示表示层,Service表示业务层。
留一个钩子,面试官说不定会按照设想问下去:
Repositroy表示持久层,因为MyBatis技术的使用,现在Repositroy基本不用了,用的都是Mapper。
如果没有打断叙述,我们可以接着聊:
在IOC中,业务上常会用到第三方Bean,这就需要用@Configuration注解。
扩展:
它本质上是一个@Component注解,可以将标注类注册到spring的上下文,来表示其是一个配置类。
话题引导:
与configuration注解配合使用的有一个Bean注解。
扩展:
被其注解的方法返回对象会被Spring容器管理。
话题引导:
关于IOC下的bean对象
有时候我们需要实现延迟加载。需要用到@Lazy
扩展:
使用Lazy后,Bean在容器启动时并不立即创建,而是在首次使用时才进行实例化。
这种机制有助于提高系统的启动性能。
话题引导:
而有时我们也会限制bean的作用域,这里就会用到Scope注解
扩展:
Scope注解有几个参数
- singleton:单例模式,全局只有一个实例,默认作用域。
- prototype:原型模式,每次请求都会创建一个新的实例。
- request:每次HTTP请求创建一个新的实例,实例仅在当前HTTP请求内有效。
- session:每次HTTP请求创建一个新的实例,实例仅在当前HTTP会话内有效。
其中比较常用的就是单列和多例模式。
总结:
总的来说,Spring框架的IOC部分就是对Bean对象的创建和使用
为了展现价值,条件允许的话我们可以更加深入的探讨:
IOC与AOP都在Spring框架下,后续我们可以将话题牵引到AOP: