容器+AOP 实现动态部署(二)
来源:互联网 发布:java中什么是方法重载 编辑:程序博客网 时间:2024/06/16 20:45
上节咱们介绍了整体架构的实现,现在就一步一步的进行实现
首先看咱们的容器,容器的目的是存放对象,之后是提供服务。看一副图
容器中原来存放的是颗粒1,现在放入颗粒2,3,之后在对颗粒3进行删除,这就是我们容器中最基本方式。
容器的基本操作方法
package com.tgb.configra;import java.util.Map;public interface ContainerBeans {/** * 获取容器中指定对象 * * @param id * 对象名称如: getBean("user") * @return */public Object getBean(String id);/** * 容器中放入对象 * * @param k * @param v * @return */public Object put(String k, Object v);/** * 打印容器中所有对象类型 */public void printTypeName();/** * 获取容器中所有对象 返回类型 Map<string(对象类型),Object(对象)> * * @return Map<string(对象类型),Object(对象)> */public Map<String, Object> getAllBean();/** * 获取容器所有bean */public void printAllbeanId();public void remove(String id);/** * 容器中对象的数量 * @return */public int size();}
内部实现中,容器操作的对象是存放在什么地方呢,我们看到实现类中的一个集合map,map存放着我们所有操作对象,借用集合的基本操作,我们封装容器公共方法。
核心代码
public void putAllBeans(List list, Map<String, Object> allBeans){for (int i = 0; i < list.size(); i++) {Element element = (Element) list.get(i);String id = element.getAttributeValue("id");String clazz = element.getAttributeValue("class");Object o = Class.forName(clazz).newInstance();allBeans.put(id, o);}
客户端的测试
public static void main(String[] args) throws Exception {ContainerBeans containerBeans = new ClassPathXmlApplicationContext();// new 为 装配容器过程User user = new User();user.setUarename("hanyankun"); //参数设置containerBeans.printAllbeanId();System.out.println("\n");StudentDao studentrDao = new StudentDaoImpl();containerBeans.put("studentDao", studentrDao);System.out.println("----放入对象-studentDao---");containerBeans.printAllbeanId();System.out.println("\n");System.out.println("-----拿出来的studentDao-执行方法--syaName-");StudentDao studentrDaoBean= (StudentDao)containerBeans.getBean("studentDao");studentrDaoBean.syaName();System.out.println("\n");System.out.println("-----删除对象TeacherDao 和 UserDao--");containerBeans.remove("TeacherDao");containerBeans.remove("UserDao");containerBeans.printAllbeanId();}
容器默认颗粒初始化配置文件
<beans><bean id="UserDao" class="com.tgb.daoImpl.UserDaoImpl" /><bean id="TeacherDao" class="com.tgb.daoImpl.TeacherDaoImpl" /><bean id="userService" class="com.tgb.service.UserService"><property name="userDao" ref="UserDao" /></bean>
测试 容器中默认有三个颗粒,之后在添加一个颗粒,取出该颗粒,执行颗粒中方法,最后在删除容器中的两个颗粒后,分别打印容器中的对象。
打印效果图
容器中含有对象是3个,分别是:
[TeacherDao,UserDao, userService]
----放入对象-studentDao---
容器中含有对象是4个,分别是:
[TeacherDao,UserDao, studentDao, userService]
-----拿出来的studentDao-执行方法--syaName-
----my name ishanyk--
-----删除对象TeacherDao和 UserDao--
容器中含有对象是2个,分别是:
[studentDao,userService]
小结:
有了容器的基本概念后,我们可以将一些颗粒可以随时动态的放入容器,还可以进行优化,通过页面效果,形式可视化的动态增加删除业务颗粒的效果,形成一种热部署的方式。后续继续咱们的容器公共服务。
2 0
- 容器+AOP 实现动态部署(二)
- 容器+AOP 实现动态部署(一)
- 容器+AOP实现动态部署(三)
- 容器+AOP实现动态部署(四)
- Spring AOP实现机制(二)--ProxyFactoryBean---将Spring AOP和Spring IoC容器相结合
- 容器学习(二):动手模拟AOP
- 深入浅出AOP(二)--IOC容器
- Spring 容器AOP的实现原理——动态代理
- Spring 容器AOP的实现原理——动态代理
- Spring 容器AOP的实现原理——动态代理
- 菜鸟学SSH(十四)——Spring容器AOP的实现原理——动态代理
- 自己实现Spring AOP(二)JDK代理实现AOP
- 利用JAVA的动态属性之反射原理实现一个简单AOP容器 - AOP的实现原理分析
- 自己实现IoC,AOP容器
- Spring实现AOP动态代理(1)
- Aspectwerkz动态实现AOP
- 动态AOP实现
- 动态代理实现AOP
- 算法导论 10.2-7 单链表的逆转
- BusyBox 官网 Frequently Asked Questions
- Internal Sorting: List Merge Sort: Sorting by Merging
- ubuntu系统下源的问题
- solr5.0 tomcat安装部署
- 容器+AOP 实现动态部署(二)
- question1-在插入排序中运用二元搜索代替线性查找
- Vijava 学习笔记(指定虚拟机添加虚拟磁盘修订功能版本)
- Tk on Python
- Mac 下解压Android NDK 的 .bin文件
- Welcome to Linux From Scratch!
- 数据结构与算法分析-栈
- 20 款超棒免费的 Bootstrap 管理和前端模板
- 移植busybox-1.14.0