1、Spring的主要特性:依赖注入DI和面向切面编程AOP。

2、关键策略:
轻量级和最小侵入性编程:POJO
松耦合:DI和AOP
声明式编程:切面和惯例
减少样板式代码:切面和模板

3、Spring不会强迫你实现Spring规范的接口或继承Spring规范的类。往往没有任何迹象表明你使用了Spring!

4、依赖注入DI
装配(wiring):创建应用组件之间协作的行为;
Spring的装配:有多种装配Bean的方式,最常见的是XML配置方式;
工作方式:Spring通过应用上下文(Application Context)装载、组装Bean;
Spring的上下文:有多种,区别在于如何加载它们的配置。常用的如ClassPathXmlApplicationContext,可用来加载位于系统classpath下的一个或多个XML文件。
(依赖注入更多参考《Dependency Injection》,Dhanji R. Prasanna)

5、应用切面AOP
DI让相互协作的软件组件保持松散耦合,而AOP编程允许你把遍布应用各处的功能分离出来形成可重用的组件。

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

7、Bean
在基于Spring的应用中,应用对象生存于Spring容器中。
容器:负责应用对象的创建、装配、配置、管理等整个生命周期,即负责了从创建到销毁的过程。
Spring容器:Spring自带集中容器实现,可归纳为Bean工厂(bean factories)和应用上下文(application)两类,重点应用的是应用上下文。
应用上下文:Spring主要的几种应用上下文:
ClassPathXMLApplicationContext——从类路径下的XML配置文件中加载上下文定义,把应用上下文定义文件当做类资源;
FileSystemXMLApplicationContext——读取文件系统下的XML配置文件并加载上下文定义;
XmlWebApplicationContext——读取Web应用下的XML配置文件并装载上下文;

《Spring实战》-1的更多相关文章

  1. 1<<33这种写法是错的!!!

    1<<33不能这么写,1默认int类型,应该改为(long long)1<<33

  2. mysql 5.6.33 重置密码后报错

    [root@ Desktop]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; o ...

  3. 【C语言】++(a++)的写法是错的

    http://bbs.csdn.net/topics/390764053 a++得到的是一个右值,++操作需要的是一个左值. ------------------------------------- ...

  4. [C语言]易错知识点、小知识点复习(1)

    1. 计算机只能识别由0和1组成的二进制指令,需要将用高级语言(如C.C++)编写的源程序(.c..cpp)编译成二进制目标文件(.obj).一个程序可以根据需要写在不同的文件里,编译是以文件为单位进 ...

  5. js自执行函数的几种不同写法的比较

    经常需要一个函数自执行,可惜这一种写法是错的: function(){alert(1);}();  原因是前半段“function(){alert(1);}”被当成了函数声明,而不是一个函数表达式,从 ...

  6. 菜鸟的Xamarin.Forms前行之路——从新建项目到APP上架各种报错问题解决方法合集(不定时更新)

    出自:博客园-半路独行 原文地址:http://www.cnblogs.com/banluduxing/p/7425791.html 本文出自于http://www.cnblogs.com/banlu ...

  7. django migrate报错:1005 - Can't create table xxx (errno: 150 "Foreign key constraint is incorrectly formed")

    自从mysql升级,以及使用mariaDB以来,很多不曾更新django中model的外键, 今天,按以前的思路写完外键之后, migrate命令报错: 1005 - Can't create tab ...

  8. 《C++primer》v5 第2章 变量和基本类型 读书笔记 习题答案

    2.1 int,long long ,short 可表示范围和占用内存空间不同.具体与计算机有关. 无符号类型只能表示0和正数,带符号类型可以表示负数,0,正数. float是单精度,一般占用4个字节 ...

  9. Go第七篇之规范的接口

    接口本身是调用方和实现方均需要遵守的一种协议,大家按照统一的方法命名参数类型和数量来协调逻辑处理的过程. Go 语言中使用组合实现对象特性的描述.对象的内部使用结构体内嵌组合对象应该具有的特性,对外通 ...

  10. 作为一个新手的Oracle(DBA)学习笔记【转】

    一.Oracle的使用 1).启动 *DQL:数据查询语言 *DML:数据操作语言 *DDL:数据定义语言 DCL:数据控制语言 TPL:事务处理语言 CCL:指针控制语言 1.登录 Win+R—cm ...

随机推荐

  1. linux下查找命令两则

    由于本人不会阅读man手册,因此需要几下两个常用的查找命令: (1)在某个目录及其子目录查找某个文件并打印完整路径: find ./ -name "assertions.h" -e ...

  2. 使用case语句给字体改变颜色

    使用case语句给字体改变颜色 #!/bin/bash color(){ RED_COLOR='\E[1;31m' GREEN_COLOR='\E[1;32m' YELLOW_COLOR='\E[1; ...

  3. java代码继承------多层继承

    总结:继承.方法的重要性, 运行结果显示: class A is callingclass B is callingclass C is calling package com.addd; //jav ...

  4. PostgreSQL 管理数据库

    管理数据库每个正在运行的PostgreSQL 服务器实例都管理着一个或多个数据库.因此,在组织SQL对象(“数据库对象”)的层次中,数据库位于最顶层. 本章描述数据库的属性,以及如何创建.管理.删除它 ...

  5. Scala的Json序列化

    import java.util.TimeZone import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMappe ...

  6. appium_python-测试报告模板话化

    我们用python拓展模板 HTMLTestRunner.py python3 要自己重新改写下输出输入接口,可直接下载 改好的 地址 链接:http://pan.baidu.com/s/1hsOBw ...

  7. Drools学习笔记2—Conditions / LHS 匹配模式&条件元素

    Rule的LHS由条件元素(Conditional Elements—CE)和匹配模式(Patterns)组成 Patterns被用来指示出fact的字段约束 每个约束必须为true才能让RHS的ac ...

  8. python使用pyodbc连接sql server 2008

    一.PyODBC的下载地址: http://code.google.com/p/pyodbc/ 二.测试语句 import pyodbccnxn = pyodbc.connect(DRIVER='{S ...

  9. 3-在EasyNetQ上使用SSL连接(黄亮翻译)

    EasyNetQ可以通过SSL进行连接.这篇指南的作者Gordon Coulter最初为回应一个提问写的. 首先,你必须仔细依据https://www.rabbitmq.com/ssl.html文章中 ...

  10. spring-初始化bean

    @EnableScheduling@Servicepublic class BaseTask implements InitializingBean, ApplicationContextAware{ ...