spring

最新文章

Spring Controller统计数据库的百万行数据(Aggregate Millions of Database Rows in a Spring Controller)

了解如何使用Spring和Speedment在Java中执行超快速聚合,即使是具有数百万行的大型数据集。只要API与数据库的结构相匹配,Spring Framework就可以使用JPA和Spring Web快速地建立关系型数据库的RESTful API。 然而,在许多API中,REST端不对应于特定的表,而是对应于一些聚合的字段。在这些情况下,你仍然需要编写

Spring MVC配置CORS

Spring Framework 从4.2开始支持配置CORS。Spring MVC支持CORS的范围包括:方法级别配置CORS全局配置CORS方法级别配置CORS使用注解@CrossOrgin可以对@RequestMapping注解的方法设置CORS。@RestController @RequestMapping("/users") public

Spring定时任务@Scheduled的cron表达式

基本语法cron表达式由6-7个时间域组成,每个时间域之间用空格隔开。格式:<秒> <分> <时> <日期> <月> <星期> <年份> 秒:取值范围0-59分:取值范围0-59时:取值范围0-23日期:每月的的几数,0-31月:取值范围1-12,或英文简

Spring发送邮件模块的用法

环境准备Spring的邮件模块底层依赖于JavaMail,它主要目的是为应用提供一个便捷有用的发邮件工具包。邮件模块的代码在spring-context-support的jar包里,所在的package为org.springframework.mail。Maven的pom.xm需要添加javax.mail jar包的依赖<dependency>   &nb

Spring Boot集成kafka

Spring Boot对kafka提供了自动配置(auto configuration)。使用用Spring Boot只需要做很少的配置即可集成对kafka的访问。pom配置1、继承spring-boot-starter-parent<parent>   <groupId>org.springframework.boot&l

Spring Boot设置服务器的端口

Spring Boot默认内嵌的web服务器为tomcat,端口为8080。如果想修改内嵌tomcat插件的端口有三种方式:在application.properties里修改在java的启动脚本里设置在java代码里设置在application.properties设置server.port=9999 如果是application.yml,设置如下:server:  &nbs

Spring Cloud Stream集成Kafka

这里演示使用Spring Boot ,Spring Cloud集成Kafka来实现一个简单的实时流系统。添加依赖可以在https://start.spring.io创建一个基于spring boot的maven项目。需要添加的主要依赖:spring-cloud-stream以及spring-cloud-starter-stream-kafka,如下:<

POC验证测试Spring Data Commons组件远程代码执行漏洞(CVE-2018-1273)

Spring Data Commons爆出远程代码执行漏洞(CVE-2018-1273),攻击者可构造包含有恶意代码的SPEL表达式实现远程代码攻击,直接获取服务器控制权限。这是POC验证漏洞的测试http请求:POST /users HTTP/1.1Host: localhost:8080Content-Type: application/x-www-form-urlencodedContent

Spring Boot集成JSP

Spring Boot是不推荐使用JSP作为模板文件。如果Spring Boot使用JSP是有一些限制,其中只能打包成可执行的war包或者可在外部容器(如tomcat)部署的war包。项目目录结构在普通的spring boot项目基础上,在src/main下新增目录webapp/WEB-INF/jsp用来存放jsp文件,静态文件存放在/src/resources/static。结构如图:

SSM redis数据源配置

<!-- redis配置开始 --> <!-- 配置JedisPoolConfig实例 --> <bean id="redisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle&

Spirng Security使用注解对方法做权限安全控制

 Spring Security默认情况下是关闭了对方法级的安全控制。可以通过xml或者是在添加了@Configuration注解的bean上添加@EnableGlobalMethodSecurity来开启对方法级别的安全控制。Spring Security 支持三种方法级注解, 分别是 JSR-205/Secured 注解/prePostEnabled,可以在开启对方法级的安全控制时设

Spring Security自定义验证失败处理器AuthenticationFailureHandler

Spring Security的AuthenticationManager用来处理验证的请求,处理的结果分两种:验证成功:结果由AuthenticationSuccessHandler处理验证失败:结果由交给AuthenticationFailureHandler处理。在Spring Security内置了几种验证失败处理器:DelegatingAuthenticationFailureHandl

解决Spring session报错JedisDataException: ERR unknown command 'CONFIG'

在线上部署服务时,spring-session报了一个redis的错误,如下:redis.clients.jedis.exceptions.JedisDataException: ERR unknown command 'CONFIG'原因是spring-session调用了CONFIG命令来配置Keyspace notifications功能。而线上环境的redis基于权限的考虑,禁止应用服务执

SpringBoot项目集成maven-shade-plugin

因为项目是基于springboot搭建的,按springboot的教程,打包只需要在pom添加以下即可:<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin

SpringBoot 打包跳过单元测试的几种方法

SpringBoot打包时要跳过单元测试有几种方法。方法一:在properties定义<skipTests>,设置其值为true。<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEnc

Spring JPA报错:Not supported for DML operations

在一个Spring JPA项目中,执行更新或删除是报错:Not supported for DML operations解决方法:只需要添加注解@Modifying即可。@Modifying@Query(value = "update User user set user.address = :address where user.id = :id ")void updateUserAddress

