spring
文章平均质量分 51
Healist
积极向上的小年轻,努力提高的小码农
展开
-
Spring的误区使用注意事项
1、@Order对自定义的普通bean无控制顺序的作用已知有用的场景:@AspectJ定义的切面类的加载顺序ApplicationListener的实现类的加载顺序控制CommandLineRunner的实现类的加载顺序2、配置的优先级@Configuration的配置类在最先被初始化,多个@Configuration配置类,顺序由你构造AnnotationConfigApplicationContext时传入的顺序为准(若是被scan扫描进去的,则无序),然后是@Bean、@Compo原创 2020-11-11 20:15:07 · 277 阅读 · 0 评论 -
AspectJ的LoadTimeWeave 织入与静态编译代理
最近在公司在折腾监控的事情,有用到LTW加载时期织入的代理去统一全部的监控框架使用,LTW比spring aop动态代理的好处在于不限制在spring容器内的bean类、而且对方法嵌套也同样支持(动态代理会生成额外的代理类解析this会有问题)整体开启使用,主要有以下三步:开启LTW在工程配置类上加上注解即可@EnableLoadTimeWeaving(aspectjWeaving = EnableLoadTimeWeaving.AspectJWeaving.AUTODETECT)LTW需要asp原创 2020-09-27 11:45:36 · 809 阅读 · 0 评论 -
Spring的BeanPostProcessor、BeanFactoryProcessor
Spring中Bean有对应的生命周期和加载处理流程,BeanPostProcessor和BeanFactoryProcessor俩个接口就可以在全局的在所有bean的流程中加入自己的操作。通过实现接口方法即可添加自定义的回掉操作BeanFactoryProcessor作用:其作用与BeanPostProcessor大致相同,不过 postProcessBeanFactory可以在BeanFacto原创 2017-12-29 14:12:16 · 468 阅读 · 0 评论 -
Spring内部的事件监听实现
简单记录一下,在spring中如何实现Observer模式,这里以游戏事件来举例实现基于spring的ApplicationEvent类和ApplicationListener接口先定义一个游戏事件@Getter@Setterpublic class GameEvent extends ApplicationEvent { private String name; private原创 2017-12-29 11:36:22 · 362 阅读 · 0 评论 -
Spring的HandlerMethodArgumentResolver接口
Spring中可以通过实现HandlerMethodArgumentResolver接口来自定义参数装配,其原理我了解就是基于拦截器。下面我通过讲述自定义的@CurrentUser注解来解释HandlerMethodArgumentResolver接口的使用。注解定义/** * 在Controller的方法参数中使用此注解,该方法在映射时会注入当前登录的User对象 */@Target(Ele原创 2018-01-03 15:54:19 · 935 阅读 · 0 评论 -
Spring中Resource和ResourceLoader
Spring中定义很多Resource类型(对资源文件的封装)ClassPathResource (类路径下)FileSystemResource (文件系统)UrlResource (网络url)ByteArrayResource (byte数组)ServletContextResource (访问ServletContext环境下的资源)InputStreamResource (输入转载 2018-01-02 19:16:12 · 739 阅读 · 0 评论 -
spring bean的初始化方式小记
大致有以下三种哈1、 实现InitializingBean接口,实现afterPropertiesSet方法2、 通过xml配置bean的init-method指定3、 @PostConstract注解,第二条的注解形式,原理相同注:InitializingBean的执行顺序是在ini-method方法之前的,如果在afterPropertiesSet定义的代码出错则不会执行init-metho原创 2017-12-21 20:08:39 · 538 阅读 · 0 评论 -
Spring静态变量注入
记录常见的俩种方式bean的生命周期@Componentpublic class ParamManager { public static String appKey; public static String appToken; public static String baseUrl; @Value("${lifesmart.appkey}") priva原创 2017-11-28 19:25:46 · 578 阅读 · 0 评论 -
在spring项目中配置跨域访问
跨域是老生常谈的问题了,不同域名或者相同域名不同端口都会产生跨域访问的问题。解决方案1、在前端用jsonp的方式请求 2、后端设置响应头header 3、用Spring MVC 4.2+的版本,已经内置提供跨域支持(@CrossOrigin注解方式 或者 自己配置下 )我用的spring mvc4.0所以这里给出第二种方式根据拦截器来实现设置响应头:import javax.servlet.*;原创 2017-01-31 16:15:33 · 3577 阅读 · 1 评论 -
java原生实现定时任务 与 Spring自带的定时任务
java原生实现定时任务:第一种基于无限循环的的Thread线程方法:public class ThreadExample { public static void main(String[] args) { final long timeInterval = 2000; Runnable runnable = new Runnable() {原创 2017-01-28 20:01:55 · 762 阅读 · 0 评论 -
Spring在多线程下@Resource注入为null
前情叙述记录以下这个坑,我的情况大致是这样的,我在用webmagic写爬虫,在类中通过@Resoource(@Autowired也一样)注入dao接口实例。然后我在process方法中引用这个实例发现这个实例在这里一直为null,然后我在测试类或者当前类的main函数中引用dao实例就没问题,一切正常(当时 黑人问号脸???)几经波折,发现原因是spring和多线程安全的问题,不让注入。因为我也没研原创 2017-01-30 23:34:31 · 3173 阅读 · 0 评论 -
javax.mail 与 Spring Mail 俩种方式发送简单的QQ邮件
jdk1.8的版本发送邮件可能会有我上篇博客中提到的问题,请参考 javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failurejavax.mail方式package com.healist.email;import javax.mail.*;import javax.mail.internet.Intern原创 2017-01-29 16:09:35 · 918 阅读 · 0 评论 -
InfoHunter —— 本校招聘宣讲会信息的webapp
不知不觉马上就要大三下学期了,也该为实习做准备了。。。这几天抽空做了一个稍微跟招聘有些联系的东西,就是一个宣讲会信息展示的webapp,招聘信息爬取自我们学校的就业信息网,那个网站界面乱而且我不关心的信息也多,我觉得自己做一个比较个性化的相关项目也很有必要,所以我在爬虫的基础上扩展了以下,后端定时自动爬取宣讲会信息,并且在webapp上展示并且提供用户注册登陆,除此之外最有用的是登陆的用户可以在这上原创 2017-02-02 22:52:11 · 814 阅读 · 0 评论 -
并发秒杀实践
因为之前做项目还是用脚本语言更多一些,java的东西有段时间不碰了,正好在慕课上看到这个教程,所以跟着走了一遍自己完整的实现出来找找感觉,整体感觉还是视频讲解的还是不错的,代码也比较规范,实际中的并发秒杀肯定会比这个更复杂的,但是这里对核心内容提炼一下能让大家有个整体的认识。 下面我开始谈一谈关于此次实践的理解与收获。技术栈 SpringMVC Spring MyBatis原创 2016-11-18 15:38:50 · 492 阅读 · 0 评论 -
spring学习系列(二) 应用切面
在多个模块的代码中都有功能相同的代码段(比如日志),你可能在多处(eg: 连接前,连接中,断开之后等类似的周期)去记录各种日志数据,然而这种代码与你的业务逻辑代码又没啥大关系,反而让你的代码显得很乱,所谓切面就是提取出相同的功能封装好,然后动态代理的插入到原有的业务逻辑。书接上回,我们看一下下面这个皇帝上朝的切面应用例子:public class worker { private PrintS原创 2016-11-12 23:23:11 · 384 阅读 · 0 评论 -
spring学习系列(一) 依赖注入(DI)
首先看一个例子,如果一个皇帝需要打仗,那他首先得让士兵去打仗public class emperor implements king { //引入了士兵的实例化对象 private Soldier soldier; public emperor () { this.soldier = new Soldier(); } public void figh原创 2016-11-12 22:28:34 · 338 阅读 · 0 评论