java读书笔记

Spring框架搭建

2016-07-16  本文已影响166人  龚达飞

一、Spring相关概念

1:轻量级的容器:

容器:spring容器帮我们管理业务逻辑层,里边有很多业务逻辑对象,有对象就有对象的生命周期的管理(创建,销毁).

轻量级:容器给予的业务逻辑对象多少种服务?spring给用户提供的服务完全有用户自己决定,spring想用什么服务自己开启使用。但是重量级的都是只要你用就把所有的服务都给你,不能自己定制。

spring容器从来不能独立运行,一定借助于其他容器启动,或者借助web容器启动,或者ejb容器启动。

特点:

应用模块之间耦合度小,组件都是可重用的,都是各自打包的

2.spring的优点:

1:开发人员可以只关注整个结构中的其中某一层;

2:可以很容易的用新的实现来替换原有层次的实现;

3:可以降低层与层之间的依赖;

4:有利于标准化;

5:利于各层逻辑的复用。

6:结构更加的明确

7:在后期维护的时候,极大地降低了维护成本和维护时间

3.缺点:

1:降低了系统的性能。这是不言而喻的。如果不采用分层结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。

2:有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。

3:增加了开发成本。

二、搭建spring框

1.新建一个java工程 Spring_test

2.导入jar包

   http://pan.baidu.com/s/1jICqmbW

3.添加配置文件bean.xml(命名可自定义,与struts2要求不同)

4.添加配置文件bean.xml提示文件

      http://pan.baidu.com/s/1kVRhoF1

三、pojo和javabean  的区别

           POJO 和JavaBean是我们常见的两个关键字,一般容易混淆,POJO全称是Plain Ordinary Java Object / Pure Old Java Object,中文可以翻译成:普通Java类,具有一部分getter/setter方法的那种类就可以称作POJO,但是JavaBean则比 POJO复杂很多, Java Bean 是可复用的组件,对 Java Bean 并没有严格的规范,理论上讲,任何一个 Java 类都可以是一个 Bean 。但通常情况下,由于 Java Bean 是被容器所创建(如 Tomcat) 的,所以 Java Bean 应具有一个无参的构造器,另外,通常 Java Bean 还要实现 Serializable 接口用于实现 Bean 的持久性。 Java Bean 是不能被跨进程访问的

JavaBean是一种组件技术,就好像你做了一个扳子,而这个扳子会在很多地方被拿去用,这个扳子也提供多种功能(你可以拿这个扳子扳、锤、撬等等),而这个扳子就是一个组件。

一般在web应用程序中建立一个数据库的映射对象时,我们只能称它为POJO。

POJO(Plain Old Java Object)这个名字用来强调它是一个普通java对象,而不是一个特殊的对象。

2005年11月时,“POJO”主要用来指代那些没用遵从特定的Java对象模型,约定或框架如EJB的Java对象.

理想地讲,一个POJO是一个不受任何限制的Java对象(除了Java语言规范)。例如一个POJO不应该是

