- 浏览: 41350 次
- 性别:
- 来自: 南京
最新评论
-
bluesky4485:
这种方式只能在调用services之前,在controller ...
多库数据源深入分析(Mybatis+ Spring + JTA)(一) -
AKka:
JTA需要一个UserTransaction,请问楼主怎么配置 ...
多库数据源深入分析(Mybatis+ Spring + JTA)(二) -
AKka:
testxa,testxa1这两个的配置贴一下呗,楼主!
多库数据源深入分析(Mybatis+ Spring + JTA)(二) -
caohaihua:
亲,多数据源切换好像不行哦,AbstractRoutingD ...
多库数据源深入分析(Mybatis+ Spring + JTA)(一) -
ff861:
亲,想问下这个问题您最终是怎么解决的呢?我现在也遇到这个问题啊 ...
多库数据源深入分析(Mybatis+ Spring + JTA)(一)
文章列表
当我们需要用到工厂模式的时候,也可以交给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, ...