柚子快报邀请码778899分享:java 后端 Spring

http://yzkb.51969.com/

Spring

Spring 是一个开源的,控制反转( IOC )的,面象切面( AOP )的容器框架.

使用Spring 的好处

降低组件之间的耦合度,实现软件各层之间的解耦可以使用容器提供的众多服务,如:事务管理服务、消息服务等等。当我们使用容器管理事务时,开发人员就不再需要手工控制事务.也不需处理复杂的事务传播容器支持单例模式,开发人员不再需要自己编写实现代码容器提供了AOP技术,利用它很容易实现如权限拦截、运行期监控等功能容器提供的众多辅作类,使用这些类能够加快应用的开发,如: JdbcTemplate、 HibernateTemplateSpring对于主流的应用框架提供了集成支持,如:集成 Hibernate、JPA、Struts 等,这样更便于应用的开发

Spring 负责管理容器中所有的组件, 这些组件统称为 Bean , 在Spring 的概念里,一切都是Bean,其实Spring就是面向Bean的编程(BOP,Bean Oriented Programming )

spring 中的重要概念

IOC (Inversion of control) 控制反转 ​ 应用本身不负责依赖对象的创建,而是把它们的创建控制权交给外容器, 这样,对象创建的控制权就从应用转到了外部容器,控制权的转移,称为控制反转 DI ( Dependency Injection )依赖注入 ​ 在程序运行期, 由外部容器,将依赖对象传给应用的过程 AOP ( Aspect Oriented Programming) 面象切面编程 ​ AOP是OOP的延续,利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

四种注入bean的方式

setter方法注入构造方法注入静态工厂注入实例工厂注入

bean的作用域

bean 的 生命周期

AOP 编程

Spring切面可以应用5种类型的通知:

前置通知(Before):在目标方法被调用之前调用通知功能;后置通知(After):在目标方法完成之后调用通知,此时不会关心方法的输出是什么;返回通知(After-returning):在目标方法成功执行之后调用通知;异常通知(After-throwing):在目标方法抛出异常后调用通知;环绕通知(Around):通知包裹了被通知的方法,在被通知的方法调用之前和调用之后执行 自定义的行为。

@Component @Aspect

public class MyAspect {

//例 得到方法相关的信息

@Before("anyMethod()")

public void beforeMethod() {

System.out.println("前置通知触发了");

}

@AfterReturning("anyMethod()")

public void finallyMethod() {

System.out.println("最终通知触发了");

}

@AfterThrowing("anyMethod()")

public void exceptionMethod() {

System.out.println("例外通知触发了");

}

@After("anyMethod()")

public void afterMethod() {

System.out.println("后置通知触发了");

}

@Pointcut("execution(* com.dao.impl.*.*(..))")

private void anyMethod() {}

}

spring进行事务管理

在Spring中,进行事务管理,主要有两种方式

注解方式xml配置的方式

注解方式

步骤一、在spring配置文件中引入tx:命名空间

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">

步骤二、具有@Transactional 注解的bean自动配置为声明式事务支持

步骤三、在接口或类的声明处 ,写一个@Transactional

这个注解可以加在方法上,或加在类上,如果加在类上,则表示类中的所有方法都开启这样的事务管理

//当标于类前时, 标示类中所有方法都进行事物处理

@Transactional

public class TestServiceBean implements TestService {}

//当类中某些方法不需要事物时:

@Transactional(propagation = Propagation.NOT_SUPPORTED)

public List getAll() {

return null;

}

事物传播行为介绍

@Transactional(propagation=Propagation.REQUIRED) (required 请求) 如果有事务, 那么加入事务, 没有的话新建一个(默认情况下) @Transactional(propagation=Propagation.NOT_SUPPORTED) (supported 支持的) 容器不为这个方法开启事务 @Transactional(propagation=Propagation.REQUIRES_NEW) (requires_new) 不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务 @Transactional(propagation=Propagation.MANDATORY) //(mandatory,强制的,命令的,受委托的) 必须在一个已有的事务中执行,否则抛出异常 @Transactional(propagation=Propagation.NEVER) 必须在一个没有的事务中执行,否则抛出异常(与Propagation.MANDATORY相反) @Transactional(propagation=Propagation.SUPPORTS) 如果其他bean调用这个方法,在其他bean中声明事务,那就用事务.如果其他bean没有声明事务,那就不用事务.

XML方式

柚子快报邀请码778899分享:java 后端 Spring

http://yzkb.51969.com/

推荐链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: 

发表评论

返回顶部暗黑模式