Spring_day02问题记录
1.Dao层注解关键字 repository?
仓库; 贮藏室;
2.通过注解成员变量是通过反射的field赋值?
@Value("tom")
private String name;
https://segmentfault.com/a/1190000011213222
3.注解?
https://blog.csdn.net/Java_3y/article/details/79787399
4.prototype用不了销毁方法?
对于具有prototype作用域的Bean,Spring不能对该Bean的整个生命周期负责。具有prototype作用域的Bean创建后交由调用者负责销毁对象回收资源。
而singleton是放进容器当中的,这才纳入完整的生命周期。
5.代理模式的原理?
代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。(即无论怎么代理,中间还是得用到被代理的方法)简单的说就是,我们在访问实际对象时,是通过代理对象来访问的,代理模式就是在访问实际对象时引入一定程度的间接性,因为这种间接性,可以附加多种用途。
6.动态代理中Proxy.newProxyInstance()的三个参数?
第一个参数是放targetObject的类加载器;(为什么类加载器可以随便起?)
第二个放的是targetObject的所有接口,因为jdk的动态代理要求其目标对象必须实现接口;
第三个放的是一个实现了invocationHandler接口的对象。
7.jdk的动态代理及为什么需要接口?
1.在需要继承proxy类获得有关方法和InvocationHandler构造方法传参的同时,java不能同时继承两个类,我们需要和想要代理的类建立联系,只能实现一个接口
2.需要反射获得代理类的有关参数,必须要通过某个类,反射获取有关方法,如本次测试用的 :printSomeThing
3.成功返回的是object类型,要获取原类,只能继承/实现,或者就是那个代理类
4.对具体实现的方法内部并不关心,这个交给InvocationHandler.invoke那个方法里去处理就好了,我只想根据你给我的接口反射出对我有用的东西。
5.考虑到设计模式,以及proxy编者编写代码的逻辑使然
https://blog.csdn.net/zxysshgood/article/details/78684229
8.`public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("打开事务!");
Object invoke = method.invoke(us, args);//哪个类被执行,相当于哪个类被代理?
System.out.println("提交务!");
return invoke;
}`
us被执行method.invoke方法,说明us被代理。
9.aop,oop?
aop:Aspect Oriented Programing 面向切面编程
oop:Object Oriented Programing 面向对象编程
10.经常变的值不会放进spring容器中?
controller对象是放在spring子容器springMVC中的。
为什么不在spring容器管理controller