一.Spring是一个开源框架
Spring为简化企业级开发而生,使用Spring开发可以将Bean对象,Dao组件对象,Service组件对象等交
给Spring容器来管理,这样使得很多复杂的代码在Spring中开发却变得非常的优雅和简洁,有效的降低
代码的耦合度,极大的方便项目的后期维护、升级和扩展。
Spring是一个IOC(DI)和AOP容器框架。
二.Junit4常用注解
@Test :测试方法,在这里可以测试期望异常和超时时间
@Before :初始化方法,会在@Test执行前执行
@After :释放资源,会在@Test执行后执行
@BeforeClass :所有测试执行前执行,只执行一次,且必须为 static void
@AfterClass :所有测试执行后执行,只执行一次,且必须为static void
@Ignore :忽略的测试方法
三.基于Java注解的配置方式
在 Spring 中,尽管使用 XML 配置文件可以实现 Bean 的装配工作,但如果应用中 Bean 的数量较多,会导致 XML 配置文件过于臃肿,从而给维护和升级带来一定的困难。Java 从 JDK 5.0 以后,提供了 Annotation(注解)功能,Spring 也提供了对 Annotation 技术的全面支持。
@Component
可以使用此注解描述 Spring 中的 Bean,但它是一个泛化的概念,仅仅表示一个组件(Bean),
并且可以作用在任何层次。使用时只需将该注解标注在相应类上即可,默认情况下生成的id名称为类
名称的首字母小写。
@Repository
用于将数据访问层(DAO层)的类标识为 Spring 中的 Bean,其功能与 @Component 相同。
@Service
通常作用在业务层(Service 层),用于将业务层的类标识为 Spring 中的 Bean,其功能与@Component
相同。
@Controller
通常作用在控制层,用于将控制层的类标识为 Spring 中的 Bean,其功能与 @Component 相同。
@Autowired
默认按照 Bean 的类型进行装配。
用于对 Bean 的属性变量、属性的 Set 方法及构造函数进行标注,配合对应的注解处理器完成 Bean 的自动配置工作。
@Resource
其作用与 Autowired 一样。其区别在于 @Autowired 默认按照 Bean 类型装配,而 @Resource 默认按照 Bean 实例名称进行装配。
@Resource 中有两个重要属性:name 和 type。
Spring 将 name 属性解析为 Bean 实例名称,type 属性解析为 Bean 实例类型。如果指定 name属性,则按实例名称进行装配;如果指定 type 属性,则按 Bean 类型进行装配。
如果都不指定,则先按 Bean 实例名称装配,如果不能匹配,则再按照 Bean 类型进行装配;如 果都无法匹配,则抛出 NoSuchBeanDefinitionException 异常。
@Qualifier
与 @Autowired 注解配合使用,会将默认的按 Bean 类型装配修改为按 Bean 的实例名称装 配,Bean 的实例名称由 @Qualifier 注解的参数指定。
@value
给属性赋值
四.Spring AOP关键字
Joinpoint(连接点):指那些被拦截到的点,在 Spring 中,可以被动态代理拦截目标类的方法。
Pointcut(切入点): 指要对哪些 Joinpoint 进行拦截,即被拦截的连接点。
Advice(通知): 指拦截到 Joinpoint 之后要做的事情,即对切入点增强的内容。
Target(目标): 指代理的目标对象。
Weaving(植入): 指把增强代码应用到目标上,生成代理对象的过程。
Proxy(代理): 指生成的代理对象。
Aspect(切面): 切入点和通知的结合。
五.AOP基于注解配置
@Aspect :用于定义一个切面。
@Before :用于定义前置通知。
@Around :用于定义环绕通知。
@AfterReturning :用于定义后置通知。
@AfterThrowing :用于定义抛出通知。
@After :用于定义最终final通知,不管是否异常,该通知都会执行。
六.AOP切点
<aop:pointcut id=“myPointcut” expression=“execution(* com.gx.dao….(…))”/>
第一个 * : 通配, 任意返回值类型(String,int…)
dao…中的 … : 通配,表示com.gx.dao当前包及子包
第二个 * : 通配包com.gx.dao下的任意类
第三个 * : 通配包com.gx.dao,以及所有子包下的任意类的任意方法
*(…)中的 … : 通配 办法可以有0个或多个参数