SSM-1第一章 认识SSM框架和Redis

第一章 认识SSM框架和Redis

1.1 Spring框架

Sring理念

Ioc  控制反转  IOC是一个容器,在Spring中,它会认为一切Java资源都是JavaBean,容器的目标是管理Bean和它们之间的关系。

Aop 面向切面编程

第二章 Java设计模式

2.1 java 反射技术

Java反射技术 可以配置:类的全限定名、方法和参数,完成对象的初始化,甚至是反射某些方法。

在Java中反射是通过包java.lang.reflect.*实现的。

2.1.1通过反射构建对象

public class ReflectTmp{

public ReflectTmp(){};

public  ReflectTmp(Srting str){};

public  void sayHello(Srting str){};

}

/* 通过反射获取对象*/

public ReflectTmp getInstance()

{

try {

object =(ReflectTmp)Class.forName("com.xxx.ReflectTmp").getConstructor(String.class).newInstance("123");

} catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException

| NoSuchMethodException | SecurityException | ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return object;

}

2.1.2 反射方法

public static Object reflectMethod()

{

Object returnobj = null;

ReflectTmpobj1 = newReflectTmp("456");

try {

Method method =ReflectTmp.class.getMethod("sayHello", String.class);

returnobj = method.invoke(obj1, "hello World !");

} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return returnobj;

}

2.2 动态代理和责任链模式

动态代理的意义在于生成一个占位(又称为代理对象),来代理真实对象,从而控制真实对象的访问。

代理分为两个步骤:

  1. 代理对象与真实对象建立代理关系
  2. 实现代理对象的代理逻辑方法

2.2.1 JDK动态代理

JDK动态代理是由java.lang.reflect.*包提供的方式,它必须借助一个借接口才能产生代理对象,所以先定义接口。

其次,在JDK动态代理中,要实现代理逻辑类必须去实现java.lang.reflect.InvocationHandler接口,它定义了一个invoke方法,并提供接口数组用于下挂代理对象。

第一步 建立代理对象与真实对象的关系

Procx.newProxyInstance(target.getClass().getClassLoader(),target.getClass().getInterfaces(), this);

newProxyInstance包含三个参数

第一个:类加载器

第二个:把生成的代理对象挂在哪些接口下

第三个:定义实现方法逻辑的代理类。

第二步 实现代理的逻辑方法

public Object invoke(Object proxy, Method method, Object[]args) throws Throwable{}

invoke方法可以实现代理逻辑

三个参数依次为:

proxy 代理对象

method 当前调度的方法

args 调度方法的参数

2.2.2 CGLIB动态代理

CGFLIB动态代理优势在于不用定义接口,只要一个非抽象类就能实现动态代理。

第一步 生成CGLIB代理对象

使用CGLIB的加强者Enhancer,通过设置超类的方式(setSuperclass),然后通过setCallback方法设置哪个类为它的代理类。被设为代理类的对象必须实现接口MethodInterceptor的方法intercept。

第二步实现代理逻辑

public Object intercept(Object proxy, Method method, Object[]args, MethodProxy methodProxy)throws Throwable{

/* CGLIB反射调用真实对象方法*/

Object obj = methodProxy.invokeSuper(proxy, args);

return obj;

}

2.2.3 拦截器

定义拦截器接口

public interface Interceptor{

public boolean before(Object proxy, Object target, Method method, Object [] args);

public boolean around(Object proxy, Object target, Method method, Object [] args);

public boolean after(Object proxy, Object target, Method method, Object [] args);

}

3个方法的参数依次为:proxy代理对象,target真实对象,method方法,args运行方法的参数。

before方法返回boolean值,它在真实对象前调度。当返回true,则反射真实对象的方法,返回false,则调用around方法。

在反射真实对象方法或者around方法执行后,执行after方法。

拦截器对象在代理对象创建时同时创建,拦截器对象的方法 在代理对象的逻辑处理方法中调用。

2.2.4 责任链模式

