Spring
niuchengshui
这个作者很懒,什么都没留下…
展开
-
Spring源码中的refresh方法
refresh方法1.调用prepareRefresh();方法 此方法主要用于准备工作包括设置启动时间,是否激活标识位,初始化属性源的配置。ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();方法 1、创建BeanFactory对象 * 2、xml解析 * 传统标签解析:bean...原创 2020-04-23 15:19:01 · 238 阅读 · 0 评论 -
Spring源码第一节
初始化工作//这一步就完成了Spring的所有初始化工作 AnnotationConfigApplicationContext act =new AnnotationConfigApplicationContext(SpringConfig.class);BeanDefinition是什么?{ A BeanDefinition describes a bean...原创 2020-04-23 12:40:52 · 73 阅读 · 0 评论 -
Spring中的BeanFactory和FactoryBean区别
BeanFactory:是Spring的一个工厂它能够得到Spring工厂给创建的Bean,能通过getBean()方法获得。FactoryBean:就是一个普通的Bean,但是在Spring管理的时候会对实现这个接口的类前面加一个(&)字符。而它的名字则是表示getObject中得到的Bean。主要的作用是别的Bean属性或者依赖太多的情况下,都可以通过FactoryBean生成不太容...原创 2020-04-21 15:32:17 · 265 阅读 · 0 评论 -
模拟Spring
1.常规的类管理方式是:1.使用动态代理将业务逻辑的实现类构建出来,Dao jdkProxy= (Dao) Proxy.newProxyInstance(Test.class.getClassLoader(), new Class[]{Dao.class}, new NiuInvocationHandler(new DaoImpl()));然后执行相应的业务逻辑。2.将把类放入工厂中,让工厂进行...原创 2020-04-20 22:36:57 · 128 阅读 · 1 评论 -
设计模式 --proxy
什么是代理:在原有的类上,增加一些新的业务逻辑。代理对象:增强后的对象目标对象:被增强的对象java实现代理有两种方式:1.静态代理,2.动态代理1.静态代理:继承:public class DaoImpl { public void query(){ System.out.println("处理业务逻辑"); }}public class ...原创 2020-04-16 22:29:39 · 93 阅读 · 0 评论 -
Spring perthis和pertarget
perthis和pertarget在Spring AOP中,切面类的实例只有一个,比如前面我们一直使用的MyAspect类,假设我们使用的切面类需要具有某种状态,以适用某些特殊情况的使用,比如多线程环境,此时单例的切面类就不符合我们的要求了。在Spring AOP中,切面类默认都是单例的,但其还支持另外两种多例的切面实例的切面,即perthis和pertarget,需要注意的是perthis和p...原创 2020-04-16 15:33:30 · 1156 阅读 · 0 评论 -
SpringAOP 通知
@after和@beforeafter:在执行的业务方法代码之前执行。before:在执行的业务方法代码之后增强Around :环绕通知@Configuration@ComponentScan("com.afterAdvice")@EnableAspectJAutoProxypublic class AroundConfig {}@Servicepublic class Se...原创 2020-04-16 12:35:45 · 72 阅读 · 0 评论 -
Spring AOP设计原则
AOPAOP面向切面编程的一种思想,它是对OOP面向对象编程方式上的一种增强。 可以这样理解,OOP也就是我们说的按照类在虚拟机生成的Class文件依次执行。而AOP它是监控类中的方法,然后在方法上增加业务功能。AOP不会侵入到你的业务代码中,它是对你编写的业务代码中的方法增加一些的额外功能。说白了AOP并不能替代OOP,主要的业务逻辑还是写在OOP中。AOP里面包含了很多实现的方式:1.经典...原创 2020-04-15 12:40:16 · 706 阅读 · 0 评论 -
Spring 自定义扫描的包
includeFilters 和 excludeFilters增加includeFilters(只引入包含的) 或者excludeFilters (排除包含的)在@ComponentScan 注解中可以进行一些Bean是否被扫描到。assignable 特定的类使用注解扫包的时候不扫描ServiceImpl类@Configuration@ComponentScan(value = "co...原创 2020-04-14 15:38:05 · 371 阅读 · 0 评论 -
Spring自定义自己的Bean
Lifecycle Callbacks 生命周期的回调第一种方式:在Bean交给Spring容器初始化之后可以实现InitializingBean接口的afterPropertiesSet方法做一些相关的逻辑。@Componentpublic class daoImpl implements Dao, InitializingBean { public daoImpl() { ...原创 2020-04-14 13:46:02 · 224 阅读 · 0 评论 -
Spring命名规则重写
Spring命名规则1.继承AnnotationBeanNameGeneratorpublic class MyBeanNameGenerator extends AnnotationBeanNameGenerator { @Override protected String buildDefaultBeanName(BeanDefinition definition) {...原创 2020-04-14 11:18:01 · 182 阅读 · 0 评论 -
Spring Bean作用域
@Single 单例的在Spring容器创建一个组件的时候,默认情况下只会创建一次,不同的组件公用一个对象,即单例的模式。代码一public interface Dao { void query();}代码二@Componentpublic class daoImpl implements Dao { public void query() { Sy...原创 2020-04-13 22:51:02 · 177 阅读 · 0 评论 -
IoC控制反转三种实现方式:依赖注入,依赖查找,依赖拖拽
IoC控制反转三种实现方式:依赖注入,依赖查找,依赖拖拽IoC控制反转依赖查找依赖注入(DI)IoC控制反转IoC控制反转(Inversion of Control)是一种设计原则。有三种实现方式:依赖注入(Dependency Injection,简称DI)、依赖查找(Dependency Lookup)、依赖拖拽(Dependency Pull)。控制反转实际上是由传统的在一个类中创建其他...原创 2020-04-11 12:06:09 · 856 阅读 · 0 评论