
springboot
香酥蟹
多么痛的领悟!
展开
-
SpringBoot中实现不同的环境扫描不同的包
前言需求很简单,我不想在idea新建个项目,但是功能同样的类,我需要多份,但是还不想改变名称,原因是太多。我就想新建个包,把他们复制过去,改改配置。但是不改类名,容器扫描会有冲突(除非给其加上别名),因为我的包名和环境名相同,如果能根据环境的不同,容器扫描不同的类最好不过。需求解决需求修改对ComponentScan的配置@ComponentScan( value = "com.delicacy", excludeFilters = {@ComponentScan.F原创 2022-02-06 17:13:21 · 832 阅读 · 0 评论 -
DispatcherServlet分析
初始化Servlet初始化Servlet过程HttpServletBean: init|FrameworkServlet: initServletBean| FrameworkServlet: initWebApplicationContext|DispatcherServlet: onRefresh|DispatcherServlet: initStrategies初始化策略对象(以便servlet使用)protected void initStrategies(Appli原创 2021-07-27 11:24:39 · 232 阅读 · 0 评论 -
Request和Response分析
Request过程Handler实际执行请求(request)DispatcherServlet: doDispatch|AbstractHandlerMethodAdapter: handle|RequestMappingHandlerAdapter: handleInternalRequestMappingHandlerAdapter: invokeHandlerMethod|ServletInvocableHandlerMethod: invokeAndHandle|Invoca原创 2021-07-22 15:41:25 · 174 阅读 · 0 评论 -
RequestMappingHandler分析
获取BeanDefinition信息并注册AbstractApplicationContext: refresh|AbstractApplicationContext: invokeBeanFactoryPostProcessors|PostProcessorRegistrationDelegate: invokeBeanDefinitionRegistryPostProcessors|BeanDefinitionRegistryPostProcessor: postProcessBeanDe原创 2021-07-20 18:06:29 · 188 阅读 · 0 评论 -
EnableWebMvc注解分析
EnableWebMvc@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented// 引入DelegatingWebMvcConfiguration类@Import(DelegatingWebMvcConfiguration.class)public @interface EnableWebMvc {}DelegatingWebMvcConfiguration@Configurationpublic原创 2021-07-20 16:56:13 · 337 阅读 · 0 评论 -
Autowired注解分析(AutowiredAnnotationBeanPostProcessor)
AutowiredAnnotationBeanPostProcessor如何注入容器SpringApplicationprotected ConfigurableApplicationContext createApplicationContext() { ... return (ConfigurableApplicationContext) BeanUtils.instantiate(contextClass);}AnnotationConfigApplicationContextpubl原创 2021-07-06 16:43:07 · 431 阅读 · 0 评论 -
关于GET和POST方式传递数组处理
@RestControllerpublic class GetPostController { @GetMapping("say") public String say(@RequestParam String msg) { return msg; } @GetMapping("sayList") public String sayList(@RequestParam List<String> msg) { retu原创 2021-05-08 18:06:10 · 978 阅读 · 1 评论 -
SpringBoot Security的自定义异常
access_denied 方面异常原异常{ "error": "access_denied", "error_description": "不允许访问"}现异常{ "success": false, "error": "access_denied", "status": 403, "message": "不允许访问", "path": "/user/get1", "timestamp": 1592378892768}实现p原创 2020-06-18 17:05:12 · 7521 阅读 · 1 评论 -
优化Response异常处理2(使用jsr303参数校验)
Response异常处理@Slf4j@RestController@Validatedpublic class ValidController { @PostMapping("validUser") public String validUser(@RequestBody @Valid User user){ return "success"; }...原创 2020-03-11 16:11:30 · 450 阅读 · 0 评论 -
优化Response异常处理(使用jsr303参数校验)
前言我们常见异常返回如下{"timestamp":"2020-03-11T07:33:39.442+0000","status":400,"error":"Bad Request","message":"xxxxxxxx","path":"/validParams"}在尤其在我们是用@Valid和@Validated注解的时候,message信息是不友好的,能不能显示我们希望的异常数据呢?...原创 2020-03-11 15:50:59 · 836 阅读 · 1 评论 -
关于SpringBoot Security oauth2使用Cors问题(登出无效)
前言 : /logout at position 1 of 10 in additional filter chain; firing Filter: 'WebAsyncManagerIntegrationFilter' : /logout at position 2 of 10 in additional filter chain; firing Filter: 'SecurityConte...原创 2019-12-09 16:46:18 · 1921 阅读 · 1 评论 -
SpringBoot Security的oauth2四种授权模式使用
密码模式localhost:8080/oauth/token?client_id=client_id_1&client_secret=123456&grant_type=password&username=xiaomi&password=123456{ "access_token": "1e8ada36-ed82-49fc-9ca7-ff897d4bf2...原创 2019-12-04 14:32:04 · 4972 阅读 · 3 评论 -
SpringBoot Security的oauth2 sso的实现和使用
sso oauth2 的使用oauth获取token1、 页面输入如下地址:http://localhost:8000/oauth/authorize?response_type=code&client_id=client_id_1&redirect_uri=http://localhost:8001/code&scope=write2、 拦截跳转到登陆页面:...原创 2019-12-04 14:21:43 · 2318 阅读 · 0 评论 -
SpringBoot2.0的@Cacheable(Redis)缓存失效时间解决方案
问题 @Cacheable注解不支持配置过期时间,所有需要通过配置CacheManneg来配置默认的过期时间和针对每个类或者是方法进行缓存失效时间配置。解决 可以采用如下的配置信息来解决的设置失效时间问题配置信息 @Bean public CacheManager cacheManager(RedisConnectionFactory redisConn...原创 2018-09-05 18:29:35 · 47503 阅读 · 15 评论 -
SpringBoot中实现Spring容器中注入类型相同但名不同Bean
@Bean(autowire = Autowire.BY_NAME,value = "kaptchaProducer") public Producer kaptchaProducer() { Properties kaptchaProperties = new Properties(); kaptchaProperties.put("kaptcha...原创 2018-06-06 18:53:25 · 18723 阅读 · 1 评论