知识大全 我来说说Bean的使用方法

Posted

篇首语:道理我都懂,可我要的不是道理,而是你的关心和体贴。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 我来说说Bean的使用方法相关的知识,希望对你有一定的参考价值。

我来说说Bean的使用方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  最近讨论主要围绕在公共构造函数以及工厂模式身上 我在此分贴 说说我对 Bean的看法 因为最近项目使用到了webwork spring hibernate 我主要结合这些框架来谈谈我个人对pojo bean的认识   bean的规范使得对象属性填充得到动态支持 Bean的规范使得对象图的建立非常清晰 OGNL正是基于此实现   在对bean属性赋值 与 bean的定义之间插入一个中间层OGNL 得到最大限度的灵活 我们举一个比较极端但确实经常发生的例子(顺带狠狠批一下Struts)      java代码:          // 持久层entity:    public class BeanA        private String name;     private int number;     public BeanA()             public String getName()      return name;          public void setName(String name)         this name=name;          public int getNumber()         return number;          public void setNumber(int num)         number=num;              //视图层form:   Struts:   public class BeanAForm        private String name;     private String number;     public BeanA()             public String getName()         return name;          public void setName(String name)         this name=name;          public String getNumber()         return number;          public void setNumber(String num)         number=num;               struts通过form定义利用bean的特性达到form的自动填充 然后通过beanutil将form转到entity或者DTO   某天 客户觉得需要修改entity 增多一个字段bar struts的做法是修改form 修改entity 修改配置文件的form定义 修改客户端jsp文件等等 然后编译通过 update database schema   webwork的做法就非常简单了 在open session in filter模式下 只需改动  entity的定义即可 ognl将所有的问题变得简单得可怕   OGNL完全将客户端到服务器端的参数传递代理了 只要你在你的action定义相应的name setter ognl自动识别到这个setter 自动将参数传递进来   对于多层关联的情况 最极端的如下      java代码:        public class A        private B b;     //getter     //setter    ;    public class B        private C c;     //getter setter   ;   public class C        String name;      ;    你在视图层只暴露了A对象 而需要通过form修改C对象的值 这种情况在struts我不知道它怎么实现 但是在webwork下 依赖OGNL 您要做的仅仅写下这么一句 name= a b c name Ognl自动将name的值填充到c的属性   讨论了这么多 回过头来看 是什么东西使得我们web开发变得简单了呢?是OGNL 那么OGNL为什么这么强大呢?因为OGNL是基于Bean的对象图寻找方式!!  到这里 我们看到了Bean是一切的基础 没有bean就没有OGNL   同样 看看IoC容器 一样的道理 没有Bean就没有IoC容器的实现 如果采用bean的格式定义你的组件 那么意味着你的组件是可装配的 如果采用bean定义的entity 意味着你的entity是可以自动填充的   现在评价一个软件好坏 可装配性是一个重要目标 假设一个较复杂得系统 我们分析一下它的运作   A系统由 子系统C 子系统B 构成 子系统C 由C C C 等等服务组件构成 每个服务组件又需要调用多个基本服务类来协作 子系统B同样构架      系统启动过程   bootrap启动服务守护引擎 引擎读取配置文件 相关初始化      服务过程   一个请求上来 守护引擎根据请求映射 需要调用C子系统的服务接口 C子系统的服务接口未装载 请求beanfactory装载C子系统的服务接口 beanfactory读取C系统接口配置 发现这个接口具体实现类 以及这个具体实现类需要到的C C C 组件 又根据引用读取C 等的配置信息 知道最后的服务类是最简单的POJO bean 逐一初始化所有需要用到的类 然后调用已经实例化的接口 完成服务      改动过程   C C 组件需要改善功能 增加C C 组件 写代码 编译打包 修改配置文件 发布   服务过程如上    这个系统是完全可插入的 因为它所有的服务过程都是基于组件的 组件是可装配的 试想一下 如果其中的C 或者C 不是Bean格式 也就是说没有公开构造器 那么这一切优雅的实现就断节了 就算要实现这么一个类似的实现 也要需要花费大量的精力物力来填补构造器的模式    cha138/Article/program/Java/hx/201311/25557

相关参考

知识大全 控制bean定制器的技巧

  概要  集成开发环境(IDEs)可以解剖一个bean类的文件并且生成一个带参数的对话框开发者可以利用它来定制自己的bean但是这些标准的定制对话框留下了很多参数以满足它的适应性灵活性和美学目的本文

知识大全 Spring容器对Bean组件的管理

Spring容器对Bean组件的管理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一Bean对

知识大全 Bean标签库

Struts1.x系列教程(6):Bean标签库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 关于在bean里面打印html的利弊看法

  servlet由于打印代码全部写在class中间所以代码编写很麻烦也不便于维护sun公司才推出了jsp  但这是否意味着我们在jsp+bean的架构中就不能在bean里面输出代码呢?    封装在

知识大全 JSP中bean的使用

JSP中bean的使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!cha138/Art

知识大全 Spring创建Bean的过程

Spring创建Bean的过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  beans包提供了

知识大全 JSP和BEAN详细剖析

JSP和BEAN详细剖析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &n

知识大全 创建Bean后处理器

Spring攻略:创建Bean后处理器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一知识点 

知识大全 详解Spring中bean的scope

详解Spring中bean的scope  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如何使用s

知识大全 有状态会话Bean及其多种调用方法

JBoss:有状态会话Bean及其多种调用方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一