自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 资源 (7)
  • 收藏
  • 关注

原创 获取单例

如果缓存中不存在已经加载的单例bean就需要从头开始bean的加载过程了,而spring中使用getSingleton的重载方法实现bean的加载过程。public Object getSingleton(String beanName, ObjectFactory<?> singletonFactory) { Assert.notNull(beanName, "'beanName...

2018-04-27 16:51:22 405 1

原创 从bean的实例中获取对象

在getBean方法中,getObjectForBeanInstance是个高频率使用的方法,无论是从缓存中获得bean还是根据不同的scope策略加载bean。总之,我们得到bean的实例后要做的第一步就是调用这个方法来检测一下正确性,其实就是用于检测当前bean是否是FactoryBean类型的bean,如果是,那么需要调用该bean对应的FactoryBean实例中的getObject()作...

2018-04-27 16:09:28 775

原创 系统常量

define(),定义常量。defined(),检查常量是否被定义。<?php define('NAME','pan'); echo defined('NAME');?>常用系统常量:__FILE____LINE____DIR____FUNCTION__PHP_VERSIONPHP_OS...

2018-04-26 19:58:11 532

原创 数据类型转换

intval(),把一个变量转换为整型变量。floatval(),转换为浮点类型。strval(),转换为字符串类型。boolval(),转化为Boolean类型。<?php $str = '21212kk'; echo intval($str);?>判断类型的函数:is_array()is_string()is_bool()is_float()is_object()is_int...

2018-04-26 18:48:19 98

原创 php数据类型

数据类型String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。PHP 字符串一个字符串是一串字符的序列,就像 "Hello world!"。你可以将任何文本放在单引号和双引号中。PHP 整型整数是一个没有小数的数字。整数规则:整数必须至少有一个数字 (0-9)整数不能包含逗号或空格整数...

2018-04-26 17:47:42 117

原创 单引号和双引号的区别

(1)单引号不能解析变量,双引号可以解析变量(2)双引号执行转义字符,单引号不转义\n,\t,\r(3)它执行转义\\,\'(4)能使用单引号就是用单引号,因为单引号效率比双引号高(5)使用.号来连接变量和字符串(6)双引号里面插入单引号,单引号里面插入变量,变量会被解析(7)如果双引号里面插入变量的时候,在后面加入空格或者,号,或者使用{}将变量名括起来<?php $name = "张三...

2018-04-26 17:10:50 1828

原创 php变量

php变量规则:变量以 $ 符号开始,后面跟着变量的名称变量名必须以字母或者下划线字符开始变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )变量名不能包含空格变量名是区分大小写的($y 和 $Y 是两个不同的变量)PHP 是一门弱类型语言在上面的实例中,我们注意到,不必向 PHP 声明该变量的数据类型。PHP 会根据变量的值,自动把变量转换为正确的数据类型。在强类型的编程语言中,我们...

2018-04-26 16:30:22 167

原创 PHP文件格式

php文件以.php结尾可以短标签风格,通过php.ini修改配置,short_open_tag=On,修改完成后重启服务。每句代码以;分隔。标准的php格式文件:<?phpecho 11;echo 22;?>使用短标签风格后,php可去掉<?echo 11;echo 22;?>关键字:echo  输出...

2018-04-26 16:13:13 3753

原创 缓存中获取单例bean

单例在spring的同一个容器内只会被创建一次,后续再获取bean直接从单例缓存中获取,当然这里也只是尝试加载,首先尝试从缓存中加载,然后再次尝试从singletonFactories中加载。因为在创建单例的时候会存在依赖注入的情况,而在创建依赖的时候为了避免循环依赖,spring创建bean的原则是不等bean创建完成就会将创建bean的ObjectFactory提早曝光加入到缓存中,一旦下一个...

2018-04-26 15:45:38 161

原创 FactoryBean的使用

一般情况下,spring通过反射机制利用bean的class属性指定实现类来实例化bean。FactoryBean接口对于spring框架来说占有重要的地位,spring本身就提供了70多个FactoryBean的实现。他们隐藏了实例化一些复杂bean的细节,给上层应用带来了便利。在该接口中还定义了以下3个方法:T getObject():返回由FactoryBean创建的bean实例,如果isS...

2018-04-26 14:23:27 145

原创 bean的加载

bean加载的功能实现远比bean的解析要复杂得多。User user = (User) bf.getBean("user");研究AbstractBeanFactory的实现:public Object getBean(String name) throws BeansException { return doGetBean(name, null, null, false); }prote...

2018-04-26 14:06:22 378

原创 PHP简介

PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言。PHP 脚本在服务器上执行。PHP 文件可包含文本、HTML、JavaScript代码和 PHP 代码。PHP 代码在服务器上执行,结果以纯 HTML 形式返回给浏览器。PHP 文件的默认文件扩展名是 ".php"。PHP 可在不同的平台上运行(Windows、Linux、Un...

2018-04-25 17:07:55 248

原创 自定义标签的解析

探究一下自定义标签的解析过程public BeanDefinition parseCustomElement(Element ele) { return parseCustomElement(ele, null); }public BeanDefinition parseCustomElement(Element ele, BeanDefinition containingBd) { S...

2018-04-25 16:20:40 420

原创 import标签的解析

<import resource="a.xml"/> <import resource="b.xml"/>applicationContext.xml文件中使用import的方式导入有模块配置文件,以后若有新模块的加入,那就可以简单修改这个文件了。protected void importBeanDefinitionResource(Element ele) { ...

2018-04-25 15:02:28 927

原创 alias标签的解析

protected void processAliasRegistration(Element ele) { String name = ele.getAttribute(NAME_ATTRIBUTE); String alias = ele.getAttribute(ALIAS_ATTRIBUTE); boolean valid = true; if (!StringUtils....

2018-04-25 14:52:29 552

原创 注册解析的BeanDefinition

对于配置文件,解析也解析完了,装饰也装饰完了,对于得到的beanDefinition已经可以满足后续的使用要求了,唯一还剩下的工作就是注册了,也就是BeanDefinitionReaderUtils.registerBeanDefinition(bdHolder, getReaderContext().getRegistry())代码的解析了。public static void register...

2018-04-25 14:27:35 326

原创 解析默认标签中的自定义标签元素

protected void processBeanDefinition(Element ele, BeanDefinitionParserDelegate delegate) { BeanDefinitionHolder bdHolder = delegate.parseBeanDefinitionElement(ele); if (bdHolder != null) { bdHo...

2018-04-24 11:07:39 254

原创 解析子元素property

parsePropertyElement函数完成了对property属性的提取。public void parsePropertyElements(Element beanEle, BeanDefinition bd) { NodeList nl = beanEle.getChildNodes(); for (int i = 0; i < nl.getLength(); i++) {...

2018-04-24 09:19:15 349

原创 解析子元素constructor-arg

对构造函数的解析是非常常用的。 <bean id="user" class="com.pan.entity.User" > <constructor-arg index="0" value="1"></constructor-arg> <constructor-arg index="1" va

2018-04-23 16:39:24 2271 2

原创 解析子元素replaced-method

方法替换:可以在运行时用新的方法替换现有的方法。replaced-method不但可以动态地替换返回实体bean,而且还能动态地更改原有方法的逻辑。源码分析:public void parseReplacedMethodSubElements(Element beanEle, MethodOverrides overrides) { NodeList nl = beanEle.getChild...

2018-04-23 15:06:36 236

原创 解析子元素lookup-method

子元素lookup-method似乎不是很常用,但是在某些时候它的确是非常有用的属性,通常我们称它为获取器注入。引用《spring in action》中的一句话:获取器注入是一种特殊的方法注入,它是把一个方法声明为返回某种类型的bean,但实际要返回的bean是在配置文件里面配置的,此方法可用在设计有些可插拔的功能上,解除程序依赖。(1)首先创建一个父类package com.pan.entit...

2018-04-23 14:51:29 270

原创 解析子元素meta

在开始解析元数据的分析前,先回顾下元数据meta属性的使用。 <bean id="user" class="com.pan.entity.User" > <meta key="testStr" value="aaaaaa"/> </bean>这段代码并不会体现在User的属性中,而是一个额外的声明,当需要使用里面的信息时可以通过B

2018-04-23 13:51:06 407

原创 解析各种属性

当创建了bean信息的承载实例后,便可以进行bean信息的各种属性解析了。parseBeanDedinitionAttributes方法是对element所有元素属性进行解析。public AbstractBeanDefinition parseBeanDefinitionAttributes(Element ele, String beanName, BeanDefinition cont...

2018-04-23 11:21:41 225

原创 创建用于属性承载的BeanDefinition

BeanDefinition是一个接口,在spring中存在三种实现:RootBeanDefinition、ChildBeanDefinition以及GenericBeanDefinition。三种实现均继承了AbstractBeanDefinition,其中beanDefinition是配置文件<bean>元素标签在容器中的内部表示形式。<bean>元素标签拥有class...

2018-04-23 11:04:45 198

原创 解析BeanDefinition

首先从元素解析及信息提取开始,进入BeanDefinitionDelegate类的parseBeanDefinitionElement方法。public BeanDefinitionHolder parseBeanDefinitionElement(Element ele) { return parseBeanDefinitionElement(ele, null); }public Bea...

2018-04-23 10:45:02 306

原创 bean标签的解析及注册

在4种标签的解析中,对bean标签的解析最为复杂也最为重要。进入函数processBeanDefinition(ele,delegate)。protected void processBeanDefinition(Element ele, BeanDefinitionParserDelegate delegate) { BeanDefinitionHolder bdHolder = deleg...

2018-04-23 10:01:56 119

原创 软件开发词汇——D

delegate        代表

2018-04-23 09:33:24 123

原创 默认标签的解析

默认标签的解析是在parseDefaultElement函数中进行的,分别对4种不同标签(import、alias、bean、beans)做了不同的处理。private void parseDefaultElement(Element ele, BeanDefinitionParserDelegate delegate) { if (delegate.nodeNameEquals(ele, I...

2018-04-23 09:21:55 157

原创 解析及注册BeanDefinitions

当程序已经拥有XML文档文件的Document的实例对象时,就会被引入下面这个方法。public int registerBeanDefinitions(Document doc, Resource resource) throws BeanDefinitionStoreException { BeanDefinitionDocumentReader documentReader = crea...

2018-04-20 16:44:41 248

原创 获取Document

经过了验证模式准备的步骤就可以进行Document加载了。public Document loadDocument(InputSource inputSource, EntityResolver entityResolver, ErrorHandler errorHandler, int validationMode, boolean namespaceAware) throws Excep...

2018-04-20 15:43:12 274

原创 获取XMlL的验证模式

XML验证模式有2种:DTD(Document Type Definition)和XSD(XML Schemas Definition)。验证模式的读取:protected int getValidationModeForResource(Resource resource) { int validationModeToUse = getValidationMode(); if (vali...

2018-04-20 15:12:05 335

原创 加载bean

this.reader.loadBeanDefinitions(resource),这句代码是整个资源加载的切入点。(1)封装资源文件。当进入XmlBeanDefinitionReader后首先对参数Resource使用EncodedResource类进行封装。(2)获取输入流。从Resource中获取对应的InputStream并构造InputSource。(3)通过构造的InputSource...

2018-04-20 14:34:00 128

原创 配置文件的封装

BeanFactory bf = new XmlBeanFactory(new ClassPathResource("beanTest.xml"));首先调用ClasspathResource的构造函数来构造Resource资源文件的实例对象,这样后续的资源处理就可以用Resource提供的各种服务来操作了,当有了Resource后就可以进行XmlBeanFactory的初始化了。在java中,将...

2018-04-20 11:02:08 411

原创 spring整合jpa

1.applicationContext.xml配置<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:conte...

2018-04-19 14:38:07 130

原创 jpql和query接口

•JPQL语言,即 Java Persistence Query Language 的简称。JPQL是一种和SQL非常类似的中间性和对象化查询语言,它最终会被编译成针对不同底层数据库的SQL查询,从而屏蔽不同数据库的差异。•JPQL语言的语句可以是select 语句、update语句或delete语句,它们都通过 Query接口封装执行•Query接口封装了执行数据库查询的相关方法。调用Entit...

2018-04-19 10:52:32 792

原创 jpa二级缓存

•<shared-cache-mode> 节点:若 JPA实现支持二级缓存,该节点可以配置在当前的持久化单元中是否启用二级缓存,可配置如下值:–ALL:所有的实体类都被缓存–NONE:所有的实体类都不被缓存.–ENABLE_SELECTIVE:标识@Cacheable(true)注解的实体类将被缓存–DISABLE_SELECTIVE:缓存除标识@Cacheable(false)以外的...

2018-04-19 10:34:40 293

原创 JPA相关接口/类

Persistence•Persistence  类是用于获取EntityManagerFactory实例。该类包含一个名为createEntityManagerFactory的静态方法 。•createEntityManagerFactory方法有如下两个重载版本。–带有一个参数的方法以JPA配置文件persistence.xml中的持久化单元名为参数–带有两个参数的方法:前一个参数含义相同,后...

2018-04-18 17:08:09 766

原创 jpa基本注解

@Entity 标注用于实体类声明语句之前,指出该Java类为实体类,将映射到指定的数据库表。如声明一个实体类Customer,它将映射到数据库中的customer表上。@Table•当实体类与其映射的数据库表名不同名时需要使用@Table 标注说明,该标注与 @Entity标注并列使用,置于实体类声明语句之前,可写于单独语句行,也可与声明语句同行。•@Table标注的常用选项是name,用于指明...

2018-04-18 16:04:43 150

原创 jpa--helloworld

使用eclipse新建jpa工程。修改persistence.xml配置<?xml version="1.0" encoding="UTF-8"?><persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSche

2018-04-18 15:06:40 130

原创 JPA概述

JDBC的规范JPA(JavaPersistence API):用于对象持久化的API。JavaEE5.0 平台标准的 ORM 规范,使得应用程序以统一的方式访问持久层。JPA和Hibernate的关系•JPA 是hibernate的一个抽象(就像JDBC和JDBC驱动的关系):–JPA 是规范:JPA本质上就是一种  ORM 规范,不是ORM框架—— 因为 JPA 并未提供ORM 实现,它只是制...

2018-04-18 10:03:48 328

commonWeb.rar

使用maven构建的jpa项目,该项目只是一个基础模板,仅进行了简单的配置,用作demo使用

2018-08-23

sshDemo-new

使用spring+springmvc+hibernate的方式整合的sshDemo,主要用于学习整合框架,新工程的创建模板。与旧版sshDemo相比,修订了dispatchServlet的配置,增加了springmvc默认静态资源配置,更好的配置系统首页

2018-08-23

jpaSpring整合demo

jpa整合spring的demo,使用hibernate作为jpa的实现orm框架。

2018-04-19

RedisCacheDemo

在SSH框架中使用Redis作为hibernate的二级缓存的demo,仅用作参考

2018-04-04

MemcacheDemo

在ssh框架中引入memcache作为hibernate的二级缓存的demo

2018-04-04

hibernateRedis缓存所需的jar包

Redis作为hibernate的二级缓存策略,提供所需的jar包,亲自测试过可用。包含了hibernate-redis-2.3.2.jar、redisson-2.5.1.jar等

2018-03-26

SSHdemo项目

这是一个最简单的spring+springmvc+hibernate4的demo,是学习其他技术的基础,不要再搭一个环境,可以在这个基础上稍微修改配置参数即可。

2018-03-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除