或者在SynchLogRepoository这个类的上方加上注解告诉spring,这个东西我就交给你管了
类似于:
在这里再多废话几句,spring的IoC和DI就是在这里体现的。你只有把管理bean的權限从使用它的类中分离出去才叫做 inverse of control
你的doPost方法里面定义的两个参数变量就是req和resp呀
this指代当前对象相当于new一个对象
你这个方法的作用是,当提交一个POST请求时调用你这个doPost方法,然后根据访问的URL区截取其中的方法名这个方法就在你这个当前的类中定义的,它有两个参数类型为HttpServletRequest和HttpServletResponse。然后使用反射原理来调用这个方法this是当前类的实例对象的别洺。req,resp只是2个变量名而已你可以随意定义他们的类型是HttpServletRequest和HttpServletResponse。
java的反射中的反射是运行中的程序檢查自己和软件运行环境的能力它可以根据它发现的进行改变。通俗的讲就是反射可以在运行时根据指定的类名获得类的信息
首先我們先明确两个概念,静态编译和动态编译
静态编译:在编译时确定类型,绑定对象,即通过
动态编译:运行时确定类型,绑定对象动態编译最大限度发挥了java的反射的灵活性,体现了多
我们可以明确的看出动态编译的好处而反射就是运用了动态编译创建对象。
往往对比能更加直观的向我们展示两者的不同
若是不用反射,它是这样的
看到这些方法你就可以明白,反射是多么的强大了当你正确使用这些方法的时候,基本上是掌握了反射的技巧
如果不知道某个对象的确切类型,RTTI可以告诉你但是有一个前提:这个类型在编译时必须已知,这样才能使用RTTI来识别它Class类与java的反射.lang.reflect类库一起对反射进行了支持,该类库包含Field、Method和Constructor类这些类的对象由JVM在启动时创建,用以表示未知類里对应的成员
这样的话就可以使用Contructor创建新的对象,用get()和set()方法获取和修改类中与Field对象关联的字段用invoke()方法调用与Method对象关联的方法。另外还可以调用getFields()、getMethods()和getConstructors()等许多便利的方法,以返回表示字段、方法、以及构造器对象的数组这样,对象信息可以在运行时被完全确定下来洏在编译时不需要知道关于类的任何事情。
反射机制并没有什么神奇之处当通过反射与一个未知类型的对象打交道时,JVM只是简单地检查這个对象看它属于哪个特定的类。因此那个类的.class对于JVM来说必须是可获取的,要么在本地机器上要么从网络获取。所以对于RTTI和反射之間的真正区别只在于:
RTTI编译器在编译时打开和检查.class文件
反射,运行时打开和检查.class文件