spring自定义注解

spring retry, guava retrying 的整合-sisyphus java 重试

落爺英雄遲暮 提交于 2020-03-16 11:45:53
Sisyphus 支持过程式编程和注解编程的 java 重试框架。 特性 支持 fluent 过程式编程 基于字节码的代理重试 基于注解的重试,允许自定义注解 无缝接入 spring 接口与注解的统一 解决 spring-retry 与 guava-retrying 中的不足之处 设计目的 综合了 spring-retry 和 gauva-retrying 的优势。 调整一些特性,使其更利于实际使用。 采用 Netty 类似的接口思想,保证接口的一致性,和替换的灵活性。 借鉴 Hibernate-Validator 的设计,允许用户自定义注解。 spring-retry 与 guava-retrying 中的不足之处 更新记录 更新记录 开源地址 sisyphus 快速开始 引入 <plugin> <groupId>com.github.houbb</groupId> <artifactId>sisyphus-core</artifactId> <version>0.0.6</version> </plugin> 入门代码 详情参见 [RetryerTest]() public void helloTest() { Retryer.<String>newInstance() .retry(new Callable<String>() { @Override public

Spring面试题

假如想象 提交于 2020-03-16 09:16:59
69道Spring面试题和答案 原文地址 译者:深海(1422207401@qq.com) 校对:方腾飞 目录 Spring 概述 依赖注入 Spring beans Spring注解 Spring数据访问 Spring面向切面编程(AOP) Spring MVC Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。 2. 使用Spring框架的好处是什么? 轻量: Spring 是轻量的,基本的版本大约2MB。 控制反转: Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。 面向切面的编程(AOP): Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。 容器: Spring 包含并管理应用中对象的生命周期和配置。 MVC框架 :Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。 事务管理: Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。 异常处理: Spring 提供方便的API把具体技术相关的异常(比如由JDBC

spring面试题

梦想的初衷 提交于 2020-03-16 08:41:43
1.选择使用Spring框架的原因? 使用Spring: 第一是使用它的IOC功能,在解耦上达到了配置级别。 第二是使用它对数据库访问事务相关的封装。 第三就是各种其他组件与Spring的融合,在Spring中更加方便快捷的继承其他一些组件。 2.Spring 是如何管理事务的? spring的事务声明有两种方式,编程式和声明式。spring主要是通过“声明式事务”的方式对事务进行管理,即在配置文件中进行声明,通过AOP将事务切面切入程序,最大的好处是大大减少了代码量。 3.Spring IoC容器配置Bean的方式? 答: 基于XML文件进行配置。 基于注解进行配置。 基于Java程序进行配置(Spring 3+) 4.Bean 是如何被管理的? 在Spring框架中,一旦把一个bean纳入到Spring IoC容器之中,这个bean的生命周期就会交由容器进行管理,一般担当管理者角色的是BeanFactory或ApplicationContext。认识一下Bean的生命周期活动,对更好的利用它有很大的帮助。 概括来说主要有四个阶段:实例化,初始化,使用,销毁。 5.阐述Spring框架中Bean的生命周期? ApplicationContext容器中,Bean的生命周期流程如上图所示,流程大致如下: 1.首先容器启动后

Spring Data Jpa 详解 (配置篇)

删除回忆录丶 提交于 2020-03-15 02:07:35
前言:    JPA 全称 Java Persistence API ,即Java持久化API,它为Java开发人员提供了一种 对象/关系映射 工具来管理Java应用中的关系数据,结合其他ORM的使用,能达到简化开发流程的目的,使开发者能够专注于实现自己的业务逻辑上。   Spring Jpa 能够 简化创建 JPA 数据访问层和跨存储的持久层功能,用户的持久层Dao接口只需要继承他自己定义好的(仓库)接口, 无需再写实现类 ,就可以实现对象的CRUD操作,还有分页排序等功能。    写本章之前本来想写一个SpringMVC的,后来发现Jpa的配置可以大大简化MVC框架的配置,就先研究研究Spring Data Jpa。 准备工作:   jar包支持(不用说都知道,本章jar包待我会放在115网盘供下载) web.xml配置(监听Spring容器的装载) 本章采用的是阿里连接池(Druid),所以web.xml要有相关的配置 Spring容器的配置(主要为beans和jpa) Jpa的主要配置(实体类管理、数据源、连接池、事务等) 实体类、持久层接口、业务层的创建 测试放在下一章节中(因为采用了SpringJunit单元测试, 点击前往 ) 先来看一下本章节用到的 包结构--如下图 :    实例代码演示: ****************最后我会把本章的项目打包供下载******

20191230 Spring官方文档(Core 1.12)

☆樱花仙子☆ 提交于 2020-03-14 05:28:28
1.12。基于Java的容器配置 1.12.1。基本概念:@Bean和@Configuration @Bean 批注用于指示方法实例化,配置和初始化要由Spring IoC容器管理的新对象。对于那些熟悉Spring的 <beans/> 的XML配置的人来说,@Bean注释的作用与 元素相同。您可以对任何Spring @Component 使用@Bean带注释的方法 。但是,它们最常与 @Configuration bean一起使用。 用@Configuration注释类表示其主要目的是作为Bean定义的来源。此外,@Configuration类允许通过调用同一类中的其他@Bean方法来定义Bean之间的依赖关系。 完整的@Configuration与“精简”@Bean模式? 如果在未使用@Configuration注释的类中声明@Bean方法 ,则将它们称为以“精简”模式进行处理。在一个@Component或甚至一个普通类中声明的Bean方法被认为是“精简”,其包含类的主要目的不同,而@Bean方法在那儿是一种额外的奖励。例如,服务组件可以通过每个适用组件类上的额外的@Bean方法向容器公开管理视图。在这种情况下,@Bean方法是通用的工厂方法机制。 与完整的@Configuration不同,精简@Bean方法无法声明Bean间的依赖关系。取而代之的是

SSM

戏子无情 提交于 2020-03-13 09:12:25
1. 项目环境准备 1.1. 技术选型 整个项目使用的 SSM 框架 SpringMVC , Spring , MyBatis , MySql 数据库, Shiro 安全框架 1.2. 使用 Maven 创建 Web 项目 1.3. 引入 maven 项目 pom 文件依赖的和插件配置 Maven 的 pom 文件集成了整个项目所需要的绝大部分框架依赖,后期其他依赖在实际开发中按需引入集合 <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.zj</groupId> <artifactId>logistics_system</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <properties> <spring.version>4

SSM的基本知识点

六眼飞鱼酱① 提交于 2020-03-13 09:11:34
### Spring Spring框架是一个容器,它的主要作用是创建和管理对象。 Spring框架实现了解耦。 Spring框架通过DI实现了IoC。 关于Spring框架,必须掌握和理解的: 1. Spring的基本概念与特性; 2. 常用的注解:通用的4个注解,自动装配的注解; 3. 关于`@Autowired`和`@Resource`的区别; 4. Spring表达式,建议课余找时间学习ONGL。 ### SpringMVC SpringMVC主要解决接收请求与处理响应的问题。 关于SpringMVC框架,必须掌握和理解的: 1. 创建SpringMVC项目,并完成配置; 2. 掌握常用注解:`@RequestMapping`、`@ResponseBody`、`@RequestParam`、`@RestController`、`@GetMapping`、`@PostMapping`、`@ExceptionHandler`; 3. 掌握转发与重定向,及转发时封装转发的数据; 4. 掌握响应JSON正文的方式; 5. 掌握拦截器的使用; 6. 掌握异常的处理。 ### MyBatis MyBatis解决了传统模式下持久层开发比较繁琐的问题。 关于MyBatis框架,必须掌握和理解的: 1. 基本的增删改查功能开发; 2. 查询时,什么时候需要自定义别名; 3.

2、Spring Boot 2.x 快速入门

帅比萌擦擦* 提交于 2020-03-11 11:55:54
1.2 Spring Boot 快速入门 1.2.1 开发环境和工具 JDK 1.8+:Spring Boot 2.x 要求 JDK 1.8 环境及以上版本。另外,Spring Boot 2.x 只兼容 Spring Framework 5.0 及以上版本; Maven 3.2+:为 Spring Boot 2.x 提供了相关依赖构建工具是 Maven,版本需要 3.2 及以上版本。使用 Gradle 则需要 1.12 及以上版本。 IntelliJ IDEA:IntelliJ IDEA (简称 IDEA)是常用的开发工具,也是本文推荐使用的,同样使用 Eclipse IDE,也能完成本文的实践案例。另外,本文的工程都会在 GitHub 上开源,如需要请自行安装 Git 环境。 本文代码地址: https://github.com/JiaoHongwei/Spring-Boot-Demos 1.2.2 创建工程 “Hello Spring Boot” 在 IDEA 中,利用 Spring Initializr 插件进行创建; 访问网站 https://start.spring.io/ 进行在线生成Spring Boot项目打包下载到本地; 下载安装 Spring Boot CLI脚手架进行快速创建。 1.2.2 Creating the POM <?xml version="1.0

spring 的 PropertyPlaceholderConfigurer读取的属性怎么访问 (java访问方式,不是xml中的占位符哦)及此类的应用

久未见 提交于 2020-03-11 07:30:31
一、1.占位符的应用:(@Autowired注解方式,不需要建立set与get方法了,xml注入也不需要写了) http://www.cnblogs.com/susuyu/archive/2012/09/10/2678458.html 二、 2、java方式访问(已经验证过好用) 1、通过spring配置properties文件 [java] <bean id="propertyConfigurer" class="com.tjsoft.base.util.CustomizedPropertyPlaceholderConfigurer"> <property name="ignoreResourceNotFound" value="true" /> <property name="locations"> <list> <value>/WEB-INF/config/jdbc.properties</value> <value>/WEB-INF/config/mail.properties</value> <value>/WEB-INF/config/system.properties</value> </list> </property> </bean> 其中class为自己定义的类 2、自定义类CustomizedPropertyPlaceholderConfigurer

Spring AOP的一个使用例子

爱⌒轻易说出口 提交于 2020-03-09 21:50:03
0.前言 学习Spring,肯定会了解IOC和AOP的思想,除了Spring的基本使用,自己在实际应用中,还真没特意使用过AOP的功能。最近有一个项目使用到了Spring,由于之前也没有Spring的实际工作经验,加上项目比较着急,所以有很多细节不完善的地方。下面介绍AOP使用的一个例子,有不对或者更好的解决方法,欢迎指正。 1.功能需求 项目是一个学习小组,用户可以创建小组,加入小组,离开小组,以及其它一系列功能。在小组首页里有一个小组动态。这就需要我们在程序中,处理用户基本操作以外,还要保存相应的小组动态。 2.基本实现 首先想到的就是写一个公共的方法,在需要的地方进行调用。因为里面有两个DAO操作,所以封装成了一个service方法。在不同的service中注入service调用这个方法。这个方法大概需要几个参数,记录小组id,用户id,以及动态的type public void addTeamNewsLog(long team_id,long user_id,int type){ long ref = studyTeamInfoDAO.getSeqAllRef(); StudyTeamNews news =new StudyTeamNews(); news.setRef(new BigDecimal(ref)); news.setTeamId(new BigDecimal