文档章节

Spring 和 JavaEE的关系

Finley.Hamilton
 Finley.Hamilton
发布于 2014/11/12 11:55
字数 630
阅读 475
收藏 12

Java EE vs Spring. Or: What is a standard?

什么是JavaEE

J2EE是一系列技术标准所组成的平台。 JavaEE包含了对一系列标准(接口)的实现。 如果你要用这些接口,恐怕要使用JavaEE服务器而不仅仅是一个Servlet容器

Servlet-API

Servlet变准是如何执行的

因为汤姆猫实现了servlet-api所以它知道怎么去找web.xml文件。

JPA规范

对于tomcat来说,他没有实现JPA规范,所以当你真的要在你的web应用里头实现数据库访问

  • 可以简单使用JDBC,这一点是不受限制的,因为JDBC不是JavaEE的东西,大家都可以用,JDBC只是Java数据库连接

看一下人家sqlite实现的接口

package org.sqlite;

public class JDBC implements java.sql.Driver {
    public static final java.lang.String PREFIX = "jdbc:sqlite:";

    public JDBC() { /* compiled code */ }

    public int getMajorVersion() { /* compiled code */ }

    public int getMinorVersion() { /* compiled code */ }

    public boolean jdbcCompliant() { /* compiled code */ }

    public boolean acceptsURL(java.lang.String url) { /* compiled code */ }

    public static boolean isValidURL(java.lang.String url) { /* compiled code */ }

    public java.sql.DriverPropertyInfo[] getPropertyInfo(java.lang.String url, java.util.Properties info) throws java.sql.SQLException { /* compiled code */ }

    public java.sql.Connection connect(java.lang.String url, java.util.Properties info) throws java.sql.SQLException { /* compiled code */ }

    static java.lang.String extractAddress(java.lang.String url) { /* compiled code */ }

    public static java.sql.Connection createConnection(java.lang.String url, java.util.Properties prop) throws java.sql.SQLException { /* compiled code */ }
}
  • 一定要使用JPA的话,可以参考这篇文章 JDBC改JPA

JDBC访问数据库的主要工作包括:

  • 得到JDBC驱动程序;
  • 使用DriverManager,Connection,Statement,ResultSet等; 而使用JPA完成数据的操作包括:
  • 得到JDBC驱动程序;
  • 得到持久性提供者相关类库和配置文件;
  • 提供实体类;
  • 使用Persistence、EntityManagerFactory和Entity等接口。

而工业界类似于JPA规范的,有Hibernate

Spring

那么问题来了,Spring依赖了什么javaee规范呢?

Spring只依赖于servlet-api。

但是,Spring的可扩展性强得令人发指,对于实现JPA规范,他有Spring Data JPA, 它依赖于openjpa-persistence-jdbc,而openjpa实现了JSR-317 Java Persistence 2.0规范,所以的话它仍旧是可以在Tomcat里头用。注意JPA规范用的是persitence.xml的配置文件,这个好理解,跟web.xml是一个道理的。

回过头来,如果你不想用JPA,大可以用Spring自带的JDBCTemplate,它是处在org.springframework.jdbc.core里头的。

总结

Spring的核心仍然在于CDI,正是因为这个原因,哪怕它不去实现大部分的JavaEE规范,它也可以去兼容这些规范的实现,然后利用CDI,注入这些实现。

认识还不够全面,希望以后还能再改改这篇文章。

© 著作权归作者所有

共有 人打赏支持
Finley.Hamilton

Finley.Hamilton

粉丝 5
博文 45
码字总数 15431
作品 0
广州
私信 提问
Spring管理filter和servlet

在使用spring容器的web应用中,业务对象间的依赖关系都可以用context.xml文件来配置,并且由spring容器来负责依赖对象 的创建。如果要在filter或者servlet中使用spring容器管理业务对象,通常...

加油_张
2013/04/25
0
1
web.xml中加载spring配置文件的关系问题

web.xml配置文件中,spring容器加载如下spring文件: 在web.xml中的servlet如下配置: servlet中的spring配置文件与之前加载的spring配置文件有什么关系,spring中注入的bean是否可以在servl...

一气化三清
2015/01/07
7.4K
2
spring与tomcat 对应关系,servlet各版本写法

构建项目时,需要spring+jdk+tomcat各版本对应关系,找了半天,一点都不高效,特此总结下,方便查阅。 tomcat+jdk+servlet对应关系 官网文档地址:http://tomcat.apache.org/whichversion.h...

悲喜世界
11/01
0
0
Spring3中js/css/jpg/gif等静态资源无法找到

最近项目中使用到Spring3,在感叹Spring3注解配置清爽的同时竟然出现了这个不和谐的事情,实在无法忍受 问 题:部署项目后程序加载或用浏览器访问时出现类似的警告,2011-01-19 10:52:51,646...

零度的魚
2014/02/19
0
0
Spring管理Filter和Servlet

Spring管理filter和servlet 在使用spring容器的web应用中,业务对象间的依赖关系都可以用context.xml文件来配置,并且由spring容器来负责依赖对象 的创建。如果要在filter或者servlet中使用s...

zhwj407906450
2014/11/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

render常用模版 结合iview

表格添加一对按钮 { title: '操作', align: 'center', render: (h, params) => { return h('div', [ h('Button', { props: { ......

Carbenson
11分钟前
0
0
一次生产 CPU 100% 排查优化实践

前言 到了年底果然都不太平,最近又收到了运维报警:表示有些服务器负载非常高,让我们定位问题。 还真是想什么来什么,前些天还故意把某些服务器的负载提高(没错,老板让我写个 BUG!),不...

crossoverJie
18分钟前
7
0
Spring Cloud Alibaba Sentinel 整合 Feign 的设计实现

作者 | Spring Cloud Alibaba 高级开发工程师洛夜 来自公众号阿里巴巴中间件投稿 前段时间 Hystrix 宣布不再维护之后(Hystrix 停止开发。。。Spring Cloud 何去何从?),Feign 作为一个跟 ...

Java技术栈
34分钟前
6
0
虚拟机加密

在超融合的基础设施和虚拟化成为常态的世界里,对加密的要求越来越高,越来越迫切,IT部门需考虑的重大安全问题和方法也浮现了出来。 物理数据中心时代,采取双保险式数据安全方法是相对简单...

linuxCool
38分钟前
2
0
MySQL 主从同步

MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 MySQL主从是基于binlog的,主上须开启bin...

野雪球
50分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部