[学习记录-后端开发] Spring

一、简介

Spring理念 : 使现有技术更加实用 . 本身就是一个大杂烩 , 整合现有的框架技术

1、Spring是一个开源免费的框架 , 容器 .
2、Spring是一个轻量级的框架 , 非侵入式的 .
3、控制反转 IoC , 面向切面 Aop
4、对事物的支持 , 对框架的支持

一句话概括:
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)。

Spring架构:
Spring架构

  • 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
  • Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
  • Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向切面的编程功能 , 集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理任何支持 AOP的对象。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖组件,就可以将声明性事务管理集成到应用程序中。
  • Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
  • Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
  • Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
  • Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。

二、IOC详解

控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法,也有人认为DI只是IoC的另一种说法。没有IoC的程序中 , 我们使用面向对象编程 , 对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓控制反转就是:获得依赖对象的方式反转了。

IoC是Spring框架的核心内容,使用多种方式完美的实现了IoC,可以使用XML配置,也可以使用注解,新版本的Spring也可以零配置实现IoC。

Spring容器在初始化时先读取配置文件,根据配置文件或元数据创建与组织对象存入容器中,程序使用时再从Ioc容器中取出需要的对象。

采用XML方式配置Bean的时候,Bean的定义信息是和实现分离的,而采用注解的方式可以把两者合为一体,Bean的定义信息直接以注解的形式定义在实现类中,从而达到了零配置的目的。

控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式。在Spring中实现控制反转的是IoC容器,其实现方法是依赖注入(Dependency Injection,DI)。

三、简单应用

3.1 导包

<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-webmvc</artifactId>
   <version>5.1.10.RELEASE</version>
</dependency>
<!-- 自动导入:spring-aop,spring-beans,spring-context,spring-core,spring-expression,spirng-web -->

3.2 XML模式

3.2.1 编写Spring配置文件(任意命名)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

   <!--bean就是java对象 , 由Spring创建和管理-->
   <bean id="hello" class="com.kuang.pojo.Hello">
       <property name="name" value="Spring"/>
   </bean>
</beans>
3.2.2 配置并使用bean:
@Test
public void test(){
   //解析beans.xml文件 , 生成管理相应的Bean对象
   ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
   //getBean : 参数即为spring配置文件中bean的id .
   Hello hello = (Hello) context.getBean("hello");
   hello.show();
}
3.2.3 相关配置

容器相关Bean相关依赖注入相关

3.3 注解模式

注解作用修饰
以下为Config相关注解
@Configuration标识当前类为Spring的配置类Spring配置类
@Import合并另一个配置类(这个类不需要用@Configuration配置)Spring配置类
@ComponentScan去扫描指定包或者指定类与接口,配置找到的Bean,扫描多个包时用{}包住包名即可Spring配置类
@PropertySource加载某个properties文件,与xml配置一样效果,可以使用${}访问文件中属性Spring配置类
以下为Bean相关注解
@Component标识当前类为Bean实现类
@Service与@Component作用一样,但专门用来标识业务层实现类业务层实现类
@Controller与@Component作用一样,但专门用来标识控制层实现类控制层实现类
@Repository与@Component作用一样,但专门用来标识持久层实现类持久层实现类
@Scope控制该Bean的单例模式等Bean
@PostConstruct用来标识Bean的某个方法为init方法(即构造后调用该方法)Bean某方法
@PreDestroy用来标识Bean的某个方法为destroy方法(即在类销毁前调用)Bean某方法
@Bean表示当前方法返回值应当被看成是个Bean,一般用于管理第三方Bean,这种方法的形参也会被当做Bean去查找(如果没有相应类型的Bean将报错)Bean某方法
@Autowired自动查找对应的Bean装配到当前注解描述的变量上Bean某个引用变量
@Qualifier与@Autowired配合使用,在多个类型匹配的Bean中以名字匹配唯一BeanBean某个引用变量
@Value装配对应值到对应基本变量上Bean某个基础变量
以下为AOP相关注解
@EnableAspectJAutoProxy开启AOP注解驱动支持Spring配置类
@Aspect标识当前Bean为通知类BeanBean
@PointCut配置AOP切入点通知类Bean某空方法体
@Before通知类型通知类Bean的某个通知方法
@After通知类型通知类Bean的某个通知方法
@Around通知类型通知类Bean的某个通知方法
@AfterReturning通知类型通知类Bean的某个通知方法
@AfterThrowing通知类型通知类Bean的某个通知方法
以下为Transaction相关注解
@EnableTransactionManagement开启注解式事务驱动Spring配置类
@Transcational标识某个方法或某个接口的所有方法为事务(有异常将回滚)接口或者接口的方法

四、AOP详解

4.1 AOP总结

AOP总结1AOP总结2

4.2 AOP切入点

在这里插入图片描述在这里插入图片描述在这里插入图片描述

4.3 AOP通知类型

在这里插入图片描述在这里插入图片描述

4.4 AOP通知获取数据

在这里插入图片描述在这里插入图片描述在这里插入图片描述

五、Spring事务

5.1 简介

在这里插入图片描述

5.2 实现

在这里插入图片描述在这里插入图片描述在这里插入图片描述

5.3 事务相关配置

在这里插入图片描述要注意的是,默认情况下事务只有在遇到error系异常或者运行时异常才会进行回滚,如果需要对其他异常也进行回滚,需要用rollbackFor进行配置

而propagation可以设置事务传播行为,即事务协调员对事务管理员所携带事务(即其他事务协调员)的处理态度。人话来讲就是可以让事务协调员不跟其他事务协调员同成功同失败
在这里插入图片描述

  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值