MVC是什么? 在讲SpringMVC之前我们先来看一下什么是MVC模式~ MVC:MVC是一种设计模式 MVC的原理图: 分析: M-Model 模型(完成业务逻辑:有javaBean构成,service+dao+entity) V-View 视图(做界面的展示:jsp,html……) C-Controller 控制器(接收请求—>调用模型—>根据结果派发页面) Spring MVC是什么?   SpringMVC是一个MVC的开源框架,SpringMVC=Struts2+Spring,SpringMVC就相当于是Struts2加上Spring的整合,但是这里有一个疑惑就是,SpringMVC和Spring是什么样的关系呢?这个在百度百科上有一个很好的解释:意思是说,SpringMVC是Spring的一个后续产品,其实就是Spring在原有基础上,又提供了web应用的MVC模块,可以简单的把SpringMVC理解为是Spring的一个模块(类似AOP,IOC这样的 继续阅读 >>


贺含悦 18/05/07 22:08:20
在软件开发中,散布于应用中多处的功能被称为横切关注点。通常来讲,这些横切关注点从概念上是与应用的业务逻辑相分离的。把这些横切关注点与业务逻辑相分离正是面向切面编程所要解决的问题。 前面我们介绍了如何使用依赖注入管理和配置我们的应用对象。依赖注入有助于应用对象之间的解耦,而AOP可以实现横切关注点与它们所影响的对象之间的解耦。 下面我们就来看Spring是如何实现切面的,先从AOP的基础知识开始~ 一、什么是面向切面编程? 在之前的Java开发中,如果要重用通用功能,最常见的面向对象技术是继承或委托。但是,如果整个应用中都使用相同的基类,继承往往会导致一个脆弱的对象体系,而使用委托可能需要对委托对象进行复杂的调用。 现在,切面提供了取代继承和委托的另一种可选方案,而且在很多场景下更清晰简洁。在使用面向切面编程时,我们仍然在一个地方定义通用功能,但是可以通过声明的方式定义这个功能要以何种方式在何处应用,而无需修改受影响的类。 横切关注点可以被模块化为特殊的类,这些类被称为切面。 定义A 继续阅读 >>


贺含悦 18/05/07 22:08:04
我们通常讨论依赖注入的时候,讲的都是将一个Bean引入到另一个Bean的属性或构造器参数中,它通常指的是将一个对象与另一个对象进行关联。而装配Bean的另一个方面指的是将一个值注入到Bean的属性或构造器中,也就是字面量的注入。 比如,将专辑的名字装配到TaylorSwift Bean的构造器或title属性中: @Bean public CompactDisc taylorSwift() { return new TaylorSwift("titledemo","artistdemo"); } 这实现了我们为BlankDisc Bean设置title和artist的需求,但它在实现的时候是将值硬编码在配置类中的,同理XML也是。但有时候我们可能会希望避免硬编码值,而是想让这些值在运行时再确定。 为了实现,Spring提供了两种在运行时求值的方式: 属性占位符 Spring表达式语言(spEL) 使用属性占位符注入外部的值 处理外部值的最简单方式就是声明属性源并通过 继续阅读 >>


贺含悦 18/05/07 22:07:50
在上一篇博客中我们看到了最为核心的Bean装配技术。但是,Bean装配所涉及的领域并不仅仅局限于那些,Spring还提供了多种技巧,借助它们可以实现更为高级的Bean装配功能。 环境与profile 在开发软件的时候,有一个很大的挑战就是将应用程序从一个环境迁移到另一个环境。在开发阶段中,某些环境相关做法可能并不适合迁移到生产环境中,甚至即便迁移过去也无法工作。数据库配置、加密算法以及与外部系统的集成是跨环境部署时会发生变化的几个典型例子。 有时候在不同的环境中某个Bean也会有所不同,我们必须要有一种方法使其在每种环境下都会选择最合适的配置。 其中一种方式就是在单独的配置类(或XML文件)中配置每个Bean,然后在构建阶段确定要将哪一个配置编译到可部署的应用中。 在JavaConfig中配置Profile Bean 面对不同环境有不同方法生成不同版本的Bean,Spring提供了一种策略,就是在运行时确定创建哪个版本的Bean。这样的结果就是同一个部署单元(可能会是WAR文件)能够 继续阅读 >>


贺含悦 18/05/07 22:07:31
在典型的Spring应用中,我们可能会同时使用自动化和显式配置。就产生了混合配置,即可以在JavaConfig中引入XML配置,也可以在XML配置中引用JavaConfig。 在JavaConfig中引用XML配置 之前我们在JavaConfig配置中写过一个CDPlayerConfig: 2.27:CDPlayerConfig @Configuration public class CDPlayerConfig { @Bean public CompactDisc taylorSwift(){ return new TaylorSwift(); } @Bean public CDPlayer cdPlayer(CompactDisc compactDisc){ return new CDPlayer(compactDisc); } } 在上面地代码中,我们将CompactDisc Bean和CDPla 继续阅读 >>


贺含悦 18/05/07 22:07:10
装配是什么? 创建应用对象之间协作关系的行为通常称为装配(wiring),这也是DI的本质。 我们必须要告诉Spring要创建哪些bean并且如何将其装配在一起。 Spring提供了三种主要的装配机制: 在XML中进行显式配置 在Java中进行显式配置 隐式的bean发现机制和自动装配 Spring的配置风格是可以互相搭配的,但应尽可能地使用自动配置的机制,因其使用起来要方便的多,显式配置越少越好。显式配置越少,代码就越容易维护。而基于Java和XML相比,JavaConfig的安全性比XML要好,并且功能更强大。 所以我们先来看Spring的自动化配置。 自动化装配Bean——便利 Spring从两个角度来实现自动化装配: 组件扫描(component scanning):Spring会自动发现应用上下文中所创建的Bean。 自动装配 (autowiring):Spring自动满足Bean之间的依赖。 组件扫描和自动装配组合在一起就能使我们的显式配置降低到最少。 为了 继续阅读 >>


贺含悦 18/05/07 22:06:34
Object类 Object类是所有类、数组、枚举类的父类,即Java允许把任何类型的对象赋给Object类型的变量。当定义一个类没有使用extends关键字为它显示指定父类,则该类默认继承Object父类。 //常用方法: boolean equals(Object obj) protected void finalize() Class<?>getClass() int hashCode() String toString() Java还提供了一个protected修饰的clone()方法,该方法用于帮助其他对象来实现“自我克隆”,即得到一个当前对象的副本,而且二者完全隔离。 自定义类实现“克隆”步骤如下: 自定义类实现Cloneable接口。 自定义类实现自己的clone()方法。 实现clone()方法时通过super.clone()。 class Address { String detail; public Address(String d 继续阅读 >>


贺含悦 18/04/13 00:39:52
俯瞰Spring风景线——六大模块 现在逐一介绍Spring的模块~ Spring核心容器(Core Spring container) 容器是Spring框架最核心的部分,它管理着Spring应用中bean的创建、配置和管理。在该模块中,包括了Spring bean工厂,它为Spring提供了DI的功能。基于bean工厂,我们还会发现有多种Spring应用上下文的实现。还提供了许多企业服务。 所有的Spring模块都构建于核心容器之上。 面向切面编程(AOP) Spring对面向切面编程提供了丰富的支持。这个模块是Spring应用系统中开发切面的基础,与DI一样,AOP可以帮助应用对象解耦。 数据访问与集成(Data access & integration) Spring的JDBC和DAO模块封装了大量样板代码,这样可以使得数据库代码变得简洁,也可以更专注于我们的业务,还可以避免数据库资源释放失败而引起的问题。 另外,Spring AOP为数据访问提供了事务 继续阅读 >>


贺含悦 18/04/12 23:29:00
Spring是什么啊 O_O 春天?emm…我现在所说的Spring是指一个开源框架 PS!!!从现在开始,一定要很熟悉的知道下面这些英文单词首字母组成的简称,后面不再做解释 EJB:Enterprise JavaBean ——企业级JavaBean JDO:Java Data Object ——Java数据对象 POJO:Plain Old java Object ——简单老式Java对象 DI:Dependency Injection ——依赖注入 AOP:Aspect-Oriented Programming ——面向切面编程 Spring到底是什么?它用来干嘛呢? Spring是为了解决企业级应用开发的复杂性而创建 的,使用Spring可以让简单的JavaBean来实现之前只有EJB和其他企业级Java规范才能完成的事情。相对于EJB来说,Spring提供了更加轻量级和简单的编程模型,它增强了POJO的功能。 但Spring不仅仅局限于服务器端开发,任何Java应用都能在 继续阅读 >>


贺含悦 18/04/12 23:28:40
今天在用Java写一道去年寒假用C语言刷过的一道特别简单的水题的时候,用到了Java类库的Date、Calendar类,不妨写个总结以便下次复习~ 题目是这样的: 给定一个日期,输出这个日期是该年的第几天 Input 输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成 Output 对于每组输入数据,输出一行,表示该日期是该年的第几天 Sample Input 1985/1/20 2006/3/12 Sample Output 20 71 这是当时用C语言写的代码…虽然AC了但是这样写真的很麻烦= = #include<stdio.h> int main() { int year,mon,day,sum; while(scanf("%d/%d/%d",&year,&mon,&day)!=EOF) { sum=0; switch(mon) { case 1: 继续阅读 >>


贺含悦 18/03/17 22:52:54