×

spring aop应用场景 pring

AOP在spring中的具体应用,最好举例说明?springmvc的结构

admin admin 发表于2022-07-06 22:31:21 浏览101 评论0

抢沙发发表评论

AOP在spring中的具体应用,最好举例说明


Spring提供许多功能,在此我将快速地依次展示其各个主要方面。

  首先,让我们明确Spring范围。尽管Spring覆盖了许多方面,但我们已经有清楚的概念,它什么应该涉及和什么不应该涉及。

  Spring的主要目的是使J2EE易用和促进好编程习惯。
  Spring不重新开发已有的东西。因此,在Spring中你将发现没有日志记录的包,没有连接池,没有分布事务调度。这些均有开源项目提供(例如Commons Logging 用来做所有的日志输出,或Commons DBCP用来作数据连接池),或由你的应用程序服务器提供。因为同样的的原因,我们没有提供O/R mapping层,对此,已有友好的解决办法如Hibernate和JDO。
spring
Spring的目标是使已存在的技术更加易用。

  例如,尽管我们没有底层事务协调处理,但我们提供了一个抽象层覆盖了JTA或任何其他的事务策略。

  Spring没有直接和其他的开源项目竞争,除非我们感到我们能提供新的一些东西。例如,象许多开发人员,我们从来没有为Struts高兴过,并且感到在MVC web framework中还有改进的余地。在某些领域,例如轻量级的IoC容器和AOP框架,Spring有直接的竞争,但是在这些领域还没有已经较为流行的解决方案。(Spring在这些区域是开路先锋。)

  Spring也得益于内在的一致性。
  所有的开发者都在唱同样的的赞歌,基础想法依然是Expert One-on-One J2EE设计与开发的那些。

  并且我们已经能够使用一些主要的概念,例如倒置控制,来处理多个领域。

  Spring在应用服务器之间是可移植的。
  当然保证可移植性总是一次挑战,但是我们避免任何特定平台或非标准化,并且支持在WebLogic,Tomcat,Resin,JBoss,WebSphere和其他的应用服务器上的用户。

springmvc的结构


一张图带你了解一下吧:

流程:

  • 客户端发起的请求,提交到前端控制器DispatcherServlet,由它来调用系统其他模块来处理请求;调用的依据是请求的信息(包括URL、HTTP协议方法、请求头、请求参数、Cookie等)以及HandlerMapping的配置找到处理该请求的Handler。-spring aop应用场景

  • 通过处理器适配器HandlerAdapter(它用统一的接口对各种Handler中的方法进行调用)对该Handler进行处理。最后,得到一个ModelAndView对象给DispatcherServlet,ModelAndView包含了数据模型以及相应的视图的信息。-pring

  • DispatcherServlet借助视图解析器ViewResolver完成从逻辑视图到真实视图对象的解析工作,最后,得到一个View视图对象。

  • DispatcherServlet会利用得到的View视图对象对模型数据进行视图渲染,并将数据填充到request域。

  • 最后客户端得到响应,结果可能是一个HTML页面、XML、JSON字符串,还可以是一张图片或者一个PDF文件。

  • 重要模块:

  • 前端控制器 (DispatcherServlet): DispatcherServlet减少了其他组件之间的耦合度,这就是一个中心点,由它来调用整个系统中的其他模块,最后也还是由它来将处理结果响应给客户端。-spring aop应用场景

  • 处理器映射器 (HandlerMapping): 根据请求的 url 查找 Handler。

  • 处理器 (Handler):按照HandlerAdapter要求的规则编写Handler。

  • 处理器适配器(HandlerAdapter) :执行Handler

  • 视图解析器 (ViewResolver):进行视图解析,用真实数据将逻辑视图解析成真实的视图 (View)。

  • 视图 (View):View 是一个接口实现类支持不同的 View 类型(jsp,pdf等等)


Spring中Bean的生命周期是怎样的


Spring框架中,一旦把一个bean纳入到Spring IoC容器之中,这个bean的生命周期就会交由容器进行管理,一般担当管理者角色的是BeanFactory或ApplicationContext。认识一下Bean的生命周期活动,对更好的利用它有很大的帮助。
下面以BeanFactory为例,说明一个Bean的生命周期活动:
Bean的建立
由BeanFactory读取Bean定义文件,并生成各个实例。
Setter注入
执行Bean的属性依赖注入。
BeanNameAware的setBeanName()
如果Bean类实现了org.springframework.beans.factory.BeanNameAware接口,则执行其setBeanName()方法。
BeanFactoryAware的setBeanFactory()
如果Bean类实现了org.springframework.beans.factory.BeanFactoryAware接口,则执行其setBeanFactory()方法。
-pring