Spring入门第十五课】的更多相关文章

泛型依赖注入 看代码: package logan.spring.study.generic.di; public class BaseRepository<T> { } package logan.spring.study.generic.di; import org.springframework.beans.factory.annotation.Autowired; public class BaseService<T> { @Autowired protected Base…
后置通知 看代码: package logan.study.aop.impl; public interface ArithmeticCalculator { int add(int i, int j); int sub(int i, int j); int mul(int i, int j); int div(int i, int j); } package logan.study.aop.impl; import org.springframework.stereotype.Componen…
Spring AOP AspectJ:Java社区里最完整最流行的AOP框架 在Spring2.0以上的版本中,可以使用基于AspectJ注解或者基于XML配置的AOP 看代码: package logan.study.aop.impl; public interface ArithmeticCalculator { int add(int i, int j); int sub(int i, int j); int mul(int i, int j); int div(int i, int j)…
接上一次讲课 先看代码: package logan.spring.study.annotation.repository; public interface UserRepository { void save(); } package logan.spring.study.annotation.repository; import org.springframework.stereotype.Repository; @Repository("userRepository") pub…
基于注解的方式配置bean(基于注解配置Bean,基于注解来装配Bean的属性) 在classpath中扫描组件 组件扫描(component scanning):Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 特定组件包括: -@Component:基本注解,表示了一个受Spring管理的组件 -@Respository:标识持久层组件 -@Service:标识服务层组(业务层)件 -@Controller:标识表现层组件 对于扫描到的组件,Spring有默认…
Bean的配置方法 通过工厂方法(静态工厂方法&实例工厂方法),FactoryBean 通过调用静态工厂方法创建Bean 调用静态工厂方法创建Bean是将对象创建的过程封装到静态方法中,当客户端需要对象时,只需要简单的调用静态方法,而不用关心创建对象的细节. 要声明通过静态方法创建的Bean,需要在Bean的class属性里指定拥有该工厂的方法类,同时在factory-method属性里指定工厂方法的名称,最后,使用<constructor-arg>元素为该方法传递方法参数. 看代码…
Spring表达式语言:SpEL Spring表达式语言(简称SpEL)是一个支持运行时查询和操作对象图的强大的表达式语言. 语法类似于EL:SpEL使用#{...}作为定界符,所有在大括号中的字符都将被认为是SpEL SpEL为bean的属性进行动态复制提供了便利. 通过SpEL可以实现: -通过bean的id对bean进行引用 -调用方法以及引用对象中的属性 -计算表达式的值 -正则表达式的匹配 下面看如何使用 package logan.spring.study.spel; public…
一.功能简述 1.笔记本管理(增删改) 2.笔记管理 3.共享笔记查询功能 4.回收站 效果预览: 二.库表设计 1.设计理念 将云笔记信息分别存储在redis和hbase中. redis(缓存):存储每个用户的笔记本信息 hbase(持久层):存储用户的笔记本信息.笔记本下的笔记列表.笔记具体信息. 2.设计概要 redis: hbase: // 分别是笔记本和笔记 3.hbase建表语句 create ‘nb’,’nbi’ create ‘n’,’ni’,’ci’ // 回顾建表语句,hba…
使用具名参数 直接看代码: db.properties jdbc.user=root jdbc.password=logan123 jdbc.driverClass=com.mysql.jdbc.Driver jdbc.jdbcUrl=jdbc:mysql://localhost:3306/selective-courses-system jdbc.initPoolSize=5 jdbc.maxPoolSize=10 applicationContext.xml <?xml version=&quo…
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第四十五课:顶点缓存 顶点缓存 你想更快地绘制么?直接操作显卡吧,这可是当前的图形技术,不要犹豫,我带你入门.接下来,你自己向前走吧.   速度是3D程序中最重要的指标,你必须限制绘制的多边形的个数,或者提高显卡绘制多边形的效率.显…
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第三十五课:播放AVI 在OpenGL中播放AVI: 在OpenGL中如何播放AVI呢?利用Windows的API把每一帧作为纹理绑定到OpenGL中,虽然很慢,但它的效果不错.你可以试试.   首先我得说我非常喜欢这一章节.Jon…
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第二十五课:变形 变形和从文件中加载3D物体: 在这一课中,你将学会如何从文件加载3D模型,并且平滑的从一个模型变换为另一个模型.   欢迎来到这激动人心的一课,在这一课里,我们将介绍模型的变形.需要注意的是各个模型必须要有相同的顶…
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第十五课:纹理图形字 图形字体的纹理映射: 这一课,我们将在上一课的基础上创建带有纹理的字体,它真的很简单. 在发布了前两篇关于位图字体和轮廓字体的教程以后,我收到很多邮件,很多读者都想知道如何才能给字体赋予纹理贴图.你可以使用自动…
spring boot / cloud (十五) 分布式调度中心进阶 在<spring boot / cloud (十) 使用quartz搭建调度中心>这篇文章中介绍了如何在spring boot项目中集成quartz. 今天这篇文章则会进一步跟大家讨论一下设计和搭建分布式调度中心所需要关注的事情. 下面先看一下,总体的逻辑架构图: 分布式调度-逻辑架构示意 架构设计 总体思路是,将调度和执行两个概念分离开来,形成调度中心和执行节点两个模块: 调度中心 是一个公共的平台,负责所有任务的调度,以…
序 又是快两个月没写随笔了,长时间不总结项目,不锻炼文笔,一开篇,多少都会有些生疏,不知道如何开篇,如何写下去.有点江郎才尽,黔驴技穷的感觉. 写随笔,通常三步走,第一步,搭建框架,先把你要写的内容框架搭建出来:第二步,添砖,在框架基础上,填写各部分内容:第三步,加瓦,再写好的内容上进行修改,润湿.然后文章的质量,就因人而异了.但不管怎么说,得写,得练,得经受的起各路能人志士的批评指教,至于改不改,那也是写文章的人的事了(通常我是认真接受批评指教的). 你看,写道这里,我又不知道再序些啥了,索性…
序 又是快两个月没写随笔了,长时间不总结项目,不锻炼文笔,一开篇,多少都会有些生疏,不知道如何开篇,如何写下去.有点江郎才尽,黔驴技穷的感觉. 写随笔,通常三步走,第一步,搭建框架,先把你要写的内容框架搭建出来:第二步,添砖,在框架基础上,填写各部分内容:第三步,加瓦,再写好的内容上进行修改,润湿.然后文章的质量,就因人而异了.但不管怎么说,得写,得练,得经受的起各路能人志士的批评指教,至于改不改,那也是写文章的人的事了(通常我是认真接受批评指教的). 你看,写道这里,我又不知道再序些啥了,索性…
基于XML的方式配置事务 直接看代码: package logan.study.spring.tx.xml; public interface BookShopDao { //根据书号获取书的单价 public int findBookPriceIsbn(String isbn); //更新书的库存,使书号对应的库存-1 public void updateBookStock(String isbn); public void updateUserAccount(String username,…
集合属性 在Spring中可以通过一组内置的xml标签(如:<list>,<set>,<map>)来配置集合属性. 配置java.util.List类型的属性,需要制定<list>标签,在标签里面包含一些元素,这些标签可以通过<value>指定简单的常量值,通过<ref>指定对其他Bean的引用,通过<bean>指定内置Bean定义,通过<null/>指定空值.甚至可以内嵌其他集合. 数组的定义和List一样,…
XML配置里的Bean自动装配 Spring IOC容器可以自动装配Bean.需要做的仅仅是在<bean>的autowire属性里指定自动装配的模式 ByType(根据类型自动装配):若IOC容器中有多个与目标Bean类型一致的的Bean,在这种情况下,Spring将无法判定哪个Bean最适合该属性,所以不能执行自动装配. byname(根据名称自动装配):必须将目标Bean的名称和属性名设置为完全相同. Constructor(通过构造器自动转配):当Bean中存在多个构造器时,此种自动装配…
注入参数详解:null值和级联属性 可以使用专用的<null/>元素标签为Bean的字符串或其他对象类型的属性注入null值. 和Struts,Hiberante等框架一样,Spring支持级联属性的配置. 可以如下设置null值 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans&qu…
属性注入 属性注入就是通过setter方法注入Bean的属性值或依赖的对象. 属性植入使用<property>元素,使用name属性指定Bean的属性名称,value属性或者<value>子节点指定属性值 属性注入是实际应用中最常用的注入方式. 构造方法注入 通过构造方法注入Bean的属性值或依赖的对象,它保证了Bean实例化以后就可以使用. 构造器注入在<constructor-arg>元素里申明属性,<constructor-arg>中没有name属性…
通过FactoryBean来配置Bean package logan.spring.study.factoryBean; public class Car { private String brand; private int price; public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public int getPrice() { ret…
IOC容器中Bean的生命周期 Spring IOC容器可以管理Bean的生命周期,Spring允许在Bean生命周期的特定点执行定制的任务. Spring IOC容器对Bean的生命周期进行管理的过程: -通过构造器或工厂方法创建Bean实例 -为Bean的属性值和对其他Bean的引用 -调用Bean的初始化方法 -Bean可以使用了 -当容器关闭时,调用Bean的销毁方法 在Bean的声明里设置init-method和destroy-method属性,为Bean指定初始化和销毁方法. 下面看…
看如下代码 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframew…
Bean之间的关系:继承和依赖. 继承Bean配置 Spring允许继承bean的配置,被继承的bean称为父bean,继承这个父bean的Bean称为子Bean. 子Bean从父Bean中继承配置,包括Bean的属性配置. 子Bean也可以覆盖从父Bean继承过来的配置. 父Bean可以作为配置模板,也可以作为Bean实例,若只想把父Bean作为模板,可以设置<bean>的abstract属性为true,这样Spring将不会实例化这个bean.(抽象Bean,抽象Bean不能被实例化,只能…
AOP编程 问题: 代码混乱: 越来越多的非业务需求(日志和验证等)加入后,原有的业务方法急剧膨胀,每个方法在处理核心逻辑的同事还必须兼顾其他多个关注点. 代码分散:以日志需求为例,只是为了满足这个单一需求,就不得不在多个模块(方法)里面多次重复相同的日志代码,如果日志需求发生变化,必须修改所有模块. 先看使用动态代理: package logan.study.aop.helloworld; public interface ArithmeticCalculator { int add(int…
前言 不写随笔的日子仿佛就是什么都没有产出一般--上节说到要学Spring Cloud Bus,这里发现按照官方文档的顺序反而会更好些,因为不必去后边的章节去为当前章节去打基础,所以我们先学习Spring Cloud Stream,还有一个就是本文有很多官方文档的翻译以及<Spring Cloud 微服务实战>书中的内容和DD博客中的内容,可能会有杂糅的地方,望大家见谅. 代码详见:https://github.com/HellxZ/SpringCloudLearn 快速入门 五分钟左右为你展…
一个完整的Ajax请求: var xhr = new (self.XMLHttpRequest || ActiveXObject)("Microsoft.XMLHTTP");   //new XMLHttpRequest()传入参数不影响. xhr.onreadystatechange = function(){    //请求状态改变就会执行这个函数,状态有0,1,2,3,4五个状态. if(this.readyState === 4 && this.status =…
本课主要来讲解jQuery.event.trigger的源码解读. trigger = function(event, data, elem, onlyHandlers){ if(elem && (elem.nodeType === 3 || elem.nodeType ===8)){  //触发的元素节点不能是文本节点和注释节点 return; } var cache, exclusive, i, cur, old, ontype, special, handle, eventPath,…
程序逻辑问题分值:20 来源: 实验吧 难度:中 参与人数:6909人 Get Flag:1993人 答题人数:2070人 解题通过率:96% 绕过 解题链接: http://ctf5.shiyanbar.com/web/5/index.php 原题链接:http://www.shiyanbar.com/ctf/62 [解题报告] 这是我入门Web开始写的第十二道题,这道题我们首先先查看它的源代码,发现它源代码里面有个隐藏的txt文件,我们点击查看一下隐藏的源代码,很显然,这是一道和php有关的…