spring简介
来源:互联网 发布:方正字体排查软件 编辑:程序博客网 时间:2024/06/16 20:21
1.spring是一种轻量级的容器类型的框架
2.srping框架的优缺点:
1)轻量级框架,没有入侵性
2)aop
3)ioc(di)
4)易于本地测试(junit测试)
5)可以声明事务
6)集成功能很强大,可以和许多框架无缝集成
7)支持spring的jpa处理
spring缺点:
1)对开发设计要求高
3.功能解释:
1)侵入性:侵入性的表现形式是在使用框架的同时,需要主动地继承框架的某个类,从而实现方法等,这种情况下的依赖过强,很难拿到框架以外的地方来使用,相当于写程序的同时还需要知道框架的代码,例如struts的使用,而spring在多数情况下都是采用配置文件配置的方式,这种方式能减少互相的依赖。当然了spring也不能说一丁点侵入性没有,只能说尽可能做到侵入性比较小。
2)aop主要是面向切面编程,主要是动态的将代码插入我们想要插入的地方,不用像以往一样,每次使用都需要写一遍代码。
AOP核心概念
1、横切关注点:对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点
2、切面:相当于要动态切入的代码
3、连接点:相当于被拦截的方法
4、切入点:就是要切入代码的连接点
5、通知:被拦截之后要执行的代码,通知分为前置、后置、异常、最终、环绕通知等几类
6、目标对象:代理的目标对象
7、织入:创建对象,应用切面的相关代码
8、引入:动态的添加一些方法字段等
个人认为,其中最重要的两个概念就是切点和切面
实现方式:
1.经典的基于代理的AOP :主要是有许多的实现类,许多的接口,之后就是在配置文件中进行复杂的配置
在类上面加上一个@Aspect 注解,之后,@Pointcut注解指定了切点,@Before和@AfterReturning指定了运行时的通知
之后在spring上进行一下配置,尤其不要忘了<aop:aspectj-autoproxy/> 有了这个Spring就能够自动扫描被@Aspect标注的切面了
3.纯POJO切面
这种方式与传统的方式代码并无明显不同,但是配置文件有所更改
<aop:advisor> 定义一个AOP通知者
<aop:after> 后通知
<aop:after-returning> 返回后通知
<aop:after-throwing> 抛出后通知
<aop:around> 周围通知
<aop:aspect>定义一个切面
<aop:before>前通知
<aop:config>顶级配置元素,类似于<beans>这种东西
<aop:pointcut>定义一个切点
- <aop:config>
- <aop:aspect ref="springHelper">
- <aop:before method="beforeSpring" pointcut="execution(* *.spring(..))"/>
- <aop:after method="afterSpring" pointcut="execution(* *.spring(..))"/>
- </aop:aspect>
- </aop:config>
3)ioc:控制反转,主要是更改了传统的创建对象的方式,spring将创建对象的方式整个交给了spring容器,我们只需要直接取,其他的什么都不需要关心。可以减少耦合性,对比传统的对象管理方式,对象之间有很高的依赖,如果我们修改一个对象,那么对象的依赖也可能有很多变化,因此有很多耦合性的弊端,但是现在不会了
4)单元测试:
- 可以使用主流的测试框架 Junit 等
- 可以在测试类中使用依赖注入
- 可以自动化事务管理,在执行结束后自动进行回滚
- 可以使用各种注释标签,是程序代码更加简洁明了
- 执行结束后会自动清除变更
- 不用重启服务器
使用了spring 的单元测试,通过标签的使用
在 Spring 环境中继续进行单元测试,那么可以做如下配置:继续使用 Junit4 测试框架,包括其 @Test 注释标签和相关的类和方法的定义,这些都不用变,@RunWith(SpringJUnit4ClassRunner.class) 来启动 Spring 对测试类的支持,@ContextConfiguration指定配置,@Transactional 标签来进行管理实务,@Autowired 来引入spring中的bean
不再需要:每次开始前加载 Spring 的配置文件,每次都去更改数据库,把之前对数据库的修改清楚,自己去创建bean,现在直接引入就可以
5)配置事务
有四种配置方式;传统的两种方式,利用BeanNameAutoProxyCreator自动创建事务代理,自动创建事务代理的方式。
6)可以和mybitis,hibernate,struts等框架共同使用
7)利用spring的jpa可以访问数据库
1.直接使用名称拼接的方式,就不用写sql语句了。
2.利用一个query标签,直接写sql语句。
3.将查询结果封装成一个对象,但是要在对象的构造方法中添加。
注:本片文章主要是本人最近看了一些博客和文章以及自己的见解写的,可能有所借鉴,但绝无其他意义,希望大家有什么问题和想法可以给我留言,不喜勿怪。