Spring IOC和DI
IOC是spring的两大核心概念之一,IOC是一种控制反转的思想,他给我们提供了一个bean容器,这个容器会帮我们自动去创建对象,不需要我们手动创建,IOC的具体实现是通过DI(依赖注入),我们可以通过写Java注解代码或者是XML配置方式,把我们想要注入对象所依赖的一些其他的bean,自动的注入进去,他是通过byName或byType类型的方式来帮助我们注入。正是因为有了依赖注入,使得IOC有这非常强大的好处:解耦。
Spring AOP
在日常工作中,我们可能会遇到许多重复性的代码,比如事务、日志,我们需要在很多类里面同时把这些代码写进去,这样的话是非常麻烦的,比如事务,我们需要在所有的service层里开启事务、提交、回滚。
Spring AOP可以给我们提供面向切面编程,将这些共有的代码抽象出来,切入到我们想要切入的类中,极大的方便了我们代码的书写,减少了我们的冗余代码。AOP的实现是通过动态代理实现的,如果我们要代理的对象有接口,那么我们就是用Java原生的动态代理,如果没有实现任何接口,会采用Cglib的技术进行动态代理类的创建。