bean

设计模式-模板模式 JAVA实现

走远了吗. 提交于 2020-04-04 15:32:31
模板模式很容易理解,套个模板,然后内容自由发挥。大家都有求职写简历的时候。会从网上下一些简历模板。一般分为基本信息,个人简介,项目经历,工作经历,培训,证书等。这个就是模板。大家基本上就是在这个模板上填入个人的一些信息。 JAVA对模板模式的实现基本也是一样。先定义一个抽象类,一般在这里会两种方法。 一种是以final修饰的方法,用来明确定义这个抽象类所要完成的基本流程等一些的。这里要写成final,就是不允许其实现类对它的基本流程模板形式进行修改。 另一种是以abstract修饰的方法,用来明确实现类要完成哪些具体的工作(当然在实现时也可能不完成),而具体工作要怎么干并不进行干涉。 合在一起就是流程必须按模板的来,任务大家各自花样去实现 以下以仓库拣货出库的操作业务来具体描述一个模板模式的基本实现。 仓库的拣货出库操作一般要以拿到拣货单开始发起整个流程。包括 1,按拣货任务进行拣货 2,拣货完成后复核拣货列表(也可能不复核) 3,出库 那么就先定义一个抽象的模板类来规定好当前的流程与要完成的任务 import bean.PickDoc; import bean.PickList; import bean.PickTask; public abstract class StockOutTemplate { //按顺序完成拣货到出库的操作 public final void

spring aop

拈花ヽ惹草 提交于 2020-04-04 11:11:26
本文引用自 http://www.cnblogs.com/ityouknow/p/5329550.html 什么是AOP AOP(Aspect-OrientedProgramming,面向方面编程),它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为“Aspect”,即方面。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。 AOP使用场景 AOP用来封装横切关注点,具体可以在下面的场景中使用: Authentication 权限 Caching 缓存 Context passing 内容传递 Error handling 错误处理 Lazy loading 懒加载 Debugging  调试 logging, tracing, profiling and monitoring 记录跟踪 优化 校准 Performance optimization 性能优化 Persistence  持久化 Resource pooling 资源池 Synchronization 同步 Transactions 事务 Spring AOP底层技术 Spring提供了两种方式来生成代理对象: JDKProxy和Cglib

SpringBoot_02 Spring的Java配置方式

微笑、不失礼 提交于 2020-04-04 10:57:55
1. Spring的Java配置方式 Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置。 1.1. @Configuration 和 @Bean Spring的Java配置方式是通过 @Configuration 和 @Bean 这两个注解实现的: 1、@Configuration 作用于类上,相当于一个xml配置文件; 2、@Bean 作用于方法上,相当于xml配置中的<bean>; 1.2. 示例 该示例演示了通过Java配置的方式进行配置Spring,并且实现了Spring IOC功能。 1.2.1. 创建工程以及导入依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.itcast.springboot</groupId> <artifactId>itcast-springboot</artifactId

Spring IOC-基于注解配置的容器

旧巷老猫 提交于 2020-04-04 09:32:25
Spring 中提供了基于注解来配置 bean 的容器,即 AnnotationConfigApplicationContext 1. 开始 先看看在Spring家族中, AnnotationConfigApplicationContext 在一个什么样的地位,看看继承图 可以看到 Spring 提供了基于 Xml 配置的容器之外,还提供了基于注解和 Groovy 的容器,今天我们来看看基于注解配置的容器 2. 方法窥探 看看 AnnotationConfigApplicationContext 中提供了哪些方法 3. 从构造方法开始 我们从构造方法开始,分析基于注解的容器,是如何获取 BeanDefinition 并注册 beanDefinitionMap 中的 public AnnotationConfigApplicationContext(String... basePackages) { this(); scan(basePackages); refresh(); } 接下来一步一步分析下去 this() 调用了本类中的一个无参构造函数 public AnnotationConfigApplicationContext() { //注解bean读取器 this.reader = new AnnotatedBeanDefinitionReader(this); /

kafka原理和实践(五)spring-kafka配置详解

∥☆過路亽.° 提交于 2020-04-03 23:05:43
系列目录 kafka原理和实践(一)原理:10分钟入门 kafka原理和实践(二)spring-kafka简单实践 kafka原理和实践(三)spring-kafka生产者源码 kafka原理和实践(四)spring-kafka消费者源码 kafka原理和实践(五)spring-kafka配置详解 kafka原理和实践(六)总结升华 =========正文分割线==================== 作为一个MQ做基本的功能自然就是消息的生产和消费,本章以XML配置的方式实现消息的生产和消费。 一、生产者 1.1.配置 spring-kafka 提供了org . springframework . kafka . core .KafkaTemplate xml配置如下, producerProperties 中的具体配置暂时不用在意,后面有一章专门讲xml配置 : 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema

kafka原理和实践(五)spring-kafka配置详解

拈花ヽ惹草 提交于 2020-04-03 23:04:52
系列目录 kafka原理和实践(一)原理:10分钟入门 kafka原理和实践(二)spring-kafka简单实践 kafka原理和实践(三)spring-kafka生产者源码 kafka原理和实践(四)spring-kafka消费者源码 kafka原理和实践(五)spring-kafka配置详解 kafka原理和实践(六)总结升华 ==============正文分割线===================== 一、kafkaConsumer消费者模型 如上图所示,spring-kafka消费者模型主要流程: 1.容器启动,轮询执行消费。 2.kafkaConsumer拉取消息流程: 1)Fetcher请求获取器获取请求并存储在unset中 2)ConsumerNetworkClient网络客户端执行poll(),调用NetWlrikClient的send()方法从unset中获取ClientRequest请求转成RequestSend最终塞进Selector的KafkaChannel通道中,Seletcor.send()从kafka集群拉取待消费数据ConsumerRecords 3. 消费者监听器MessageListener.onMessage()执行用户自定义的实际消费业务逻辑。 一、kafkaConsumer构造 1 @SuppressWarnings(

今天在搭建spring+reids框架时遇到No qualifying bean of type [org.springframework.data.redis.core.RedisTemplate]

爱⌒轻易说出口 提交于 2020-04-03 22:13:13
今天在测试RedisTemplate时,用spring无法注入RedisTemplate,junit测试报错。 Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.data.redis.core.RedisTemplate] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1373) at org.springframework.beans.factory

