框架-Spring及组件概念
1.什么是Spring
Spring框架是一款开源java平台。创建于2003年,轻量级框架(基本版本只有2M)。
使用Spring优点:
(1) 使用POJOs开发,不再需要EJB容器;如果必要,仅需要Tomcat或其他servlet容器
(2) 模块化组织,只需关注用到的模块
(3) 高度复用,ORM框架、日志框架、Quartz、JDK timers
(4) 测试便捷,POJOs注入测试数据
(5) MVC web框架,可支持Struts或其他小众框架
(6) Spring提供API,转化异常(JDBC, Hibernate, or JDO)为不检查异常
(7) 轻量化IoC容器,适用于CPU、Mem资源有限的机器
(8) 事务管理接口
DI技术
Spring框架最著名的特征,IoC概念的典型实现。
AOP(Aspect Oriented Programming)面向切面编程
Spring的另一个关键技术。cross-cutting concerns,即应用扩展只多点,且这些“横切关注点”与业务逻辑剥离。面向切面编程的例子:日志、声明式事务、安全、缓存等。
2.Spring 架构
Spring支持最大20多个模块,根据所需选择即可

Core Container
|
Core |
提供最基本框架功能,包括IoC、依赖注入等 |
|
|
Bean |
BeanFactory 工厂模式 |
|
|
Context |
以Core和Bean模块为基础,访问任何对象的媒介;ApplicationContext |
|
|
SpEL |
provides a powerful expression language for querying and manipulating an object graph at runtime |
Data Access/Integration
|
JDBC |
提供JDBC抽象层 |
|
|
ORM |
提供对象关联映射API 如JPA、JDO、Hibernate、iBatis的整合层 |
|
|
OXM |
提供对象/XMLg关联映射抽象层,支持JAXB、Castor、XMLBeans、JiBX and XStream |
|
|
JMS |
Java Messaging Service |
|
|
Transaction |
支持 面向过程和声明式事务管理 |
Web
|
AOP |
切面编程(定义方法拦截器和切点,解耦功能代码) |
|
|
Web-MVC |
Model-View-Controller 实现 |
|
|
Web-Socket |
support for WebSocket-based, two-way communication between the client and the server in web applications |
|
|
Web-Portlet |
provides the MVC implementation to be used in a portlet environment and mirrors the functionality of Web-Servlet module |
其他
|
Web |
web功能基础模块、IoC容器和面向web application context初始化 |
|
|
Aspects |
AspectJ |
|
|
Instrumentation |
类装饰、类加载 |
|
|
Messaging |
支持STOMP协议 |
|
|
Test |
JUnit or TestNG frameworks |
3.什么是容器
J2EE中容器充当中间件的角色,主要包括:WEB容器、EJB容器。
Web容器
给应用程序组建(JSP、SERVLET)提供一个环境,JSP、Servlet直接与容器中的环境变量接口交互,不必关注其他系统问题。常用Web服务器:tomcat、webloggc、WEBSPHERE。这些容器接口遵守J2EE规范WEB APPLICATION 标准。
EJB容器(Enterprise java bean 容器)
给运行其中的EJB组建提供各种管理功能(邮件服务、事务管理)。EJB容器与Web容器原理大致相同,区别是被隔离的外界环境,Web实现与基于Http请求交互(Servet不必关心Http细节,直接引用session、request、response),而EJB容器主要是与数据库、其他服务交互(EJB组件不必关心数据库连接速度、事务控制)。
4. EJB
官方解释:商务软件的核心部分是它的业务逻辑。业务逻辑抽象了整个商务过程的流程,并使用计算机语言将他们实现。
J2EE 对于这个问题的处理方法是将业务逻辑从客户端软件中抽取出来,封装在一个组件中。这个组件运行在一个独立的服务器上,客户端软件通过网络调用组件提供的服务以实现业务逻辑,而客户端软件的功能单纯到只负责发送调用请求和显示处理结果。在J2EE 中,这个运行在一个独立的服务器上,并封装了业务逻辑的组件就是EJB(Enterprise JavaBean)组件。
EJB底层实现:
EJB 是运行在独立服务器上的组件,客户端是通过网络对EJB 对象进行调用的。在Java中,能够实现远程对象调用的技术是RMI,而EJB 技术基础正是RMI。通过RMI 技术,J2EE将EJB 组件创建为远程对象,客户端就可以通过网络调用EJB 对象了
5. 对象、类、包、组件、容器、框架概念
对象(Object):
在java的世界里,对象是通过属性和方法来分别对应事物所具有的静态属性和动态属性.
类(Class):
用于描述同一类型的对象的一个抽象的概念.
组件(component):
组件也是抽象的概念,可以理解为一些符合某种规范的类组合在一起就构成了组件。他可以提供某些特定的功能。J2EE来说,有什么servlet,jsp, javabean,ejb都是组件。但实际他们都是类,只不过有他们特殊的规定。组件和类的关系:符合某种规范的类的组合构成组件
容器(Container):
容器也叫做组件容器,组件容器是一种比较特殊的组件,它可以包含其他的组件。我们可以把组件放在组件容器中。
框架(framework):
就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统.java框架就是一些类和接口的集合,通过这些类和接口协调来完成一系列的程序实现。框架又叫做开发中的半成品,它不能提供整个WEB应用程序的所有东西,但是有了框架,我们就可以集中精力进行业务逻辑的开发而不用去关心它的技术实现以及一些辅助的业务逻辑。我们熟知的Structs和Spring就是表示层和业务层框架的代表。
架构:
软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口()来实现
框架不是构架。架构确定了系统整体结构、层次划分,不同部分之间的协作等设计考虑。框架比架构更具体,更偏重于技术涉嫌。对于同一架构(比如Web开发中的MVC),可以通过多种框架来实现。
框架-Spring及组件概念的更多相关文章
- Spring4- 01 - Spring框架简介及官方压缩包目录介绍- Spring IoC 的概念 - Spring hello world环境搭建
一. Spring 框架简介及官方压缩包目录介绍 主要发明者:Rod Johnson 轮子理论推崇者: 2.1 轮子理论:不用重复发明轮子. 2.2 IT 行业:直接使用写好的代码. Spring 框 ...
- JavaWeb_(Spring框架)Spring中IoC与DI概念入门
Spring是于2003 年兴起的一个轻量级的Java 开源框架,它由Rod Johnson创建.传统J2EE应用的开发效率低,Spring作为开源的中间件,提供J2EE应用的各层的解决方案,Spri ...
- [Spring框架]Spring开发实例: XML+注解.
前言: 本文为自己学习Spring记录所用, 文章内容包括Spring的概述已经简单开发, 主要涉及IOC相关知识, 希望能够对新入门Spring的同学有帮助, 也希望大家一起讨论相关的知识. 一. ...
- Maven+SSM框架(Spring+SpringMVC+MyBatis) - Hello World(转发)
[JSP]Maven+SSM框架(Spring+SpringMVC+MyBatis) - Hello World 来源:http://blog.csdn.net/zhshulin/article/de ...
- spring的一些概念及优点
Spring是一个轻量级的DI和AOP容器框架.说它轻量级有一大部分原因是相对于EJB的(虽然本人从来没有接触过EJB的应用),但重要的是Spring是非侵入式的,基于Spring开发应用一般不依赖于 ...
- Spring框架 - Spring和Spring框架组成
Spring框架 - Spring和Spring框架组成 Spring是什么?它是怎么诞生的?有哪些主要的组件和核心功能呢? 本文通过这几个问题帮助你构筑Spring和Spring Framework ...
- 一篇文章带你掌握主流基础框架——Spring
一篇文章带你掌握主流基础框架--Spring 这篇文章中我们将会介绍Spring的框架以及本体内容,包括核心容器,注解开发,AOP以及事务等内容 那么简单说明一下Spring的必要性: Spring技 ...
- Spring AOP基本概念
Spring AOP基本概念 目录 Spring AOP定义 AOP基本术语 通知类型 AOP定义 AOP基本术语 切面( Aspect ):一个能横切多个对象的模块化的关注点.对Spring AOP ...
- spring技术核心概念纪要
一.背景 springframework 从最初的2.5版本发展至今,期间已经发生了非常多的修正及优化.许多新特性及模块的出现,使得整个框架体系显得越趋庞大,同时也带来了学习及理解上的困难. 本文阐述 ...
随机推荐
- JuJu团队12月2号工作汇报
JuJu团队12月2号工作汇报 JuJu Scrum 团队成员 今日工作 剩余任务 困难 于达 和婷婷一起调试main.jl 继续调试 金华实现的BiLSTM参数无法使用save存入 婷婷 和于达 ...
- linux扩容空间,再扩容文件系统
Linux磁盘空间进行扩容 参考博客 http://blog.csdn.net/dingchenxixi/article/details/50986472 http://blog.sina.com.c ...
- @echo off命令
在C盘下新建一个文本文档,将名字改为1.bat. 打开/编辑,输入call cmd.cmd是命令提示符.运行该文件,出现命令提示符窗口,在该窗口下可以运行各种命令.由图1.1可见,在第一行显示C:\ ...
- torchvision.datasets
转载 https://ptorch.com/docs/8/torchvision-datasets
- NSPredicate实现数据筛选
一:基本语法 1.什么是NSPredicate apple官方文档这样写的: The NSPredicate class is used to define logical conditions us ...
- ORACLE时间相关问题
一.遇到一个情况数据库存入的时间格式为20180831154546,需要将其转化为日期时分秒格式的. to_date('20180831154546', 'yyyy-mm-dd hh24:mi:ss' ...
- BZOJ:2190: [SDOI2008]仪仗队
题解:欧拉函数 #include<iostream> #include<cstdio> #include<cstring> using namespace std; ...
- Thread.currentThread()和this的区别
1. Thread.currentThread()可以获取当前线程的引用,一般都是在没有线程对象又需要获得线程信息时通过Thread.currentThread()获取当前代码段所在线程的引用. 2. ...
- 六、SAP中以一个变量的形式来定义另一种变量
一.代码如下: 二.输出
- https://www.jianshu.com/p/fc78dab5736f
在学习Swift 3的过程中整理了一些笔记,如果想看其他相关文章可前往<Swift 3必看>系列目录 swift 3中对C层级的GCD的API进行了彻头彻尾的改变.本文将从实际使用场景来了 ...