当一个对象在一条链上被多个拦截器处理时,我们把这样的设计模式成为责任链模式,它用于一个对象在多个角色中传递的场景。可以使用层层代理的的方式来实现。

public interface HelloWorld{

public void sayHello(String str);

}

public interface HelloWorldImpl implements HelloWorld{

public void sayHello(String str)

{

/* xxx*/

}

}

public static void main(String []args)

{

HelloWorld proxy1 = (HelloWorld)InterceptorJDKProxy(new HelloWorldImpl(),“com.xxx.Interceptor1”);

HelloWorld proxy2 = (HelloWorld)InterceptorJDKProxy(proxy1,“com.xxx.Interceptor2");

HelloWorld proxy3 = (HelloWorld)InterceptorJDKProxy(proxy2,“com.xxx.Interceptor3");

proxy3.sayHello("hello");

}

结果:

【拦截器3的】的before方法执行

【拦截器2的】的before方法执行

【拦截器1的】的before方法执行

hello

【拦截器1的】的after方法执行

【拦截器2的】的after方法执行

【拦截器3的】的after方法执行

before方法按照从最后一个拦截器到第一个拦截器的加载顺序执行,after按照从第一个拦截器到最后一个拦截器的加载顺序执行。

2.3 观察者模式

观察者模式又称为发布订阅模式,是对象的行为模式。观察者模式定义了一种一对多的依赖关系,让多个观察者同时监视着被观察者,当观察者发生变化的时候,通知所有观察者,并让其自动更新自己。

第一步 定义被观察者

首先继承java.util.Observable类

观察者的方法:

/* 添加观察者*/

addObserver(Observer observer);

/* 告知观察者 被观察者发生了改变,如果没有,则无法触发其行为*/

setChanged();

/* 告知观察者,让他们发生相应的动作,并将参数传递给观察者*/

notifyObservers(object obj);

第二步 定义观察者

观察者要实现 java.util.Observer接口的update()方法

2.4 工厂模式和抽象工厂模式

2.5 创建者模式

创建者模式属于对象的创建模式。可以将一个产品的属性与产品的生成过程分开,从而使一个建造过程中生成具有不同属性的产品对象。

原文地址:https://www.cnblogs.com/xiaodeyao/p/9715215.html

时间: 2024-08-02 20:21:35

SSM-1第一章 认识SSM框架和Redis的相关文章

第一章 : javaScript框架分类及主要功能

从内部架构和理念划分,目前JavaScript框架可以划分为5类. 第一种是以命名空间为导向的类库或框架,如果创建一个数组用new Array(),生成一个对象用new Object(),完全的java风格,因此,我们以某一对象为跟,不断为它添加对象和二级对象属性来组织代码,如金字塔般垒起来,早期代表YUI,EXT(so,不是有活力的公司都还用它们) 第二种是以类工厂为导向的框架.著名的有Prototype,还有mootools.Base2.Ten,它们基本上除了最基本的命名空间,其它模块都是一

第一章 深入.NET框架

一. .NET的过人之处 1..NET框架提高了软件的可重复行 ,可扩展性,可维护行和灵活性. 2.对web应用的强大支撑. 3.对Web Service(Web服务)的支持. 4.实现SOA,支持云计算. 5.支持构建.NET程序外衣. 二..NET框架体系结构 .NET框架是一个多语言组件开发和执行环境,它提供了一个跨语言的统一编辑环境..NET框架的目的是便于开发人员更容易地建立Web应用程序和Web服务, 使得Internet上的各应用程序之间,可以使用Web服务进行沟通.从层次结构来看

OSGi原理与最佳实践:第一章 OSGi框架简介(2)

OSGi原理与最佳实践:第一章 OSGi框架简介(2) 由  ValRay 发布 已被浏览4884次 共有3条评论 已被3个人收藏 2013-08-16 21:23 顶(0) 踩(0) osgi原理与最佳实践 1.1.4 开发传统类型的应用 1.1.4.1 B/S 我们首先来看一下,如何基于 OSGi 来开发 B/S 结构的应用.B/S 结构应用程序的开发,可有两个选择:一个是在 OSGi 的框架中嵌入 Http 服务器,另外一个是在 Servlet 容器中嵌入 OSGi 框架.下面分别介绍这两

OSGi原理与最佳实践:第一章 OSGi框架简介(5)Spring-DM

OSGi原理与最佳实践:第一章 OSGi框架简介(5)Spring-DM 由  ValRay 发布 已被浏览8409次 共有3条评论 已被2个人收藏 2013-08-16 21:29 顶(1) 踩(0) osgi原理与最佳实践 1.3 Spring-DM 1.3.1 简介 Spring-DM 指的是 Spring Dynamic Modules.Spring-DM 的主要目的是能够方便地将 Spring 框架 和OSGi框架结合在一起,使得使用Spring的应用程序可以方便简单地部署在OSGi环

实体框架6.0(Recipes)翻译系列 1 -----第一章 开始使用实体框架1

微软的Entity Framework 受到越来越多人的关注和使用,Entity Framework7.0版本也即将发行.虽然已经开源,可遗憾的是,国内没有关于它的书籍,更不用说好书了,可能是因为EF版本更新太快,没人愿意去花时间翻译国外关于EF的书籍.使用Entity Framework开发已经有3年多了,但用得很肤浅,最近想深入学习,只好找来英文书<Entity Framework 6 Recipes>慢慢啃.首先需要说明的是,我英文不好,只是为了学习EF.把学习的过程写成博客,一是督促自

《Entity Framework 6 Recipes》翻译系列 (1) -----第一章 开始使用实体框架之历史和框架简述 (转)

微软的Entity Framework 受到越来越多人的关注和使用,Entity Framework7.0版本也即将发行.虽然已经开源,可遗憾的是,国内没有关于它的书籍,更不用说好书了,可能是因为EF版本更新太快,没人愿意去花时间翻译国外关于EF的书籍.使用Entity Framework开发已经有3年多了,但用得很肤浅,最近想深入学习,只好找来英文书<Entity Framework 6 Recipes>第二版,慢慢啃.首先需要说明的是,我英文不好,只是为了学习EF.把学习的过程写成博客,一

《ASP.NET Web API 2框架揭秘》第一章 概述【样章】

<ASP.NET Web API 2框架揭秘>(详情请见<新作<ASP.NET Web API 2框架揭秘>正式出版>)以实例演示的方式介绍了很多与ASP.NET Web API相关的最佳实践,同时还提供了一系列实用性的扩展.本书详细讲解了ASP.NET Web API从接收请求到响应回复的整个流程,包括路由.Http Controller的激活.Action方法的选择与执行.参数的绑定与验证.过滤器的执行和安全等相关的机制.除此之外,本书在很多章节还从设计的角度对AS

框架体系对小软件作坊的 重要性 第一章

从软件行业兴起,到如今年代虽然不长,但是随着语言的发展,从需求-->编写-->成型,已经不在是难事. 甚至一台电脑,一套编程软件,就可以玩转整个软件流程. 入行许久,对于软件企业来说,人员更新换代是司空见惯的事.没有什么能从根本上解决这个问题.只能通过尽可能的满足员工的需求,来减少人员的流失. 对于软件作坊,甚至是小型的企业,由于各种配套管理措施的不健全,人员流失的问题显现的尤为明显,名副其实的重灾区.人才的流通趋势呈倒金字塔. 长久以来,对于求职者来说,找工作看的就是福利待遇.有了一定的能力

《Entity Framework 6 Recipes》翻译系列 2 -----第一章 开始使用实体框架2

Visual Studio 我们在Windows平台上开发应用程序使用的工具主要是Visual Studio.这个集成开发环境已经演化了很多年,从一个简单的C++编辑器和编译器到一个高度集成.支持软件开发整个生命周期的多语言环境. Visual Studio以及它发布的工具和服务提供了:设计.开发.单元测试.调试.软件配置和管理.构建管理和持续集成等等.很少有开发人员因为还没有使用它而担心(注:作者应该是表达不用担心VS的能力),Visual Studio是一个完整的工具集.Visual Stu