文档章节

Java Spring重要模式

夏至未至_super
 夏至未至_super
发布于 2016/02/01 16:03
字数 249
阅读 4
收藏 0

单列模式:

public class A{
    privateA(){}
    privatestatic A a = new A();
    publicstatic A getA(){
      return a;
    }
    
    privateA(){};
    privatestatic A a;
    publicstatic A getA(){
      if(a == null){
         synchronized(A.class){
             if(a == null){
               a = new A();
            }
         }
      }
      return a;
    }
}

工厂模式:

public class Factory {
    privatestatic Properties pro = new Properties();
    privatestatic Map map = new HashMap();
    static{
       try {
          InputStreamin = Factory.class.getResourceAsStream("/info.txt");
         pro.load(in);
      }  catch (IOException e) {
         e.printStackTrace();
       }
    }
   
    publicstatic Object getBean(String key){
      if(map.containsKey(key)){//判断map中是否存在键
          returnmap.get(key);
       }
      
       synchronized(map) {
         if(!map.containsKey(key)){
             StringclassPath = pro.getProperty(key);
             try {
                Class c =Class.forName(classPath);
                Object obj =c.newInstance();
               
                map.put(key,obj);
                returnobj;
             } catch(Exception e) {
               e.printStackTrace();
             }
          }
          else{
             returnmap.get(key);
          }
       }
       return null;
    }
}

代理模式:

public class DaoProxy implements InvocationHandler{
    privateObject target;
    privatestatic SessionFactory factory;
    static{
      Configuration cfg = new Configuration().configure();
      ServiceRegistry r = newServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
       factory =cfg.buildSessionFactory(r);
    }
   
    publicDaoProxy(Object target){
       this.target= target;
    }
    
    publicObject getProxy(){
       returnProxy.newProxyInstance(
            target.getClass().getClassLoader(),
            target.getClass().getInterfaces(), this);
    }

   @Override
   publicObject invoke(Object proxy, Method method, Object[] args)
          throwsThrowable {
       Sessionsession = factory.openSession();
       session.beginTransaction();
      
       ObjectreturnObj = null;
       try{
         //得到目标对象的setSession方法对象
         Method m =target.getClass().getMethod("setSession", Session.class);
         //执行setSession(),完成session属性的初始化
         m.invoke(target, session);
         
         //执行目标对象的目标方法,得到执行方法后的返回值
         returnObj =method.invoke(target, args);
         session.getTransaction().commit();
      }catch(Exception e){
         e.printStackTrace();
         session.getTransaction().rollback();
      }finally{
         session.close();
      }
      
      return returnObj;
    }

}


© 著作权归作者所有

共有 人打赏支持
夏至未至_super
粉丝 0
博文 6
码字总数 1975
作品 0
成都
Spring MVC 使用 JNDI 配置的DataSource

稍微看了下,Spring 中JNDI 的使用,弄了个小例子。有很多不完备的地方,以后慢慢看,再改吧。 <一> 技术使用 Spring MVC JDBC Template Maven JNDI <二> 一些配置 Maven POM 配置 spring-c...

平江夜弹
2015/06/29
0
0
对JDBC的支持 之 7.1 概述

概述 JDBC回顾 传统应用程序开发中,进行JDBC编程是相当痛苦的,如下所示: //cn.javass.spring.chapter7. TraditionalJdbcTest @Test public void test() throws Exception { Connection co...

heroShane
2014/02/27
0
0
Spring Boot 2.0 新特性解读

点击上方“程序员小灰”,选择“置顶公众号” 有趣有内涵的文章第一时间送达! 本文转载自公众号 InfoQ 作者|翟永超编辑|郭蕾Spring Boot 2.0 来啦,有哪些新特性?升级吗?写在前面 北京时...

bjweimengshu
04/13
0
0
【Spring reference】Spring基于java的配置

1、简述 spring reference写到: Java-based configuration: Starting with Spring 3.0, many features provided by the Spring JavaConfig project became part of the core Spring Framewo......

666B
2014/07/01
0
0
Spring的JNDI数据源连接池配置

在使用 Tomcat服务器 + SpringFramework 进行JavaEE项目的开发部署的时候可以在Tomcat的配置文件中进行JDBC数据源的配置,具体步骤如下(这里省略了工程的建立步骤): 1) 添加如下代码到t...

琪迹
2014/03/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

新工作与老项目

新的工作不知不觉的干了一个多月了。怎么说呢,跟想象中的差别不少,本来想的能进来跟大公司的同事能有很多交流,能在团队中跟大牛学习更快。结果公司的这个项目上只有两个程序员,项目是十年...

zypy333
15分钟前
0
0
mysql 在windows的安装

mysql 在windows的安装。 mysql64位的server的下载地址是: https://dev.mysql.com/downloads/mysql/ 使用的是5.7版本。 下载安装包,解压至D:\mysql\mysql-5.7.23-winx64\ 在D:\mysql\mysq...

lxzh504
27分钟前
1
0
云技术、大数据(hadoop)入门常见问题回答

当我们学习一门新技术的时候,我们总是产生各种各样的问题,这些问题整理出来,包括该 1.如何学习hadoop? 2.hadoop常见问题? 3.还有hbase、hive安装使用等? 你知道搭建hadoop平台需要些什...

董黎明
28分钟前
1
0
小程序自定义底部tab

场景 1.tabBar是在内页而非首页,这时就不得不自定义一个tabBar了 2.自定义风格 3.子页数量超过5个,得到更多了tab 4.改变点击tab默认事件,比如出登录界面,或者弹出上拉子菜单等 步骤 1.照...

萤火的萤火
33分钟前
1
0
shell炫技

1.为脚本添加“--help” #!/bin/shif [ ${#@} -ne 0 ] && [ "${@#"--help"}" = "" ]; then printf -- '...help...\n'; exit 0;fi; 2.输出字体添加颜色 https://misc.flogisoft.com......

HJCui
33分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部