`
jijun87120681
  • 浏览: 41350 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论
文章列表
  当我们需要用到工厂模式的时候,也可以交给Spring容器管理,此时Spring容器管理的就不是普通Bean,可称为“工厂Bean”。此时,应用程序调用getBean()是,Spring返回的不是直接创建的Bean,而是“工厂Bean”创建的Bean。如下图所示:   那Spring怎么配置工厂Bean,方法如下: 一,使用静态工厂       public class StaticFactoryBean { public static Object createEmptyObject() { ...
  Spring的IOC容器就是一个实现了BeanFactory接口的可实例化类。     BeanFactory从名字上都可以看出,采用了工厂模式。应用程序将Bean的创建交给Beanfactory,然后从BeanFactory获取Bean并使用它们,流程图如下:   Bean初始化流程: (1)容器根据XML配置文件中Bean的定义实例化一个Bean,并传入必要的构造方法参数。 (2)容器根据XML配置文件使用设置Bean的属性 (3)如果Bean实现了BeanNameAware接口,调用其setBeanName()方法 (4)如果Bean实现了BeanClassLoad ...
      接着上篇讲,这里先介绍下Java Bean概念。     JavaBean具有一个无参构造器和getter/setter方法。可以作为数据对象的载体,也可以作为业务组件实现商业逻辑。和EJB重量级组件而言,通常把JavaBean成为轻量级组件。     IOC容器:容器就是运行组件环境,上篇已经介绍过了,这里理解下IOC,控制反转。不过更适合成为DI,依赖注入。     首先理解下为什么要用IOC?     public class BookService { private BookDao bookDao = new Hibe ...
学习spring思想,就不得不了解spring的起源,这就又不得不扯出EJB和JavaEE平台。 JavaEE平台:提供了一套标准API和以组件为基础的企业架构,更提出了一个“容器”的概念,由此可以降低企业级开发复杂度。   那组件是什么?容器又是什么? 组件:java代码总是通过抽象来达到复用,但随着软件规模的扩大,就需要一些类单个或组合起来,实现某些功能,一般都是已编译好的类,,对外只提供接口,来达到二进制级别的复用,而Java Bean就是最简单的组件。 容器:为某些组件的运行提供必要运行支持的一个软件环境。如Web容器为Servlet和JSP组件提供运行环境,EJ ...
接上篇,为什么此种模式下,在spring托管CMT管理的JTA事务中,无法切换数据源,忙活了好久,对着日志流程和源代码,貌似问题出现在下面的代码中:   org.mybatis.spring .SqlSessionUtils public static SqlSession getSqlSession方法: SqlSessionHolder holder = (SqlSessionHolder) TransactionSynchronizationManager.getResource(sessionFactory); //7.当前在事务中,且sess ...
  最近搭建架构,碰到JTA和事务Transaction的问题,在此做个总结:   架构:Mybatis+ Spring   技术:spring的AbstractRoutingDataSource和JTA   老规矩,先贴代码,在讲原理,刚开始的时候不使用JTA,代码如下:     /** * DataSource上下文句柄,通过此类设置需要访问的对应数据源 * */ public class DataSourceContextHolder { /** * DataSource上下文,每个线程对应相应的数据源key */ ...
  好久没过来写blog了,今天写一下命令模式。 案例:设计一个家电自动化的API,这个遥控器具有几个可编程的插槽,每一个插槽都有对应的开关按钮,还有一些java类,这些类由多家厂商提供,控制家电自动化装置, 例如:电灯,风扇等。好了,此时就要创建一个控制遥控器的API出来,让每一个插槽都能够控制一个装置。 每个类都有on()/off()方法,除外可能还有其他方法(如:stop()方法等),而且厂商可能还会有更多。 首先,遥控器应该知道如何解读按钮被按下的动作,即命令,然后发出正确的请求,但是遥控器不需要知道这些家电自动化细节,与厂商解耦。 其次,可能有些人会想到用if判 ...
单例模式,算是这些模式当中最简单的一个模式了,面试的时候如果问设计模式,貌似很多都会问到这个。 单例模式定义:确保一个类只有一个实例,并提供一个全局访问点。OK,由于此模式较简单,这里就不举什么 生活中的 ...
接到工厂讲,现在披萨店需要建一个原料工厂(原料包括:酱料,芝士,蔬菜,面团,腊肠等披萨原料),以免加盟店采用劣质原料,原料生产之后运送到各家加盟店,而且对于不同区域纽约,芝加哥等地的原料也不同。 OK, ...
    接着简单工厂模式,来个续集,工厂方法模式。 在上一集中,披萨店卖的很火,你赚的是盆满钵满,后面要加入加盟店(比如:纽约,芝加哥等),每一家加盟店制造的披萨又不一样,有芝加哥奶酪披萨(ChicagoStyleCheesePizza),芝加哥素披萨(ChicagoStyleVeggiePizza),纽约奶酪披萨(NYStyleCheesePizza),纽约素披萨(NYStyleVeggiePizza),此时怎么办? 什么模式都不用的披萨店代码:     /** * 独立披萨店 */ public class DependentPizzaStore { pu ...
         今天讲一下,简单工厂模式。          当我们看到“new”的时候,就会想到“具体”,一般我们的程序都要求面相接口编程:父类引用指向子类对象,而对象的创建这块一般就是会发生变化的部分,看看下面的例子: 以一个披萨店(PizzaStore)为例,需要制造出奶酪披萨(CheesePizza),香肠披萨(PepperoniPizza),披萨模板完成后,就是披萨筹备,烘焙,切,装盒,完工。     /** * 披萨 */ abstract public class Pizza { /** * 披萨名 */ String name; ...
最近写了个监控系统,需要从各个数据库中获取数据,为了可配行,各个数据库的信息(数据库类型,用户名,密码等)都存放在我们自己的数据库中, 暂时想到的方法就是直接用JDBC代码访问数据库,取数据,然后将数据库连接进行池化。 唉,以前都是J2EE开发,用spring配置使用,这次直接使用JDBC还不太习惯了,OK,不废话了 JDBC步骤: 1.加载数据驱动     Class.forName("com.mysql.jdbc.Driver");     2. 得到数据库连接     DriverManager.getConnection(url, us ...
装饰器模式定义:动态地将责任附加到对象上,若要扩展功能,装饰器提供了比继承更有弹性的替代方案 上例子,咖啡店现有几种咖啡,超优深焙(DarkRoast),无咖啡因咖啡(Decaf),浓咖啡(Espresso),有几种调料,牛奶(Milk),摩卡(Mocha),豆浆(Soy) 咖啡可以加任意调料,变化的可能有:咖啡种类,调料种类,调料价格 基于设计原则:类应该对扩展开放,对修改关闭,所以这些变化最好可以是动态去改变,这时候装饰器也就派上了用场 现上代码,再将原理: /** * 饮料,店内所有提供的饮料都必须继承此类 */ public abstract cl ...
        最近学习了下设计模式,整理下笔记,以后复习,也跟大家多交流交流,呵呵。。。         观察者模式定义:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新         改变的对象一般称之为主题,而所有依赖者称之为观察者,只要主题状态一有变化,观察者就会被通知。         实现观察者模式的方法:一般以主题Subject和观察者Observer接口的类设计此模式 OK,不多说,上实例,以一个天气预报为例:一个WeatherData对象(角色:Subject,记录气象站数据,并更新布告板),N个布告板(角色:Observer, ...
Global site tag (gtag.js) - Google Analytics