①Spring是一个开源的业务层框架,分模块,一站式框架,它能够整合各种其他主流框架;

②Spring的实质就是一个实现了工厂模式的工厂类,在其配置文件中,通过添加标签,来创建实例对象;

③Spring的核心——IoC/DI;

a)IoC(Inverse of Control)控制反转,将对象的创建全交给Spring去管理,然后Spring容易通过依赖注入的方式,注入给调用者。这样做的好处是,让bean与bean之间以配置文件的形式组织在一起,而不是以硬编码的方式耦合在一起。

b)依赖注入的方式有三种:接口注入、Setter方法注入(使用<property name="" value或者ref="">)、构造注入;

c)IoC的注解方式:

(Ⅰ)在applicationContext.xml配置文件中开启组件扫描
<context:component-scan base-package=“com.itheima”/>
(Ⅱ)在实现类上添加注解:@Component(value=“id值”)

@Component的三个衍生注解(功能一样)

  • @Controller – 作用在WEB层
  • @Service – 作用在业务层
  • @Repository – 作用在持久层
(Ⅲ)3.属性注入的注解(说明:使用注解注入的方式,可以不用提供set方法)
  • @Value – 用于注入普通类型
  • @Autowired – 默认按类型进行自动装配
  • @Qualifier – 强制使用名称注入
  • @Resource – 相当于@Autowired和@Qualifier一起使用,强调:Java提供的注解,属性使用name属性

④Spring的核心——AOP;

a)AOP(面向切面编程),可以在不修改源代码的前提下,对程序进行增强,例如,加入日志,加入权限判断,加入异常处理等;

b)AOP底层使用的是代理技术,分为JDK动态代理(面向接口)和CGLIB动态代理(没接口的,产生子类代理);

c)使用步骤:

(Ⅰ)编写切面类==>在IoC中配置切面类的bean标签==>配置aop相关
aop:config
<aop:aspect ref=“切面类”>
<aop:before method=“增强方法” pointcut=“切入点表达式”/>
</aop:aspect>
</aop:config>
(Ⅱ)切入点表达式:execution([修饰符] 返回值类型 包名.类名.方法名(参数))

一般简写为:

execution(* com...DaoImpl.save(…))
(Ⅲ)通知类型

前置通知:

<aop:after method=“before” pointcut-ref=“myPointcut3”/>

最终通知:如果程序出现了异常,最终通知也会执行。

<aop:after method=“after” pointcut-ref=“myPointcut3”/>

后置通知:

<aop:after-returning method=“afterReturning” pointcut-ref=“myPointcut2”/>

异常抛出通知:

<aop:after-throwing method=“afterThorwing” pointcut-ref=“myPointcut3”/>

环绕通知:

<aop:around method=“around” pointcut-ref=“myPointcut2”/>
  • 要注意:目标的方法默认不执行,需要使用ProceedingJoinPoint对来让目标对象的方法执行。