三个方面:容器概念、控制反转、依赖注入
容器概念: IOC可以看做是一个容器map,存放各种对象(xml配置的bean,@Component、@Service、@Repository等),在项目启动时会根据全限定类名使用反射创建对象放到map里。
这时map中会有各种对象,在代码中用到对象时,再通过DI注入(@Autowired、@Resource等注解、xml中bean节点内的ref属性)。
控制反转: 未引入IOC容器之前,对象A依赖于对象B。在对象A需要使用对象B时,需要主动去创建一个B的对象,控制权在对象A手上;
引入IOC之后,对象A和对象B(均为单例)在初始化过程中会由IOC容器主动创建。当对象A需要使用对象B时,只需要从IOC容器中获取对象B即可。对象A获得依赖对象B的过程由主动行为变为了被动行为,即为控制反转。
2、描述一下对AOP的理解 3、静态代理与动态代理 4、String Bean的生命周期依赖注入: 获得依赖对象的过程被反转了。获得依赖对象的过程由自身管理变味了由IOC容器主动注入。依赖注入是实现IOC的方法,由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。
什么是Bean?
bean是SpringIOC容器实例化、组装和管理的对象。
简述SpringBean的生命周期
对于普通的Java对象,当使用对象的时候再new创建对象,当对象不被使用时,由Java回收器进行垃圾回收;对于Bean来说,是由IOC容器去帮助实例化对象并管理。SpringBean的生命周期完全由容器进行控制。
Spring Bean的作用域
singleton:唯一bean实例,默认是单例的;prototype:每次请求都会创建一个新的bean实例;request:每一次HTTP请求都会产生一个新的bean,该bean只在当前的HTTP request内有效;session:每一次HTTP请求都会产生一个新的bean,该bean只在当前的HTTP session内有效;global-session:全局session作用域。spring5已经没有了。
5、Spring事务的实现方式 6、Spring事务底层原理 7、SpringMVC运行流程 8、Spring框架中使用的设计模式Bean生命周期
生命周期的概要流程为:实例化(createBeanInstance())、属性赋值(populateBean())、初始化(initializeBean())、销毁
详细生命周期:实例化:
1、Spring启动,查找并加载需要被Spring管理的bean,进行Bean的实例化; 属性赋值:
1、Bean实例化后对将Bean的引入和值注入到Bean的属性中; 初始化:
1、如果Bean实现了BeanNameAware接口,则Spring将Bean的id传递给setBeanName()方法。作用为在创建此bean的bean工厂中设置bean的名称;2、如果Bean实现了BeanFactoryAware接口,则Spring将调用setBeanFactory()(回调提供了自己bean的实例工厂)方法,将BeanFactory容器实例传入;3、如果Bean实现了ApplicationContextAware接口,则Spring将调用Bean的setApplicationContext()方法,将bean所在应用上下文引用传入;
代理模式——在AOP和remoting中被用的比较多
单例模式——注入的bean默认为单例模式
模板方法——用以解决代码重复问题。如:RestTemplate、JmsTemplate、JpaTemplate
前端控制器——Spring提供了DispatcherServlet来对请求进行分发
依赖注入——贯穿于BeanFactory/ApplicationContext接口的核心理念
工厂模式——BeanFactory用来创建对象的实例。