JPA与EJB3的关系

一曲冷凌霜 提交于 2020-04-03 09:16:45
转:http://blog.csdn.net/zhaoqianjava/article/details/6924672 JPA 是基于 Java 持久化的解决方案,主要是为了解决 ORM 框架的差异,它的出现在某种程度上能够解决目前 ORM 框架之间不能够兼容的问题,对开发人员来说,能够更好的在 JPA 规范下进行系统开发。 JPA 全称为 Java Persistence API , Java 持久化 API 是 Sun 公司在 Java EE 5 规范中提出的 Java 持久化接口。 JPA 吸取了目前 Java 持久化技术的优点,旨在规范、简化 Java 对象的持久化工作。 如图 1.3 说明了 JPA 在系统架构中的作用,使用 JPA 持久化对象,而不是依赖于某一个 ORM 框架。 JPA的优势 事实上, JPA 并不是一项技术,而是一种标准,因为 JPA 只是一套接口,本身不能完成任何事情。 JPA 只是规范了 Java 持久化的官方标准。 JPA 有以下几个优点。 可持久化 Java 对象。 JPA 能够直接持久化复杂的 Java 对象,并能够使用 JPQL 语言进行复杂的查询。 JPQL 是 JPA 专用的查询语言,是类似于 SQL 的面向对象的查询语言。 使用简单。 JPA 使用注释( Annotation )定义 Java 对象与关系数据库之间的映射,而传统的

解决Bean property ** is not writable or has an invalid setter method

一笑奈何 提交于 2020-04-03 06:52:25
struts2+spring真让人纠结…… 遇到了Bean property ** is not writable or has an invalid setter method这样的错误 正好找到个类似的解答 用SSH2框架,为某Action注入Bo时出现NotWritablePropertyException异常.当时是用同事已写好的名字cMsgbo.但启动tomcat时总抛出NotWritablePropertyException异常.详细异常信息如下: Error creating bean with name '/count' defined in ServletContext resource [/WEB-INF/classes/kingtoonApplicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'cMsgbo' of bean class [com.kingtoon.count.struts.action.CountAction]: Bean property 'cMsgbo' is not writable or has

Redis分布式集群搭建

此生再无相见时 提交于 2020-04-03 05:33:21
Redis 集群架构图 上图蓝色为 redis 集群的节点。 节点之间通过 ping 命令来测试连接是否正常,节点之间没有主区分,连接到任何一个节点进行操作时,都可能会转发到其他节点。 1、Redis 的容错机制 节点之间会定时的互相发送 ping 命令,测试节点的健康状态,当节点接受到 ping 命令后,会返回一个 pong 字符串。 投票机制:如果一个节点 A 给节点 B 发送 ping 没有得到 pong 返回,会通知其他节点再次给 B 发送 ping ,如果集群中有超过一半的节点收不 B 节点的 pong 。那么就认为 B 节点挂了。一般会为每个节点提供一个备份节点,如果挂掉会切换到备份节点。 2、Redis 集群存储原理 Redis 对于每个存放的 key 会进行 hash 操作,生成一个 [ 0-16384] 的 hash 值(先进行 crc 算法再对 16384 取余)。 集群的情况下,就是把 [0-16384] 的区间进行拆分,放到不同的 redis 中。 3、Redis 的持久化 Snapshotting :定时的将 Redis 内存中的数据保存到硬盘中 AOF :将所有的 command 操作保存到 aof 中, AOP 的同步频率很高,数据即使丢失,粒度也很小,但会在性能上造成影响。 二、Redis 集群准备工作 Redis 安装 源码下载 下载地址