浅谈Spring

IoC:控制反转,是一个理论,一个思想。知道我们如何创建和使用Java对象的。
IoC:
控制:控制对象的创建,属性的赋值,对象的销毁
反转:把在源代码中创建对象的权限转移给了代码之外的容器实现(由容器完成对象的创建)
正转:开发人员在源代码中,new构造方法,创建对象。创建对象的权限史由开发人员掌握的
IOC:就是把创建对象的,给属性赋值的工作,从源代码移动到了代码之外的容器(Spring)
IoC思想的技术实现:
1.依赖查找DL:比较老的方式。用的很少
2.依赖注入DL:比较常用的方式,使用的对象。只要通过名称就行,如何创建对象,如何获取对象都由容器自己内部实现

Spring框架使用DI这种技术方案,spring底层使用的是jdk中的反射

Spring使用IoC:Spring创建对象,给属性赋值。由Spring管理的java对象,成为bean

Spring:
概念:Spring是一个开源的java框架,有核心技术IoC和AOP,spring史一个容器,容器是java对象。Spring的目的史解耦合。由Spring创建对象,给属性赋值。

spring的配置:创建对象
	1)默认配置:spring调用类的无参构造方法。
	2)bean的作用域:		1.singleton
	2.prototype
	3)bean的生命始末方法。init-method,destroy-method

DI:依赖注入,给属性赋值。
Di的分类:1.设值注入,调用类的sey方法
设值注入:
1)简单类型的:
2)引用类型的:



2.构造注入,调用类的有参构造方法
构造注入:
1): name属性
2): index属性

	集合类型的属性赋值:是什么类型的集合就用什么样子的子标签,集合中简单类型就用value赋值,集合中引用类型,就使用ref

1.自动注入:让框架实现引用类型的赋值,支持byName,byType
2.项目中使用多个配置文件:
1)平等关系
2)包含关系 使用
3.使用注解的DI,在源代码中,使用注解创建对象,给属性值赋值
1)@Component 创建对象 , @Respsitory , @Service, @Controller
2)@Value,简单类型的属性赋值
3)@Autowired。@Resource,引用类型的赋值
4)@PostContruct,@PreDestory,指定生命始末的方法

1.动态代理:代理对象是在程序的执行过程中,创建出来的,这个对象是没有Java,clas文件的
2.动态代理的实现方式:
1)jdk的动态代理,实现使用java.lang.reflect包中的类和接口。
jdk的动态代理的使用要求:目标类必须实现接口。
Proxy类,有一个静态方法,Proxy.newProxyInstance()创建代理对象
Method类,表示业务方法(目标方法),通过使用method.invoke()执行目标方法
InvocationHandler接口:调用处理器接口, 在接口中实现功能的增强(事务处理),目标方法的调用。

2 )cglib动态代理, 使用cglib这个第三方的工具库,实现动态代理的功能。
cglib实现动态代理的原理是:继承 , 由cglib自己生成目标类的子类,子类就是代理类。
cglib它的使用要求目标类不能是 final , 目标方法也不能是final .
cglib在框架中使用的比较多,例如spring ,mybatis等等。

3.aop:面向切面编程,是一种动态的编程思想,是对OOP的补充。
aop基于动态代理:1.jdk的动态代理;2.cglib动态代理。
aop的实现: spring框架;aspectj框架
aop的主要的概念: 1.切面Aspect ;
2.切入点(使用切入点表达式,表示切面加入的位置);
3.通知Advice(增强):表示切面执行的时间
通知:表示切面执行的时间
1.@Before:前置通知,在目标方法之前执行的。一般打印日志用前置通知比较多

AOP的通知:
1。@AfterReturning:后置通知,在目标方法之后执行的, 能获取目标方法的执行结果。
2。@Around:环绕通知:在目标方法前和后都能增强功能,控制目标方法,修改执行结果。
3。@AfterThrowing:异常通知,在目标方法抛出异常时执行的,可以监控目标方法的执行
4。@After:最终通知,总是会被执行的。
5。@Pointcut:定义切入点。

框架创建代理使用的方式:
1。如果目标类有接口,默认使用jdk动态代理
2。如果目标类没有接口,使用cglib动态代理
3。如果目标类有接口,也可以使用cglib,需要设置 <aop:aspectj-autoproxy proxy-target-class=“true” />

使用AspectJ,用注解方式定义的通知方法的参数有什么:
1。JoinPoint:表示连接点(方法)
2。Object:在后置通知中使用, 表示目标方法的执行结果。
3。ProceedingJoinPoint:在环绕通知中使用的, 表示连接点,可以执行目标方法的调用
4。Throwable:在异常通知中使用的, 表示异常对象的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值