1. 扩展预定的类,如      public class Foo extends javax.servlet.http.HttpServlet { ...

2. 实现预定的接口,如  public class Bar implements javax.ejb.EntityBean { ...

3. 包含预定的标注,如  @javax.ejb.Entity public class Baz{ ...

然后,因为技术上的困难及其他原因,许多兼容POJO风格的软件产品或框架事实上仍然要求使用预定的标注,譬如用于更方便的持久化。

JavaBean 是一种JAVA语言写成的可重用组件。它的方法命名,构造及行为必须符合特定的约定:

1. 这个类必须有一个公共的缺省构造函数。

2. 这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范。

3. 这个类应是可序列化的。

因为这些要求主要是靠约定而不是靠实现接口,所以许多开发者把JavaBean看作遵从特定命名约定的POJO。

简而言之,当一个Pojo可序列化,有一个无参的构造函数,使用getter和setter方法来访问属性时,他就是一个JavaBean。

我的整理与总结:

一、对于java bean,就是一个java模型组件,他为使用java类提供了一种标准的格式,在用户程序和可视化管理工具中可以自动获得这种具有标准格式的类的信息,并能够创建和管理这些类。

java bean 可以使应用程序更加面向对象,可以把数据封装起来,把应用的业务逻辑和显示逻辑分离开,降低了开发的复杂程度和维护成本!

JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBeans 通过提供符合一致性设计模式的公共方法将内部域暴露称为属性。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制发现和操作这些JavaBean 属性。

从编程的角度,也就是最基本的实现了get跟set方法的类。

二、Enterprise Bean,也就是Enterprise JavaBean(EJB),是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。

在 J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话 Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。

1.Session Bean用于实现业务逻辑,它可以是有状态的,也可以是无状态的。每当客户端请求时,容器就会选择一个Session Bean来为客户端服务。Session Bean可以直接访问数据库,但更多时候,它会通过Entity Bean实现数据访问。 这个类一般用单例模式来实现,因为每次连接都需要用到它。

2.Entity Bean是域模型对象,用于实现O/R映射,负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个Entity Bean对象相当于新建一条记录,删除一个 Entity Bean会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。

Java Persistence 1.0规范中的entity bean仅作为普通Java对象(POJO)来使用,并且是映射到关系数据库表的。与其他类型的EJB不同,entity bean可以被分配,序列化,并像任何其他POJO那样通过网络被发送出去。

3.MessageDriven Bean是EJB2.0中引入的新的企业Bean,它基于JMS消息,只能接收客户端发送的JMS消息然后处理。MDB实际上是一个异步的无状态Session Bean,客户端调用MDB后无需等待,立刻返回,MDB将异步处理客户请求。这适合于需要异步处理请求的场合,比如订单处理,这样就能避免客户端长时间的等待一个方法调用直到返回结果。

三、Enterprise Bean 与 JavaBean的区别

最初,JavaBean的目的是为了将可以重复使用的软件代码打包标准。特别是用与帮助厂家开发在综合开发环境(IDE)下使用的java软件部件。这些包括如Grid控件,用户可以将该部件拖放到开发环境中。从此,JavaBean就可以扩展为一个java web 应用的标准部件,并且JavaBean部件框架已经扩展为企业版的 Bean(EJB)。

JavaBean 和 Server Bean(通常称为 Enterprise JavaBean (EJB))有一些基本相同之处。它们都是用一组特性创建,以执行其特定任务的对象或组件。它们还有从当前所驻留服务器上的容器获得其它特性的能力。这使得 bean 的行为根据特定任务和所在环境的不同而有所不同。

JavaBean 是使用 java.beans 包开发的,它是 Java 2 标准版的一部分。JavaBean 是一台机器上同一个地址空间中运行的组件。JavaBean 是进程内组件。Enterprise Bean 是使用 javax.ejb 包开发的,它是标准 JDK 的扩展,是 Java 2 Enterprise Edition 的一部分。Enterprise Bean 是在多台机器上跨几个地址空间运行的组件。因此 Enterprise Bean 是进程间组件。JavaBean 通常用作 GUI 窗口小部件,而 Enterprise Bean 则用作分布式商业对象.

四、POJO一个正规的Java对象(不是JavaBean,EntityBean等),也不担当任何的特殊的角色,也不实现任何Java框架指定的接口。POJO是一个简单的、正规Java对象,它包含业务逻辑处理或持久化逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。

POJO 应该不是我们开始认为的JavaBean,当然更不是EJB,它不应该依赖于框架即继承或实现某些框架类或接口。例如:Struts1中的Action和 ActionForm当然不属于POJO了,而在Struts2中的Action由于可以不继承任何的接口,所以在这种情况下Action是POJO,但是Struts2中的Action也可以继承ActionSupport类就不再属于POJO了。POJO里面是可以包含业务逻辑处理和持久化逻辑,也可以包含类似与JavaBean属性和对属性访问的set和get方法的。

在百度百科上的解释是:简单的Java对象(Plain Ordinary Java Objects)实际就是普通JavaBeans,使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,有时可以作为value object或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。

四、简单的测试

测试1

测试2

测试1.

测试2.

SetName 去掉set 首字母小写 http://pan.baidu.com/s/1mh5ksOC

知识点1:   

 spring容器怎么管理我们配置的对象:   

 默认情况下,spring容器用单例的模式来管理这些对象.    通过相同的一个对象名字,多次在容器中拿对象,每一次    拿到的都是 相同的 对象(单例)       

 通过配置,我们可以让spring容器用非单例的模式来管理这个对象.    通过相同的一个对象名字,多次在容器中拿对象,每一次拿到的都是 不同的 对象(非单例) 

在bean标签中加入属性scope="prototype"      

知识点2

name属性的值是自己随便起的    class属性的值表示这里要配置的是哪一个类的对象name属性的值表示一个方法,这里表示的是setStudent方法    ref属性表示调用这个setStudent方法的时候要用的参数是名字为student的对象     

 知识点3    

可以给某一个对象起一个别名:      这个时候,不管用student还是用s1,这个俩个名字都是    指向的同一个Student类型的对象

知识点4    

可以给一个类配置多个对象,对象的名字要不同   

 知识点5    

bean标签里面的id和name属性都可以用来标识这个配置的对象,    但是id会帮我们检查给对象起的名字是否规范    (名字不能重复、不能用数字开头、不能有空格等等),    如果检查出来了那么就会报错。    name属性不会帮检查这些东西。

上一篇下一篇

猜你喜欢

热点阅读