博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring之旅
阅读量:4316 次
发布时间:2019-06-06

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

  学如逆水行舟,不进则退。

  昨天我已经将杀恶龙的探险任务类DestoryDragonQuest 实现,而且我们也知道了在骑士BraveKnight 类中存在一个Quest 引用,那么问题来了,怎么将这个探险任务交给骑士BraveKnight 类呢?

     创建应用组件之间协作的行为通常称为装配(wiring)。Spring有多种装配bean的方式。

   1.采用XML是很常见的一种装配方式

  

 

   2.Spring通过应用上下文(Application Context)装载bean的定义并把它们组装起来

package chapter1;import org.springframework.context.support.ClassPathXmlApplicationContext;import infs.Knight;public class KnightMain {        public static void main(String[] args) {        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("questBean.xml");        Knight knight = context.getBean(Knight.class);        knight.embarkOnQuest();        context.close();    }}

  3.降低Java开发复杂性,Spring的第三种策略:基于切面和惯例进行声明式编程。

  3.1 面向切面编程(aspect-oriented programming,AOP)

  面向切面编程允许把遍布应用各处的功能分离出来形成可重用的组件。

系统由许多不同的组件组成,每一个组件各负责一块特定功能。除了自身核心的功能之外,还经常承担额外的职责。诸如日志、事务管理和安全这样的系统服务经常融入到自身具有核心服务 逻辑的组件中,这些系统服务通常被称为横切关注点。

  如果这些关注点分散到多个组件中,将会导致代码双重的复杂性。

  1) 耦合度高,可重用性差。即使将其抽象为一个独立的模块,但方法的调用还是会重复出现在各个模块。

  2) 组件代码中除了自身的狠心业务代码,还有这些功能的代码。而一个方法应该只关注它本身要做的事情,而不应该关注它是不是安全的或是否需要支持事务。

  在整个系统内,关注点(如日志和安全)的调用经常散步到各个模块中,而这些关注点并不是模块的核心业务。

  AOP能够使这些服务模块化,并以声明的方式将它们应用到它们需要影响的组件中。我们可以把切面想象为覆盖在很多组件智商的一个外壳。应用那些实现各自业务功能的模块组成的。借助AOP,可以使用各种功能层去包裹核心业务层。这些层以声明的方式灵活应用到系统中。

  利用AOP,系统范围内的关注点覆盖在它们所影响组件之上。

    与传统直接在组件代码中调用方式不一样,Spring AOP通过在配置文件中设置该组件的切入点,然后在该组件运行至该切入点时,才会运行如日志、安全等服务。

  4.通过切面和模板减少样式代码

  在许多编程场景中往往会产生许多样板式代码,其中一个常见惯例就是使用JDBC访问数据库查询数据,其次还有JMS、JNDI和使用REST服务。

  Spring旨在通过模板封装来消除样板式代码。Spring的JdbcTemplate使得执行数据库操作时,避免传统的JDBC样板式代码成为可能。

转载于:https://www.cnblogs.com/dandelZH/p/8666963.html

你可能感兴趣的文章
springMVC中一个class中的多个方法
查看>>
Linux系统安装出错后出现grub rescue的修复方法
查看>>
线段树模板整理
查看>>
[教程][6月4日更新]VMware 8.02虚拟机安装MAC lion 10.7.3教程 附送原版提取镜像InstallESD.iso!...
查看>>
[iOS问题归总]iPhone上传项目遇到的问题
查看>>
Python天天美味(总) --转
查看>>
Spring Framework tutorial
查看>>
【VS开发】win7下让程序默认以管理员身份运行
查看>>
【机器学习】Learning to Rank 简介
查看>>
Unity 使用实体类
查看>>
【转】通过文件锁实现,程序开始运行时,先判断文件是否存在,若存在则表明该程序已经在运行了,如果不存在就用open函数创建该文件,程序退出时关闭文件并删除文件...
查看>>
MySQL常见注意事项及优化
查看>>
流畅的Python (Fluent Python) —— 前言
查看>>
Jquery-menu-aim流畅的菜单滑动体验
查看>>
Jquery EasyUI修改行背景的两种方式
查看>>
生成器模式(Builder)C++实现
查看>>
Centos 7.5安装 Redis 5.0.0
查看>>
嵌入式Linux学习笔记(0)基础命令。——Arvin
查看>>
二分图匹配
查看>>
c++ 模板template
查看>>