Spring知识点巩固

Spring框架主要提供了ICO容器、AOP、数据访问、web开发、消息、测试等相关技术的支持。

 

Spring使用简单的POJOplain old java object,即无任何限制的普通对象)来进行企业级开发。每一个被spring管理的对象都称之为Bean;而Spring提供了一个IOC容器用来初始化对象,解决对象间的依赖管理和对象的使用。

 

 

 

Spring框架本身有四大原则:

1:使用POJO进行轻量级和最小侵入式开发

2:通过依赖注入和基于接口编程实现松耦合

3:通过AOP和默认习惯进行声明式编程

4:减少AOP和模板(template)减少模式化代码

 

依赖注入:

控制反转(inversion of control-IOC)和依赖注入(dependency injection-DI)在spring环境下是等同的概念,控制反转是通过依赖注入实现的。所谓依赖注入指的是容器负责创建对象和维护对象间的依赖关系,而不是通过对象本身负责自己的创建和解决自己的依赖。

依赖注入的主要目的是为了解耦,体现一种“组合”的理念,如果你希望你的类具备某些功能的时候,是继承自一个具有此功能的父类好呢?还是组合另外一个具体这个功能的类好呢?答案是不言而喻的,继承一个父类,子类将与父类耦合,组合另外一个类则使耦合度大大降低。

Spring IOC容器(applicationContext)负责创建Bean,并通过容器将功能类Bean注入到你需要的Bean中。Spring提供xml、注解、java配置、groovy配置实现Bean的创建和注入。

无论是xml配置、注解配置还是java配置,都被称为配置元数据,所谓元数据即描述数据的数据。元数据本身不具备任何可执行的能力,只能通过外界代码来对这些元数据行解析后进行一些有意义的操作。Spring容器解析这些配置元数据进行bean初始化、配置和管理项目依赖。

AOP:面向切面编程,相对于OOP面向对象编程。

SpringAOP的存在目的是为了解耦。AOP可以让一组类共享相同的行为。在OOP中,只能通过继承类和实现接口,来使代码的耦合度增强,且类继承只能单继承,阻碍了更多行为添加到一组类上,AOP弥补了OOP的不足。

Spring支持AspectJ的注解式切面编程:

1:使用@Aspect声明是一个切面。

2:使用@After@Before@Around定义建言(advice),可直接将拦截规则(切点)作为参数。

3:其中@After@Before@Around参数的拦截规则为切点(PointCut),为了使切点复用,可使用@PointCut专门定义拦截规则,然后在@After@Before@Around的参数中调用。

4:其中符合条件的每一个被拦截处为连接点(JoinPoint)。

 

多线程的使用:

Spring通过任务执行器(TaskExecutor)来实现多线程和并发编程。使用TheadPoolTaskExecutor可实现一个基于线程池TaskExecutor。而实际开发任务重任务一般是非阻碍的,即异步的,所以我们要在配置类中通过@EnableAsunc开启对异步任务的支持,并通过在实际中执行Bean的方法中使用@Async注解来声明其是一个异步任务。

具体使用:

https://www.cnblogs.com/shangxiaofei/p/6211367.html

 

定时任务(计划任务)的使用:

Spring配置文件中增加<taskannotation-driven scheduler=“”>

<taskscheduler>

 

 

然后就可以使用@Scheduled声明方法为计划任务,使用fixedRate属性每隔固定时间执行。

使用cron属性按照指定时间执行。

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值