JavaWeb 通过配置切换底层存储源
来源:互联网 发布:自学虚幻4还是unity3d 编辑:程序博客网 时间:2024/06/02 06:59
本文为学习佟刚JavaWeb MVC模式笔记
A 深入理解面向接口编程:在类中调用接口的方法,而不必关心具体的实现。这将有利于代码的解耦。使程序有更好的可移植性和可扩展性
B动态修改Customer的存储方式:通过修改类路径下的switch.properties文件的方式来实现
1 .CustomerServlet中不能在通过privateCustomerDAOcustomerDAO= new CustomerDAOXMLImpl();的方式来写死实现类
2 . 需要通过一个类的一个方法来获取具体的实现类的对象
C 当前 WEB 应用才启动的时候,InitServlet 被创建,并由 Servlet 容器调用其 init() 方法:
1.读取类路径下的switch.properties 文件
2.获取 switch.properties 的 type 属性值
3.赋给了 CustomerDAOFactory 的 type 属性值
InitServlet.java如下:<span style="font-size:14px;">package com.ali.mvc.servlet;import java.io.IOException;import java.io.InputStream;import java.util.Properties;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import com.ali.mvc.dao.factory.CustomerFactory;public class InitServlet extends HttpServlet {/** * */private static final long serialVersionUID = 1L;public void init() throws ServletException {super.init();// 设置默认值CustomerFactory.getInstance().setType("jdbc");// 读取类路径下的switch.properties文件InputStream in = getServletContext().getResourceAsStream("/WEB-INF/classes/switch.properties");Properties properties = new Properties();try {properties.load(in);// 将获得的type付给CustomerFactory的typeString type = properties.getProperty("type");if (type != null) {CustomerFactory.getInstance().setType(type);} else {CustomerFactory.getInstance().setType("jdbc");}} catch (IOException e) {e.printStackTrace();}}}</span>
并需要在web.xml中进行配置:
<span style="font-size:14px;"><servlet><servlet-name>InitServlet</servlet-name><servlet-class>com.ali.mvc.servlet.InitServlet</servlet-class><span style="color:#ff6666;"><load-on-startup>1</load-on-startup></span></servlet></span>
创建 CustomerServlet 时,为 customerDAO 属性赋值是通过CustomerDAOFactory 的 getCustomerDAO() 方法完成的。此时的 type 已经在 InitServlet 中被赋值了。
<span style="font-size:14px;">public class CustomerServlet extends HttpServlet {// private CustomerDao customerDao = new CustomerDaoXmlImp();// private CustomerDao customerDao = new CustomerDaoJdbcImp();<span style="color:#ff0000;">private CustomerDao customerDao = CustomerFactory.getInstance().getCustomerDao();</span>}</span>
CustomerFactory.java如下:
<span style="font-size:14px;">package com.ali.mvc.dao.factory;import java.util.HashMap;import java.util.Map;import com.ali.mvc.dao.CustomerDao;import com.ali.mvc.dao.impl.CustomerDaoJdbcImp;import com.ali.mvc.dao.impl.CustomerDaoXmlImp;public class CustomerFactory {private String type = null;private Map<String, CustomerDao> daos = new HashMap<String, CustomerDao>();<span style="color:#ff6600;">private CustomerFactory() {daos.put("jdbc", new CustomerDaoJdbcImp());daos.put("xml", new CustomerDaoXmlImp());}public CustomerDao getCustomerDao() {return daos.get(type);}</span>private static CustomerFactory instance = new CustomerFactory();public static CustomerFactory getInstance() {return instance;}public void setType(String type) {this.type = type;}}</span>
0 0
- JavaWeb 通过配置切换底层存储源
- JavaWeb-Maven Profile切换数据库连接配置
- JavaWeb-Maven Profile 切换注册中心连接配置
- Spring+Mybatis多数据源配置(一)——MySQL与Oracle通过配置切换
- Javaweb切换中英文功能
- 数据的底层存储
- Neo4j底层存储分析
- ceph底层存储逻辑
- Docker底层存储结构
- JVM底层存储示意图
- HashMap底层存储原理
- javaweb配置
- redis主从配置及通过keepalived实现redis自动切换
- Docker存储配置切换loop-lvm到direct-lvm
- JavaWeb开发切换皮肤技术
- 公共配置底层代码
- 公共配置底层代码
- Postgresql 底层存储 页面布局
- c++设计一个不能被继承的类,为什么必须是虚继承?原因分析
- Spring NamedParameterjdbc详解和如何获得主键自增值
- SOA概述
- 虚拟机克隆后eth0网卡变成eth1网卡并且IP地址消失问题解决
- 重载和重写
- JavaWeb 通过配置切换底层存储源
- FTP服务器配置(cmd中ftp命令)
- 二哥学算法之单向链表
- 自学安卓的一些烦恼
- 2014ACM/ICPC亚洲区北京站现场赛(HDU 5111,5115,5119,5120,5122)
- 第13周项目5(1)统计字母‘A’的出现次数
- 函数,结构体,折半查找
- UVA 10066 10192
- 组合数学中那些有趣的球和盒子的问题(超强闷骚版,再也不怕球球了)