博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring及Spring的两大特性IOC和AOP
阅读量:2359 次
发布时间:2019-05-10

本文共 3147 字,大约阅读时间需要 10 分钟。

PS--很多例子图片上传不了,留给自己看吧—_—

Spring的诞生是为了满足企业级系统的一些需求,那么,企业级系统有那些特点,spring究竟带来了那些好处呢

1.
简单介绍企业级应用的特点
2.
简介
EJB
的不足,引入
Spring
3.
 
EJB
的缺点 
  
 
1
巨大而复杂的规格说明:对于一个复杂的分布式系统,有一个文档进行说明是一件很合理的事情。但是,并不是所有的文档信息都是真正必需的,
EJB
的文档反而成了一个非常不便利的工具。 
   
2
庞大的文件
,
复杂的业务:开发设计一个项目之前,通常需要阅读
1000
多页的
需求说明书
文档。这是部署
EJB
时非常痛苦的事情。 
   
3
增加程序调试时间:制定
EJB
解决方案比远比使用普通的
Java
代码所需的时间长,调试
EJB
程序也比调试普通的
Java
代码所需要的时间也长。主要原因是我们不知道
bug
是出在代码本身还是出在容器上。 
   
4EJB
代码更加复杂:举个例子,为了实现一个
sessionbean
,必须写三个类,为了实现一个实体
bean
,要写四个类。增加几个部署描述语句,比如说最简单的
“Helloworld”
程序需要
10
个文件,而不是一个文件。 
   
5
重复设计的危险:导致这种结果的原因是复杂的文档所致。。如果你没有完全理解
EJB
的概念,你就不会很好的驾奴它,让它你所用,反之为你所累。 
   
6
维护困难:
EJB
是一个不断更新的技术,在新技术不断推出的时候,代码需要升级,这就就需要额外的努力和成本来使你的程序和新的
EJB
容器兼容。

     7学习比较难,开发难度大

    依赖应用服务器
   
运用大量的设计模式

引入spring之后,spring的依赖注入可以统一管理和生成javabean,哪有需要调用就往哪注入,这种方式大大降低了开发难度,

降低了代码的耦合度,给后期的维护也带来了方便

同时springaop还能将系统中那些类似于日志管理,事务管理等分布性比较强,但又必须有的代码集中生成,无需开发人员关注,提高工作效率。

                                    

                                                                                          
Spring:轻量级的企业级开发框架

              

Spring一共有十几个组件,但是真正的核心组件只有几个,Spring框架的总体架构图,了解一下他的体系结构。

从这个图中可以看出Spring框架的核心组件只有三个:CoreContextBeans。他们构建起了整个Spring的骨骼架构,没有他们就不可能有AOPWeb等上层的特性功能。

上面这些是Spring特性功能。。比较重要的几个包:AOP(主要提供面向切面编程的实现)Web(主要提供了Web应用开发的支持及针对Web应用的MVC思想实现)

ORM
(对象关系映射,为
Mybatis
这类持久化框架提供支持)、还有
SpringMVC
(这个是它自带的一个
web
视图层,可以替代到
Sturts2
)。。等等,其中最最核心的就是
AOP
和下面
Spring
核心包。

使用IoC解耦合

实现步骤一:

        1.创建工程并添加Spring支持

        2.创建业务层和数据访问层接口

        3.编写业务层和数据访问层实现类

        4.在业务实现类中添加DAO接口引用和相关访问器,注意JavaBean命名规范

关键代码:

private UserDao userDao;//userDao属性的setter访问器,会被Spring调用,实现设值注入

public void setUserDao(UserDao userDao){

this..userDao = userDao;}

实现步骤二:

1.编写Spring配置文件,完成业务层和数据访问层组件的定义和装配

关键代码:

<bean id="userDao" class="dao.impl.UserDaoImpl" />

<bean id="userService" class=“service.impl.UserServiceImpl">

  <property name="dao">

  <ref bean="userDao" />

  </property>

</bean>

通过ApplicationContext接口的实现类获取组件

