1.什么是IOC?:ioc即依赖注入,由spring管理类对象之间的依赖关系,下降编码形成对象之间的耦合度,使用配置的方式描述依赖关系。ioc容器负责建立,拼接,管理,获取对象。html
2.什么是AOP?:aop便是一种面向切面的编程思想,容许进行预编译的方式或者实如今运行期动态代理来添加某一个功能,可是这种操做不会修改源码,只会修改编译后的字节码。java
3.spring jdbc对传统的jdbc进行了薄层的封装,减小了编写的代码的重复性,如获取链接等。web
4.在web.xml文件中配置自动启动spring mvc容器:spring
<context-param> <param-name> contextConfigLocation//配置spring配置文件的位置 </param-name> <param-value> classpath:smart-context.xml </param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener//当web容器启动的时候,自动启动spring容器 </listener-class> </listener>
spring mvc也拥有一个配置文件,命名规则与web.xml中定义的servlet命名有联系,便是servlet名-servlet.xml.如:编程
<servlet> <servlet-name>smart</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>smart</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping>
类装载器的过程:mvc
1.查找和导入calss文件app
2.校验-class文件数据的正确性。准备-给类静态变量分配空间。解析-将符号应用转换成直接应用jvm
3.初始化-对类的静态变量,静态代码块执行初始化编码
4.jvm装载是会产生三个装载器(根装载器,扩展装载器,应用类装载器)根装载器负责装载jre的核心类库,扩展装载器负责装载扩展目录ext下的jar包,应用加载器负责加载classpath下的类包。这三个加载器分别是继承关系。url
nosuchmethodmethod错误:究其缘由是因为类加载器的”全局负责委托机制“(当加载一个类时,此类的依赖类也有这个加载器加载,除非显示指定。委托机制就是先委托父加载器加载,只有再父加载器找不到时,再从本身的classpath下查找加载)引起的:好比两个一样的包,版本不一样,当使用一个包中的方法,可是加载器却加载了另外一个包,可是加载的那个包并无对应的方法,这是就会抛出此错误。
类加载器与反射关系:
package reflect; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class reflecttest { public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { ClassLoader loader=Thread.currentThread().getContextClassLoader(); Class classzz=loader.loadClass("reflect.car"); Constructor<car> con=classzz.getDeclaredConstructor((Class[])null); car car1=con.newInstance(); Method settype=classzz.getMethod("setType", String.class); settype.invoke(car1, "阿拉斯加"); Method setage=classzz.getMethod("setAge", int.class); setage.invoke(car1, 113); Method setmaxspeed=classzz.getMethod("setMaxspeed", int.class); setmaxspeed.invoke(car1, 122); car1.say(); } }