一.通过注解(annotation)装配Bean 通过之前的学习,我们已经知道如何使用XML装配Bean,但是更多的时候已经不再推荐使用XML的方式去装配Bean,更多的时候会考虑注解(annotation)的方式去装配Bean.使用注解的方式可以减少XML的配置,注解功能更为强大,它既能实现XML的功能,也能提供自动装配的功能,采用了自动装配后,程序员所需要做的决断就减少了,更加有利于对程序的开发,这就是"约定优于配置"的开发原则. 在Spring中,它提供了两种方式来让Spring…
一. 装配Bean概述  关于如何将自己开发的Bean配置到Spring IoC容器中,大部分场景下,我们都会使用ApplicationContext的具体实现类,因为对应的Spring IoC容器功能强大. 而在Spring中提供3中方法进行配置. 在xml中显示配置. 在Java接口和类中实现配置. 隐式Bean的发现机制和自动装配原则. 在现实工作中,这3中方式都会被用到,并且在学习和工作总常常混合使用,所以需要知道3中方式的优先级,也就是应该怎么选择使用哪种方式去把Bean发布到Spri…
一.SSM+Redis的结构图 在Java互联网中,以Spring+SpringMVC+MyBatis(SSM)作为主流框架,SSM+Redis的结构图如下: 二.下面介绍它们各自承担的功能: 1.Spring IOC承担了一个资源管理.整合.即插即拔的功能. 2.Spring AOP可以提供切面,特别是数据库事务管理的功能. 3.SpringMVC 用于把模型.视图和控制器分层,组合成一个有灵活的系统. 4.MyBatis 提供了一个数据库访问的持久层,通过MyBatis-Spring项目,它…
一.关键字说明: oop:面向对象 aop:面向切面 ioc:控制反转 orm:对象关系映射 pojo:数据库表映射的java实体类 二.常识说明:1.hibernate和mybatis都属于持久层.orm框架,都可以通过xml或者注解来提供映射规则.2.hibernate是完全面向POJO,mybatis不是.hibernate基本不再需要编写SQL,就可以通过映射关系来操作数据库,是一种全表映射的体现.而mybatis则需要使用者提供SQL去运行.3.myBatis只需要一个映射xml文件.…
一.XML和注解组合使用 前几篇的测试案例都是在Java类中配置,现在换一种使用方式,在XML中配置,使Spring IoC容器在启动之后自动去扫描配置的包路径,扫描加载指定路径下的properties文件. 关键配置信息如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xml…
一.依赖注入的三种方式      在实际环境中实现IoC容器的方式主要分为两大类,一类是依赖查找,依赖查找是通过资源定位,把对应的资源查找回来.另一类则是依赖注入.一般而言,依赖注入可分为3中方式: 构造器注入 setter注入 接口注入 构造器注入和setter注入是主要的注入方式,而接口注入是从别的地方注入的方式,比如,在Web工程中,配置的数据源往往是通过服务器(比如tomcat) 去配置的,这个时候可以用JNDI(Java Naming and Directory interface)的…
一.IOC控制反转概念 控制反转(IOC)是一种通过描述(在Java中可以是XML或者是注解)并通过第三方去生产或获取特定对象的方式. 主动创建模式,责任在于开发者,而在被动模式下,责任归于Ioc容器,基于这种被动形式,我们就是对象被反转了. 二.Spring IoC容器的初始化和依赖注入 Bean的定义何处是花再Spring Ioc容器中是两大步骤,它是先定义,然后初始化和依赖注入. Bean的定义分为3步: (1)Resource定位,这步是Spring IoC容器根据开发者的配置,进行资源…
一.XML和Annotation装配Bean如何合理使用 引入第三方资源包中类的时候,建议使用XML配置,而使用自己编写的Java类的时候,推荐使用Annotation注解配置Bean. 二.关于注解@ImportResource的小例子 创建一个POJO类:UserBean.java package com.xfwl.spring.annotation.xmlImport; import org.springframework.beans.factory.annotation.Value; i…
一.通过XML装配Bean 装配简易值 装配集合 命名空间装配(暂不测试) 二.测试例子 创建一个用户类:UserBean.java package com.xfwl.spring.assem; /** * Pojo实体类 * @author Jason * */ public class UserBean { private String uname; private String upwd; public UserBean(){} public UserBean(String uname,S…
一.责任链模式.观察者模式 1.责任链模式:当一个对象在一条链上被多个拦截器处理(烂机器也可以选择不拦截处理它)时,我们把这样的设计模式称为责任链模式,它用于一个对象在多个角色中传递的场景.   2.观察者模式:观察者模式又称为发布电话与模式,是对象的行为模式.观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监视着被观察者的状态,当被观察者的状态变化时,会通知观察者,并让其自动更新自己. 二.责任链模式(例子) 创建测试接口:HelloWorld.java package com.xf…
一.拦截器的理解 学习拦截器之前需要对动态代理和反射有一定的基础. 官方说法:         java里的拦截器是动态拦截Action调用的对象.它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可以提取action中可重用部分的方式.在AOP(Aspect-Oriented Programming)中拦截器用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作. 简单来说,就是拦截器可以提供一个…
一.动态代理的理解 动态代理的意义在于生成一个占位(又称代理对象),来代理真实对象,从而控制真实对象的访问.        先来谈谈什么是代理模式.        假设这样一个场景:你的公司是一家软件公司,你是一位软件工程师.客户带着需求去找公司显示不会直接和你谈,而是找商务谈,此时客户认为商务代表公司. 显然客户是通过商务区访问软件工程师的,那么商务(代理对象)的意义在于什么呢? 商务可以进行谈判,比如项目启动前的商务谈判,软件的价格,交付,进度的时间节点等,或者项目完成后的商务追讨应收账务等…
Java EE互联网轻量级框架整合开发 第1部分 入门和技术基础 第1章 认识SSM框架和Redis 2 1.1 Spring框架 2 1.2 MyBatis简介 6 1.3 Spring MVC简介 11 1.4 最流行的NoSQL——Redis 12 1.5 SSM+Redis结构框图及概述 13 第2章 Java设计模式 15 2.1 Java反射技术 15 2.2 动态代理模式和责任链模式 19 2.3 观察者(Observer)模式 30 2.4 工厂模式和抽象工厂模式 35 2.5…
简言:本来这是昨天看的,但是因为想好好写一下[级联]这个东西,所以就看完之后今天来整理一下. 级联 1. 什么是级联 级联是一个数据库实体的概念.比如教师就需要存在学生与之对应,这样就有教师学生表,一个教师可能有多个学生,这就是一对多的级联:除此之外还有一对一的级联,比如身份证和公民是一对一的关系:再例如用户与角色的关系,一个用户有多个角色,一个角色也可能有多个用户,这就是多对多的级联.(在MyBatis中多对多的级联可以用两个一对多的级联进行代替) 级联不是必须的,级联的好处是获取关联数据十分…
简言:今天进行第八天的记录(只是写了八天).有的时候看的多,有的时候看的少,看的少的时候就攒几天一起写了.而今天这个插件我昨天写了一下午,下班没写完就回去了,今天把尾收了,再加上一个过程图方便下面原理的理解.我这个特别不爱看书的人都看半个多月了,希望我一个月真能养成个戒不掉的习惯~ 第八章 插件 在前一篇介绍了四个对象,是SqlSession执行过程中通过他们来完成数据库操作和结果返回的.(Executor.StatementHandler.ParameterHandler.ResultSetH…
简言:工欲其事必先利其器,作为一个大四的准毕业生,在实习期准备抽空补一下基础.SSM框架作为互联网的主流框架,在会使用的基础上还要了解其原理,我觉得会对未来的职场会有帮助的.我特意的买了一本<Java EE互联网轻量级框架整合开发>来借助书本上的理论来帮助理解.在这里我就来记录一下我每天学习到或者复习到的比较重要的知识点吧. 第一部分 入门和技术基础 第一章 认识SSM框架和Redis 1.1 Spring框架 书上介绍,Spring是Java应用最广的框架.它的成功来源于理论,而不是技术本身…
<Windows内核安全与驱动开发>阅读笔记 -- 索引目录 一.内核上机指导 二.内核编程环境及其特殊性 2.1 内核编程的环境 2.2 数据类型 2.3 重要的数据结构 2.4 函数调用 2.5 Windows的驱动开发模型 2.6 WDK编程中的特殊点 三.字符串与链表 3.1 字符串操作 3.2 内存与链表 3.3 自旋锁 四.文件.注册表.线程 4.1 文件操作 4.2 注册表操作 4.3 时间与定时器 4.4 线程与事件 五.应用与内核通信 5.1 内核方面的编程 5.2 应用方面…
回忆了 Spring.SpringMVC.MyBatis 框架整合,完善一个小demo,包括基本的增删改查功能. 开发环境 IDEA MySQL 5.7 Tomcat 9 Maven 3.2.5 需要熟练掌握MySQL数据库(建表和增删改查语句等,Spring,JavaWeb基础及MyBatis知识,简单的前端知识: 数据库环境 CREATE DATABASE `ssmbuild`; USE `ssmbuild`; CREATE TABLE `books` ( `bookID` INT(10)…
一.创建数据库并设置编码. A) create database oa default character set utf8. 二.MyEclipseproject A) 在Myeclipse里创建webproject,并设置编码为utf8. B) 加入框架环境 1.加入Junit4 library(Myeclipse自带) 2.加入Struts2环境 ①所需Jar包 ②配置文件:拷贝一个struts.xml模版到src文件夹,进行适当改动,在web.xml里配上须要的代码. struts.xm…
1.基本环境搭建 1.新建一Maven项目!ssmbuild , 添加web的支持 2.导入相关的pom依赖! <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sc…
项目结构: (代码里面都有注释) 一.在pom文件中依赖jar包 因为我这里分了模块,所以有父子级的共两个pom文件 父级: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"…
一.整合原理 二.导包(41个) 1.hibernate (1)hibernate/lib/required (2)hibernate/lib/jpa | java persist api java的持久化规范(接口) (3)数据库驱动 2.struts2 (1)struts-blank.war/WEB-INF/lib/* 注意:javassist-3.18.1-GA.jar包与hibernate中的重复(只保留高版本即可) (2)struts整合spring插件包 注意:这个包一旦导入,那么s…
简言: 第九章 Spring Ioc的概念 IoC(Inversion of Control)控制反转:比如想喝橙汁,在没有饮品店的日子,最直观的做法是买果汁机.橙汁.这是你自己“主动”创造的过程,也就是一杯橙汁需要主动创造.然而到了今时今日,由于饮品店的盛行,已经没必要自己去榨橙汁了.饮品店提供给你橙汁,这一过程你没有去“主动”创造,但是也完全达到了你的要求.这就是控制反转. 在Spring中,它会认为一切Java类都是资源,而资源都是Bean,容纳这些Bean的是Spring所提供的IoC容…
简言:平安夜,继续慵懒的学习.我真的是不喜欢学习··· 第三章认识MyBatis核心组件 3.1 持久层的概念和MyBatis的特点 持久层:可以将业务数据存储带磁盘,具有长期存储的能力.一般执行持久任务的都是数据库系统. 书中作者认为Mybatis成功的重要3点: 不屏蔽SQL,意味着可以精确的定位SQL语句,并可以对其进行优化和改造,有利于互联网系统性能的提高. 提供强大.灵活的映射机制,方便Java开发者使用. 提供Mapper的接口编程,只要一个接口和一个XML就能创建映射器,进一步简化…
第七章MyBatis的解析和运行原理 SqlSessionFactory是MyBatis的核心类之一,其最重要的功能就是提供创建MyBatis的核心借口SqlSession,所以要先创建SqlSessionFactory,为此要提供配置文件和相关的参数.MyBatis是一个复杂的系统,它采用了Builder模式去创建SqlSessionFactory,在实际上可以通过SqlSessionFactoryBuilder去创建,分为两步: SqlSessionFactory = new SqlSess…
简言:这个地方我就草草过了,NBA圣诞大战,偷偷看比赛,真香~ 第五章映射器 5.2select元素 自动映射和驼峰映射:MyBatis提供了自动映射功能,在默认的情况下自动映射功能是开启的. 在setting元素中, autoMappingBehavior控制自动映射,取值范围: NONE:不进行自动映射. PARTIAL:默认值,只对没有嵌套结果集进行自动映射. FULL:对所有的结果集进行自动映射,包括嵌套结果集. mapUnderscoreToCamelCase控制驼峰映射,驼峰映射是按…
简言:昨天第四章没看完,今天接着记吧. 4.5 typeHandler 类型转换器 顾名思义呀,就是将数据库中数据类型与Java数据类型做相互转换的处理器.在typeHandler中,分为jdbcType和javaType,其中jdbcType用于定义数据库类型,而javaType用于定义Java类型,那么typeHandler的作用是承担二者之间的转换. 它也分称系统定义的,也有自定义的.系统的没事可记的,看看就懂了,自定义typeHandler必须实现接口typerHandler或者继承Ba…
简言:第一天没咋看,因为看的时候已经是下午了.今天上午也因为工作上的事没咋看,本来想按照天去写的,但是内容会太散吧.我决定把整块的内容放在一起写了.天数啥的,就那样把. 还有,我只是言简意赅的去总结一下知识点,而不是全面的介绍. 第二章 Java设计模式 2.1Java反射技术 反射机制之前我特意去看了一次,觉得当时看的还是挺细的,基本没发现看不懂的地方,这里也就不写了.我之前也写过一个随笔,写的不是很全,但是有些东西不需要都写在纸上. 2.2动态代理模式和责任链模式 动态代理模式的意义在于生成…
定义 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 具体来说,就是保证有些对象有且只有一个,比如线程池.全局缓存.浏览器中的window 对象等.在js中单例模式用途很广,比如登录悬浮窗,我希望无论我点击多少次这个浮窗都只会被创建一次,这里就可以用单例模式. 1.实现单例模式 思路:用一个变量来标志当前是否已经为某个类创建过对象,如果是,则在下一次获取该类的实例时,直接返回之前创建的对象:如果否就创建出那个对象. var Singleton = function( name…
1.软件的任务是为了解决某一特定的问题,而软件开发者的任务却需要解决一系列问题.2.温伯格说,我们不能要求每个人都聪明异常,能够解决所有难题:但是我们必须持续思考,因为只有如此,我们才能明白自己在做什么.的确,只有明白我们在做什么,我们或许才知道应该怎么做吧.3.“写作本书的主要目的只有一个——启动一个新的研究领域:作为一种人类行为的程序开发,或者简而言之,程序开发心理学.”或许这是我阅读本书的一个大的前提吧,了解它的目的.作为人类行为的程序开发阅读程序4.管理人员清楚:在程序开发过程中,人也是…