![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spring
扑愣蛾子
这个作者很懒,什么都没留下…
展开
-
ApplicationContextAware的使用理解
想象这么一个场景,一个单例bean中依赖有原型bean我们怎么去注入?spring中我了解的大致有两种方式,一种是@Lookup依赖查找,另一种就是实现ApplicationContextAware使用方法@Service@Scope("prototype")public class UserService { }@Componentpublic class Use...原创 2020-03-06 16:21:24 · 225 阅读 · 0 评论 -
Spring声明式事务
Spring事务最顶层的接口是PlatformTransactionManager二、传播行为1、PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。2、PROPAGATION_SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。‘...原创 2019-09-04 10:59:13 · 93 阅读 · 0 评论 -
手动实现可开关的Cglib代理
要实现可开关的cglib代理,需要依赖@Import,ImportSelector,BeanPostProcessor原理就是依赖@Import注解的开关作用,动态将BeanPostProcessor的实现添加到spring容器,通过beanPostProcessor插手bean的实例化过程,我们就能控制是返回代理对象还是目标对象。 先定义一个我们自己的注解,依赖了@Import @R...原创 2019-08-03 19:50:40 · 268 阅读 · 3 评论 -
Spring容器初始化过程(注解方式)
AnnotationConfigApplicationContext的构造方法(做了三件事)调用父类的无参构造方法,子类无参构造方法 父类构造方法中new了DefaultListableBeanFactory 子类构造方法中创建了一个reader和scaner调用register完成注册这里完成了Spring内置类和配置类的注册,将配置类转为bd...原创 2019-09-03 14:22:58 · 646 阅读 · 0 评论 -
@EnableAspectJAutoProxy注解的原理(SpringAOP的原理)
spring使用aspectj提供的库进行切入点解析和匹配,解释与aspectj 5相同的注释。但是,AOP运行时仍然是纯SpringAOP,并且不依赖于AspectJ编译器或weaver。springAOP不管是用jdk动态代理还是cglib动态代理,跟aspectj的最大区别是SpringAOp用的是动态代理运行期织入,而aspectj是使用的静态代理在编译期织入。先看@EnableA...原创 2019-08-05 22:46:56 · 1701 阅读 · 0 评论 -
@MapperScan注解的原理
spring源码看多了,就发现很多开关型的注解,以@EnableXXX开头的这些注解,大体上实现原理差不多。@MapperScan也不能免俗,没办法,谁让spring允许插手bean实例化过程的方式只那么几种呢!同样的通过@Import实现开关效应,MapperScanRegistrar实现ImportBeanDefinitionRegistrar接口,传一个registry给你,至于你想怎么...原创 2019-08-07 22:53:23 · 5250 阅读 · 3 评论 -
spring对jdbc事务控制
pojo类package com.pactera.pojo;public class User { public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge()原创 2017-03-06 23:35:59 · 192 阅读 · 0 评论 -
spring对jdbc的支持
org.springframework.jdbc.core.JdbcTemplate 是spring中对数据库进行操作的核心类看API 文档:再看该类的父类org.springframework.jdbc.support.JdbcAccessor 所以在IOC容器中创建JdbcTemplate对象的时候有构造方法和属性注入两种方式 用c3p0数据源 com.mchange.v2.c3p原创 2017-03-06 21:33:21 · 217 阅读 · 0 评论 -
XML方式实现aop
目标接口package com.pactera.dao;public interface IUserDao { void save();}目标类package com.pactera.daoImpl;import org.springframework.stereotype.Repository;import com.pactera.dao.IUserDao;@Repositorypub原创 2017-03-05 21:33:00 · 140 阅读 · 0 评论 -
注解方式实现aop事务切面
先用接口方式 目标接口package com.pactera.dao;public interface IUserDao { void save();}目标类package com.pactera.daoImpl;import org.springframework.stereotype.Repository;import com.pactera.dao.IUserDao;@Repos原创 2017-03-05 19:39:31 · 665 阅读 · 0 评论 -
手动实现Aop
目标接口package com.pactera.dao;public interface IUserDao { void save();}目标类package com.pactera.daoImpl;import org.springframework.stereotype.Repository;import com.pactera.dao.IUserDao;@Repositorypub原创 2017-03-04 13:49:21 · 254 阅读 · 0 评论 -
cglib动态代理
对于没有实现接口的类,就不能使用jdk动态代理 目标类package com.pactera.daoImpl;public class UserDao{ public void save() { System.out.println("userDao save()"); }}代理工厂package com.pactera.proxy;import java.lang原创 2017-03-02 23:16:13 · 168 阅读 · 0 评论 -
JDK动态代理
目标接口package com.pactera.dao;public interface IUserDao { void save();}目标对象package com.pactera.daoImpl;import com.pactera.dao.IUserDao;public class UserDao implements IUserDao{ @Override publi原创 2017-03-02 22:27:41 · 130 阅读 · 0 评论 -
java中的静态代理
java中的静态代理原创 2017-03-01 23:12:22 · 249 阅读 · 0 评论 -
spring的IOC
包结构和jar applicationContext.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p=原创 2017-02-28 23:03:06 · 154 阅读 · 0 评论 -
@Resource和@Autowired
user.javapackage com.pactera.springBean;import javax.annotation.PostConstruct;import javax.annotation.PreDestroy;import org.springframework.beans.factory.annotation.Autowired;import org.springframew原创 2017-03-01 22:51:55 · 493 阅读 · 0 评论