Spring MVC重复多次读取请求的Body

我们知道,HttpServletRequest的InputStream流只能读取一次,不能重复读取。在Spring MVC中,它提供了类ContentCachingRequestWrapper,它会对原始的HttpServletRequest对象进行包装。 当我们调用request body时,ContentCachingRequestWrapper会把request body的内容进行缓存,这样

Spring Webflux监控客户端连接断开的方法

Spring webflux的FluxSink有两个方法:onCancel和onDispose。当客户端的连接断开,这两个方法会被调用。示例代码:@RestControllerpublic class Controller { @GetMapping("/") public Flux<String> test() { return Flux.create(this::proc

Spring Boot四种类型的任务调度以及自定义任务调用的线程池

本文主要围绕以下两方面内容介绍Spring Boot 集成任务调用:基于@Scheduled注解定义任务调度的用法自定义任务调度的线程池Spring Boot开启任务调度Spring Boot 开启任务调度很简单,只需要在启动的Application类,或者配置类上添加注解@EnableScheduling即可。如以下示例:import org.springframework.boot.Sprin

Spring框架高级介绍

什么是Spring框架这个问题的古老答案是,“Spring 是一个依赖注入框架”。实际上,它远不止于此。Spring 是最流行的 Java 企业应用程序开发框架,它带有许多工具和库来解决 Java 世界中的几乎所有问题。无论是微服务还是简单的数据库驱动的企业应用程序,Spring 都有必要的工具来帮助您入门。目前很难解释 Spring技术栈中可用的所有功能和库,随着您的进步,您将逐渐了解它们。您会

Spring依赖注入(DI)

Spring依赖注入(DI)基于 Setter 的依赖注入ApplicationContext 支持对其管理的 bean 进行基于字段的依赖注入。 IoC 容器在调用无参数构造函数或无参数静态方法进行实例化后调用托管 bean 的 setter 方法。基于构造函数和基于设置器的注入可以组合用于同一个 bean。Setter DI 的基于 XML 的配置bean-config.xml<?xml

Spring Bean Scopes – @Scope 注解

Spring Bean Scopes – @Scope 注解创建bean意味着,您创建类的实际实例,并根据bean定义注入依赖项。Bean 定义就像一个配方,您可以使用相同的配方创建该类的多个实例。 Scope 控制需要创建的实例数量和 bean 的生命周期。Spring Framework 支持六个Scope,此外,您还可以创建自定义Scope。1、单例scope —— @Scope("sing

Spring中集合映射和注入

Spring中集合映射和注入Spring Framework 支持注入 Java 集合类型 List、Set、Map 和 Properties。您可以使用 XML 以及基于注解的配置。我们将在本文中使用基于注解的配置来学习集合的构造函数、setter和字段注入。 使用@Autowired 进行集合注入我们所需要的只是使用@Autowired 注解对List、Set、Map 等集合进行注解

Spring bean 生命周期回调

Spring bean 生命周期回调Spring Bean Creation Phases在本文中,您将了解 Spring bean 生命周期以及运行 bean 初始化回调和 bean 销毁回调的不同方法。Bean 生命周期只是意味着您希望在 spring bean 可用之前执行回调,并且类似地在 bean 被销毁之前执行回调。有几种方法可以配置 Spring bean 生命周期回调,如下所示。1

Spring bean定义继承

Spring bean定义继承在 Spring Framework 中,bean 定义继承(bean 配置继承)是我们必须学习的一个宝贵的省时特性。如您所知,bean 定义只不过是 Spring IoC 容器根据详细信息创建我们的 bean 的配置。这些 bean 定义可以包含很多有用的配置,如构造函数参数、属性值、初始化方法等。1、使用 Bean 定义继承,子 bean 定义从父配置继承配置。2

使用@Primary 和@Qualifier 微调自动装配

使用@Primary 和@Qualifier 微调自动装配简介当我们有多个相同基类类型的 bean 时,按类型自动装配会导致歧义。因为有多个相同类型的 bean,所以控制 bean 选择过程很重要。Spring 提供了 @Primary 注释,它将特定的 bean 声明为主要的,这意味着在自动装配到单值依赖项时,主要 bean 将被赋予更高的首选项。另一方面,Spring 还提供了 @Qualif

Spring 中的 IoC 容器、Bean 工厂与应用程序上下文

Spring 中的 IoC 容器、Bean 工厂与应用程序上下文在本文中,您将了解 Spring Framework 中 IoC Container、Application Context 和 Bean Factory 之间的区别。Spring IoC 容器是 Spring Framework 的核心。它创建类实例,将它们裝配在一起,配置它们,并管理它们从创建到销毁的完整生命周期。Spring 容

使用@ComponentScan 和过滤器进行类路径扫描

使用@ComponentScan 和过滤器进行类路径扫描简介类路径扫描基本上意味着,检测指定包下需要由 Spring 管理的类。您需要使用带有@Configuration 的spring @ComponentScan 注释进行类路径扫描。此注解允许您指定基本包和过滤器(如果需要精细控制包扫描)。我们将在本文中研究这两种方法。深入看@ComponentScan注解在学习使用这个注解之前,我们先来看看