spring
文章平均质量分 67
玖涯菜菜子
投资未来的人,是忠于现实的人。
展开
-
Spring 源码分析(六)——Bug?getBean取出的Bean居然未经初始化
Spring 是线程安全的,支持多线程并发调用。但在某种特殊情况下,使用 BeanFactory 的 getBean 方法,我成功拿到了未经初始化的 Bean(是BUG,亦或是出于某种原因考虑的特性?)。原创 2023-11-14 23:43:28 · 317 阅读 · 0 评论 -
CGLIB 和 JDK 两种动态代理方法对比
Spring 动态代理时提供了 JDK 代理和 CGLIB 两种方式,一般而言,代理的目标是接口时 AOP 使用 JDK 代理来实现,CGLIB 则负责对类进行代理,两种代理方法结合使用。原创 2023-08-11 14:48:48 · 237 阅读 · 0 评论 -
Spring 创建 Bean 的三种方式
在使用 Spring 框架后,对象以 Bean 的形式统一交给 IOC 容器去创建和管理。现阶段主流的方式是基于 SpringBoot 框架,基于注解的方式实现 Bean 的创建,但在原生 Spring 框架中其实存在三种创建 Bean 的方式。原创 2023-08-05 23:55:24 · 780 阅读 · 0 评论 -
Spring 源码分析(二)——GenericBeanDefinition 分析
BeanDefinition 中存储着 Bean 的定义信息,它具有属性值、构造函数参数值以及具体实现 Bean 提供的进一步信息,在学习 Spring 的 Bean 初始化流程之前,还是非常有必要先了解一下 BeanDefinition。原创 2023-04-11 10:02:04 · 711 阅读 · 0 评论 -
SpringBoot 通过代理创建接口的实现类Bean
一、功能概述需要实现的功能是使用指定的 SDK 开发包来访问其他服务的资源,这种场景其实和Mapper、Feign 类似。所以,希望也通过接口上配置注解的方式实现。所以在本文使用了三个注解:@RkproblemMapperScan :自定义的注解,用于指定要扫描的包名;@RkproblemMapper :自定义的注解,用于标记当前接口需要被代理;@RequestMapping :SpringMvc 的注解,用于标记当前方法需要被代理,以及代理的 url。二、实现流程2.1 创建注解创建一原创 2022-01-20 15:18:26 · 1926 阅读 · 1 评论 -
SpringBoot统一响应格式带来的String双引号问题和类型强转失败问题解决
写在前面在开发中,经常会有一个自定义输出数据格式的场景,此时如果用到 ResponseBodyAdvice 做全局的数据格式控制,在响应纯字符串数据时可能会遇到某些奇怪的问题,本文描述了两个和 String 相关的问题的解决方案,内容可能和网上的其他有些不同,问题较简单,纯记录贴。XXXX cannot be cast to java.lang.String 问题;响应的字符串携带双引号问题。本文 SpringBoot 环境:<parent> <groupId>原创 2021-02-28 05:13:50 · 4374 阅读 · 2 评论 -
Shiro系列(二)——Shiro 多 Realm 实现
写在前面本文基于上一篇文章《 Shiro + Springboot + JWT 的整合》延续,示例项目也是在上篇文章的基础上扩展而来的。一个系统一般都具有多种用户类型,如管理员、普通用户和运营者账号等,这些用户都存储在不同的表中。当然,通过对 Token 的内容进行条件判断,一个 Realm 是可以直接实现多个账号登录的,但是这样将导致不同用户的登录完全耦合在一起,这不是我们想看到的,所以有了多 Realm 的需求,并且 Shiro 是支持多 Realm 的。1. 实现逻辑1.1 分析通过阅读 S原创 2021-02-18 03:24:16 · 1350 阅读 · 1 评论 -
Shiro系列(一)——Shiro + Springboot + JWT 整合
写在前面本文的出现表示不再进行 Spring Security Oauth 实现的研究了,原因是原开源项目已经被废弃了不再更新了,而且 Oauth 实现的内容有些奇怪,新的项目 spring-authorization-server 目前才发布到 0.1.0,默认只提供了基于内存的实现,个人认为还不是很完善,不适合用到项目中。而且 Spring Security 的 Oauth 流程都实现了,要修改还得从新研究 spring-authorization-server 的实现逻辑,然后进行修改定制,太耗费精原创 2021-02-17 05:45:08 · 1414 阅读 · 3 评论 -
Spring Security系列(五)——Oauth2使用JWT生成Token无法指定授权范围的解决方法
写在前面Spring Oauth 提供了对 jwt 的支持,要实现 jwt 功能很简单,但是在指定授权范围时将会遇到无法指定授权范围的问题,本文主体描述的是如何解决这个问题。本文依赖环境:<!-- spring-security-oauth2 2.3.4.RELEASE --><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>sprin原创 2021-02-10 10:45:32 · 1357 阅读 · 0 评论 -
Spring Security系列(四)——Spring Oauth2实现登录同时授权、自定义授权界面
本文环境: org.springframework.cloud:spring-cloud-starter-oauth2:2.2.4.RELEASE本文场景: 希望实现类似 QQ 的登陆并授权功能,但是将 /oauth/authorize 路径加入 permitAll 没有生效,加入 web.ignoring() 后抛出了 User must be authenticated with Spring Security before authorizing an access token. 异常,在 Spri原创 2021-02-04 00:32:31 · 4420 阅读 · 14 评论 -
Springboot修改默认异常处理
1. 继承BasicErrorController继承BasicErrorController可实现修改默认的全局异常处理,复写error方法修改Rest请求的修改,复写errorHtml实现修改错误处理视图。package com.nineya.user.controller;import com.nineya.tool.restful.ResponseResult;import org.springframework.boot.autoconfigure.web.ServerPropertie原创 2020-12-06 18:25:39 · 955 阅读 · 0 评论 -
Spring Security系列(三)——WebFlux配置方式以及多登陆入口实现
本文场景: 使用Spring Security做权限控制,系统包含普通用户和系统管理员两种类型,希望有不同的登录入口;并且在Spring Gateway上配置,Gateway使用的是WebFlux,无法兼容MVC,所以使用WebFlux配置Security。纯记录,目前项目还是小demo,贴的示例代码可以正常运行,但是业务逻辑还有点问题。1. SecurityWebFilterChain配置创建两个SecurityWebFilterChainbean,管理员配置限制范围为/manage/**,用户将原创 2020-12-06 17:03:53 · 6368 阅读 · 3 评论 -
Spring Security系列(二)——过滤器链分析以及创建多个登陆入口
写在前面**本文场景:**希望在网关上实现security统一进行权限认证,后续的服务间交互不再进行权限认证。但是系统有两个类型的账号,一个是普通用户,一个是系统后台管理员,完全是两个类型,希望创建给两个不同的登陆入口分别给两个类型的账号登录使用。想到的解决方法有两个:网关上的security想办法创建多个登陆入口(本文描述的方法);网关上的security只对用户进行权限验证,对管理员的请求放行,管理员在自己的模块上进行权限验证。**本文思想:**security实现多登陆入口的方法是创建多原创 2020-12-06 12:35:05 · 2936 阅读 · 0 评论 -
Spring Security系列(一)——登录认证基本配置
1. 开启Security@EnableWebSecurity@Configurationpublic class UserWebSecurityConfiguration extends WebSecurityConfigurerAdapter { @Resource private PasswordEncoder passwordEncoder; @Resource private LoginAuthenticationSuccessHandler successH原创 2020-11-28 20:48:39 · 1219 阅读 · 0 评论 -
spring源码分析(一)——Spring整体架构以及环境搭建
1. Spring整体架构Spring是一个分层架构,它包含一系列的功能要素,并被分为大约20个模块,Spring整体架构图如下:1.1 核心容器(Core Container)核心容器(Core Container)部分包含有Core、Beans、Context和Expression Language模块,其中Core和Beans模块是框架的基础部分,提供IOC(控制反转)和依赖注入特性,基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序单例模式的需要,并真正的允许原创 2020-09-20 15:02:03 · 415 阅读 · 0 评论 -
Springboot关闭默认的日志输出
本文环境springboot 2.2.6jdk 1.8.0_241一、配置application.yml在resources目录下新建application.yml文件(或:application.properties),添加如下内容:logging.level.[包名]: OFF# 例如,OFF可改成某个日志级别logging.level.org.apache.ignite: OFF二、添加日志配置文件添加log.xml文件,内容如下:<?xml version="1原创 2020-05-22 18:37:49 · 24780 阅读 · 1 评论 -
SpringBoot使用Java修改端口、项目打包
本文环境1.SpringBoot 2.2.62.jdk 1.8.0_241一、使用java修改端口通过实现WebServerFactoryCustomizer<ConfigurableWebServerFactory>接口实现,springboot2.X之前的版本会有所不同。@SpringBootApplicationpublic class SpringbootApplication implements WebServerFactoryCustomizer<Configur原创 2020-05-22 18:35:57 · 838 阅读 · 0 评论 -
SSH项目搭建,提供完整的SSH示例项目
写在前面本文采用ecplipse搭建了一个简单的SSH项目,并提供了示例项目,适合初学者入门。文章可能还有很多不足,请大家谅解,欢迎大佬提意见。本文使用到的东西struts 2.5.22spring 5.2.3hibernate 5.4.10java 12.0.2eclipse 2019-11win10文章目录写在前面本文使用到的东西1.前期准备1.1 导入jar包方式1.2...原创 2020-01-22 22:13:38 · 5155 阅读 · 0 评论 -
spring概述、标签介绍、配置对象及简单的属性设置注入
写在前面很久以前在有道云笔记上写的笔记,打算放弃它了,将笔记迁移到这里来。文章可能还有很多不足,请大家谅解,欢迎大佬提意见。本文使用到的东西springjava1 spring的概述因为spring基于反射原理,在使用spring框架的对象类中要存在默认的没有参数的构造函数。spring 是一个非常著名的实现ioc对象控制反转及aop切面编程的框架。通常将spring框架作为...原创 2019-12-13 21:04:42 · 480 阅读 · 0 评论 -
spring框架aop切面-不修改原代码添加新功能
写在前面很久以前在有道云笔记上写的笔记,打算放弃它了,将笔记迁移到这里来。文章可能还有很多不足,请大家谅解,欢迎大佬提意见。本文使用到的东西javaecplipsespringaop概述aop的原理基于java动态代理模式,在java文件夹中有动态代理示例aop添加包aop实现除了spring包以外还需要添加的包链接:https://pan.baidu.com/s/1acj...原创 2019-12-13 20:49:12 · 859 阅读 · 0 评论 -
spring注解实现设值注入
写在前面很久以前在有道云笔记上写的笔记,打算放弃它了,将笔记迁移到这里来。文章可能还有很多不足,请大家谅解,欢迎大佬提意见。本文使用到的东西ecplipsespring1.正文在配置文件中设置注解扫描路径–这里spring配置头基于spring4.0的包, base-package注解表示注解的扫描路径<?xml version="1.0" encoding="UTF-8...原创 2019-12-13 20:32:01 · 654 阅读 · 0 评论