自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (1)
  • 收藏
  • 关注

原创 Spring AOP源码解析(三)创建代理并调用

一、创建代理准备工作回顾之前的wrapIfNecessary方法,再获取到匹配的增强器后,Spring就会为拦截的bean创建代理对象: //获取匹配的增强器 Object[] specificInterceptors = getAdvicesAndAdvisorsForBean(bean.getClass(), beanName, null); //DO_NOT_PROXY ...

2018-08-29 21:12:59 728

原创 Spring AOP源码解析(二)获取增强器

一、方法入口上一节中,Spring会创建两个工厂来完成获取增强方法的功能: AspectMetadata amd = new AspectMetadata(beanType, beanName); if (amd.getAjType().getPerClause().getKind() == PerClauseKind.SINGLETON) { MetadataAwareAspec...

2018-08-29 11:20:12 483

原创 Spring AOP源码解析(一)Advisor获取

一、入口AOP的Jar包如下如所示:META-INF中是Spring自定义标签的配置文件,对<aop>标签的支持spring.schemas配置如下,作用是定义<aop>标签的内容(根据不同版本,Spring使用不同的xsd文件来描述):http\://www.springframework.org/schema/aop/spring-aop-2.0....

2018-08-28 16:54:30 1229

原创 ApplicationContext拓展功能

一、属性设置对于ApplicationContext,其实例化前必须要设置的就是配置文件的路径--configLocation。例如:对于非Web环境下的ClasspathXmlApplicationContext,需要通过构造函数或调用setConfigLocation设置配置文件路径;对于Web环境下的XmlWebApplicationContext,会使用web.xml中配置的c...

2018-08-27 10:19:44 661

原创 Web容器整合ApplicationContext源码

一、web.xml配置开始在使用Tomcat等容器整合Spring的时候,需要在web.xml中添加如下的配置: <!-- spring的环境监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</...

2018-08-25 20:58:27 261

原创 Spring源码:bean创建(六)初始化

一、注入依赖后初始化下面是doCreateBean的部分代码: Object exposedObject = bean; try { //填充属性(依赖注入) populateBean(beanName, mbd, instanceWrapper); //初始化 exposedObject = initializeBean(beanName, exposed...

2018-08-25 10:35:55 295

原创 Spring源码:bean创建(五)解决依赖

一、resolveDependency在上一节最后,Spring将与获取指定相匹配的所有bean,其实现就在BeanFactory的resolveDependency中,下面是DefaultListableBeanFactory中实现: public Object resolveDependency(DependencyDescriptor descriptor, String requ...

2018-08-11 12:37:39 1885

原创 Spring源码:bean创建(四)属性注入

一、populateBean在创建了bean的实例后,Spring的下一步工作就是为bean注入其依赖的属性: protected void populateBean(String beanName, RootBeanDefinition mbd, @Nullable BeanWrapper bw) { //传入的beanWrapper为空,如果属性不为空就抛出异常,否则返回null...

2018-08-09 15:17:59 2775

原创 Spring源码:bean创建(三):createBeanInstance

一、创建bean实例在doCreateBean方法中,首先会创建bean的实例,负责创建的方法为createBeanInstance: protected BeanWrapper createBeanInstance(String beanName, RootBeanDefinition mbd, @Nullable Object[] args) { // 解析class Cla...

2018-08-08 10:01:13 5411 1

原创 Spring源码:Bean创建(二)createBean方法

一、获取单例 getSingleton创建单例bean的代码在getSingleton中实现: //省略了日志打印和异常捕获的代码 public Object getSingleton(String beanName, ObjectFactory<?> singletonFactory) { //单例模式下创建bena需要加锁同步 synchronized (thi...

2018-08-08 10:01:01 4968

原创 Spring源码:Bean创建(一)

1、BeanFactory.getBean(String name)方法//AbstractBeanFactory.javapublic Object getBean(String name) throws BeansException { return doGetBean(name, null, null, false); }2、真正创建Bean的地方--doCreateBe...

2018-08-05 21:10:30 507 1

原创 Spring整合MyBatis源码(一)SqlSession创建

一、Spring+MyBatis配置下面是一个常见的Spring整合MyBatis的applicationContext.xml配置:SqlSessionFactoryBean:负责解析配置文件,并实例化SqlSessionFactory和创建SqlSessionMapperScannerConfigurer:负责创建Mapper,并且注入到Spring的IOC容器中下面我们分析...

2018-07-27 16:59:30 1271

原创 SpringBoot+Shiro引起事务失效、错误原因、解决方法

一、问题今天发现用户注册的Service的事务并没有起到作用,再抛出一个RuntimeException后,并没有发生回滚,下面是调试步骤:1、检查数据库的引擎是否是innoDB2、启动类上是否加入@EnableTransactionManagement注解3、是否在方法上加入@Transactional注解或Service的类上是否有@Transactional注解4、方法是...

2018-07-25 10:41:49 13029 30

原创 MyBatis缓存Cache源码分析

一、缓存接口介绍MyBatis的一级缓存和二级缓存都是使用的Cache接口实现类,它的方法定义如下:public interface Cache { String getId(); void putObject(Object key, Object value); Object getObject(Object key); Object removeObject...

2018-07-23 14:57:07 2444 4

原创 Shiro源码学习(四)登录和权限鉴定

登录Subject结构首先看下我们在使用登录时用到的Subject结构:可以看到,这个接口的功能就是与登录登出、权限鉴定相关;另外,这个接口被WebSubject继承,这也是个接口,同时还继承了RequestPairSource,为Subject添加了获取Request和Response的能力。下面是它的结构:对Subject接口的实现类有两个:DelegatingSubject 和 WebDel...

2018-03-30 16:50:50 3984

原创 Shiro源码学习(三)常用Filter源码和继承关系

Filter类别Shiro为我们提供了默认的几种拦截器,并且也支持我们通过继承来编写我们自定义的拦截器。Shiro中默认的拦截器有:其含义如下:anon:例子/admins/**=anon 没有参数,表示可以匿名使用。 authc:例如/admins/user/**=authc表示需要认证(登录)才能使用,没有参数 roles:例子/admins/user/**=roles[admin],参数可以...

2018-03-29 21:08:43 1971 4

原创 Shiro源码学习(二)应用拦截器链

将配置的拦截器链加入到FilterChain中我们可能会在shiro中配置上图这样的拦截器链,但是像Tomcat这样的服务器中的Filter都是需要配置在web.xml中才会生效。而在上篇文章中,我们在web.xml中只配置了一个Filter,所以Shiro需要做的就是把配置的拦截器链“嫁接”到服务器原来的Filter链中。在上篇中,我们提到,最后发挥拦截功能的是SpringShiroFilter...

2018-03-29 16:54:36 437

原创 Shiro源码学习(一)Filter的创建

一、从web.xml到Spring容器我们在使用spring配置shiro时,有两处需要配置Filter相关的地方: <!-- Shiro配置 --> <filter> <filter-name>shiroFilter</filter-name> <filter-class>org.sprin...

2018-03-29 15:16:23 544

原创 solrJ使用

描述solr的一些基本参数用法,solrJ的几个重要类介绍以及solrJ的使用

2017-11-26 22:29:51 474

原创 Spring源码分析:多个bean同时满足注入条件时,spring的选择

通过Spring源码分析,spring是如何解决依赖注入问题,并且在找到满足条件的bean时,如果需要注入的接口有多个实现类,spring会如何解决

2017-10-18 23:04:31 8913 2

原创 结合源码分析Java中的三种ClassLoader的关系

通过JDK源码。分析BootstrapClassLoader、ExtClassLoader、AppClassLoader之间的关系

2017-10-14 14:26:33 895

SolrJ使用示例

简单的SolrJ使用示例,包括文件:News.java(PO对应的class),SolrService.java(对solrJ的包装),SolrServiceHook.java(在查询前修改SolrQuery的行为)

2017-11-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除