关键代码:

ApplicationContext  ac = newClassPathXmlApplicationContext(

    "applicationContext.xml");

UserService  = (UserService )ac.getBean("userService ");

----------------------------------------------------------------------------------------------------------------

AOP是一种思想,它与具体实现技术无关,任何一种符合AOP的思想的技术实现,都可以看做是AOP的实现。通过java的动态代理机制,

就可以很容易实现AOP思想,实际上Spring的AOP也是建立在java代理机制上。

AOP实际上是由目标类的代理类实现的。AOP代理其实是由AOP框架动态生成的一个对象,该对象可作为目标对象使用。AOP代理

包含了目标对象的全部方法,但是AOP代理中的方法与目标对象的方法存在差异,AOP方法是在特定切入点添加了增强处理,并回调了

目标对象的方法。

---总结对AOP的理解:

业务处理的主要流程就是核心关注点,与之关系不大的部分就是横切关注点。横切关注点的一个特点是:他们经常发生在核心关注

点的多处,而各处基本相似,比如权限认证、日志、事务处理。AOP的作用在于分离系统中的各种关注点,将核心关注点和横切

关注点分离开来。

所谓面向切面编程:是一种通过预编译和运行期动态代理的方式实现不在修改源代码的情况下给程序动态添加功能的技术。

-----在Spring中使用注解定义切面:

为项目添加AOP的annotation支持

添加目标方法和增强处理

在增强处理类中使用annotation定义切入点并织入增强处理

在Spring配置文件中添加<aop:aspectjautoproxy/>元素

---------------------------------------------------------------------------------------------------

-----在Spring中实现AOP步骤(老方法):

1.为项目添加Spring的AOP支持

2.编写目标方法和增强处理:

3.在Spring配置文件中定义切入点:

4.在切入点织入增强处理:

5.获取链接点信息:

--UserServiceLogger类中定义了before()afterReturning()两个方法。我们希望把before( )方法作为前置增强使用,即将该方法添加到目标方法之前执行;

afterReturning( )方法作为后置增强使用,即将该方法添加到目标方法正常返回之后执行。这里以前置增强和后置增强为例。

为了能够在增强方法中获得当前连接点的信息,以便实施相关的判断和处理,可以在增强方法中声明一个JoinPoint类型的参数,Spring会自动注入该实例。

通过该实例的getTarget()方法可以得到被代理的目标对象,getSignature()方法返回被代理的目标方法,getArgs()方法返回传递给目标方法的参数数组。

对于实现后置增强的afterReturning()方法,还可以定义一个参数用于接收目标方法的返回值。

增强处理类型:

转载地址:http://kwntb.baihongyu.com/

你可能感兴趣的文章
嵌入式Tomcat的实现
查看>>
程序中嵌入Tomcat
查看>>
Embedded tomcat 6.0
查看>>
Tomcat源码学习
查看>>
Nmake入门(一)
查看>>
MASM32编程实现窗口渐入渐出效果
查看>>
悟透JavaScript
查看>>
软件易容术-----换肤
查看>>
智能指针_百度百科
查看>>
如何使用BHO定制你的Internet Explorer浏览器
查看>>
拓扑学简介(一)
查看>>
千千静听ttp_mod.dll解析med文件堆溢出的利用分析_导航已取消
查看>>
千千静听 med 文件格式堆溢出的成功利用 | 鬼仔????s Blog
查看>>
音乐频谱显示 FFT of waveIn audio signals. Free source code and programming help
查看>>
TightVNC: VNC-Based Free Remote Control Solution
查看>>
xrdp: An open source remote desktop protocol(rdp) server.
查看>>
rdesktop: A Remote Desktop Protocol client
查看>>
远程控制木马"偷窥者"的源代码 - -兰大开源社区blog
查看>>
看《致命连线》电影,学习RDP协议压缩思路 - Jack zhai - 51CTO技术博客-领先的IT技术博客
查看>>
mstsc VS vnc : 远程桌面最快的原因在于RDP协议
查看>>