Beginning Spring学习笔记——第1章
来源:互联网 发布:淘宝店铺更换类目影响 编辑:程序博客网 时间:2024/06/07 06:22
POJO
定义
即Plain Old Java Object, 指没有使用Entity Bean的普通Java对象,不实现任何其他Java框架(如EJB,JDBC等等)的接口的类或者接口。其中典型的一部分是含有一些私有参数作为属性并为每个参数定义了getter和setter方法来修改值的数据类。如
public class User { private long id; private String name; public void setId(long id) { this. id = id; } public void setName(String name) { this. name=name; } public long getId() { return id; } public String getName() { return name; } }
上例中定义的User类包含了long id, String name两个private属性,他们各定义了getter和setter方法
优势——相对EJB
编写快速简单,不需要创建任何不使用的回调方法
EJB组件接口和业务逻辑实现类都必须从EJB框架包中扩展接口,EJB 2.x需要实现几个不必要的回调方法
由于所编写的类不需要依赖特定API,也不需要实现特定接口或者扩展特定框架,因此容易通过网络传输并在不同层之间使用,而不需要创建单独的数据传输对象类。
一个EJB组件至少需要针对主程序、远程接口和业务对象实现三个不同的类
可以通过JUnit轻松地完成测试而不用使用容器内测试框架
EJB中的本地和远程接口使Session Bean之间产生依赖关系,从而不能在独立环境测试Session Bean而需要Cactus之类的容器内框架,相比JUnit更复杂且更缓慢
轻量级容器和控制反转
容器
组件装配和中间件服务提供,希望实现功能:
- 生命周期管理
- 依赖解析
- 组件查找
- 应用程序配置
加分项:
- 事务管理
- 安全性
- 线程管理
- 对象和资源池
- 对组件的远程访问
- 通过JMX之类的API管理组件
- 容器的扩展和定制
轻量级含义
不需要为了依赖这些API编写代码(非侵入性),启动快,不需要部署到功能齐全的Java EE应用程序服务器上就可以提供上述服务
控制反转/依赖注入(IoC/DI)
对依赖项的控制由组件转移到容器,接口的具体实现包含在容器的配置文件中而不是混杂在业务代码中,使得管理和修改变得方便
setter注入
优点:创建之后可以重新配置
缺点:并不是所有依赖项都可以在使用前被注入,使组件处于部分配置状态,且有时setter方法调用顺序很重要,一些顺序可能无法在组件约定中表达构造函数注入
优点:创建期间注入依赖项,线程安全
缺点:无法重新配置setter+构造函数
- Beginning Spring学习笔记——第1章
- Beginning Spring学习笔记——第9章 SpEL
- Beginning Spring学习笔记——第10章 缓存
- Beginning Spring学习笔记——第2章(一)Spring IoC容器
- Beginning Spring学习笔记——第2章(三)Spring的Bean管理
- Beginning Spring学习笔记——第3章(一)Spring MVC基础
- Beginning Spring学习笔记——第4章(一)Spring JDBC连接的配置
- Beginning Spring学习笔记——第5章(二)Spring的JPA支持
- Beginning Spring学习笔记——第6章(一)Spring事务管理基础
- Beginning Spring学习笔记——第7章 使用Spring进行测试驱动开发
- Beginning Spring学习笔记——第8章 Spring AOP
- Beginning Spring学习笔记——第2章(二)依赖注入
- Beginning Spring学习笔记——第3章(二)表单处理
- Beginning Spring学习笔记——第5章(一)ORM和JPA基础
- Beginning Spring学习笔记——第4章(二)使用Spring执行数据访问操作
- Beginning Spring学习笔记——第6章(二)使用Spring进行声明式事务管理
- Beginning Spring学习笔记——第6章(三)使用Spring进行编程式事务管理
- Beginning Spring学习笔记——第11章 使用Spring开发REST风格的Web服务
- 请求授权(Authorize Requests)
- openlayers3+中实现点选、圈选、多边形选择点要素
- 常用居中方法
- js forEach不能break
- Android--SurfaceView播放视频
- Beginning Spring学习笔记——第1章
- 什么是数据挖掘
- Raising Bacteria
- 简单动规 最大子段和
- 欢迎使用CSDN-markdown编辑器
- MySQL中函数CONCAT及GROUP_CONCAT
- NIO--02基本API实现
- JAVA学习笔记_StringUtil.isEmpty_"null"不是null
- Linux下如何编译并运行C程序