Spring随手笔记
Spring 弹簧;春天,春季;
1 关于spring文件中的jar包说明
ioc 容器对象是一个重量级的对象 很大 创建很耗费资源,因此一般只创建一个就够了
2 Spring 容器创建
把容器配置文件 放在src目录下面去 不要乱放
文件的名字是随意的 这里老韩取名为beans
unmapped 映射;非映射
做完这些之后 就不再有提示了
3 类加载路径
默认会把src 当作类的加载路径 但是程序运行过后 真实走的是out目录那条线
4 class.getResource() 和 classLoader.getResource() 是不同的
类的加载器中的
public URL getResource(String name) {
Class对象中的
public java.net.URL getResource(String name) {
String path = HspTomcatV3.class.getResource("/").getPath();
参考代码位置:
D:\Java_developer_tools\javase\JavaSenior2\day8\src\com\hsp\io\FileInformation.java
D:\Java_developer_tools\javaweb\jiaju_mall\src\com\hspedu\furns\utils\JDBCUtilsByDruid.java
D:\Java_developer_tools\javaweb\hsptomcat\ydtomcat\src\main\java\com\hspedu\tomcat\HspTomcatV3.java
D:\Java_developer_tools\ssm\my_spring\spring\src\com\hspedu\spring\annotation\HspSpringApplicationContext.java
/*
* 结论:默认情况下 是把 out module 的根目录 当作默认的类加载路径 即out/production/day8/
* 但是Class.getResource() 可以只放一个斜杠 / class.getResource("/") 来获取项目当前的真实的
* 运行路径 根路径
* 而classLoader.getResource("/") 不可以放入一个斜杠 会返回一个Null
但是在Tomcat下path是否以’/'开头无所谓,可以以斜杠开头也可以不以斜杠开头 都可以获取到项目的加载路径
即在Tomcat下可以 使用classLoader.getResource("/")
获取到类加载路径 //classPath= file:/D:/Java_developer_tools/ssm/my_springmvc/hsp_springmvc/target/my_springmvc/WEB-INF/classes/
* classLoader.getResource("/") 这种方式只可以写相对路径 路径前不可以写斜杠 而是从
* 运行路径下直接写 即 classLoader.getResource("com/hsp/io/FileInformation.class")
*
* 而 Class.getResource() 需要在路径前提供一个斜杠才能解析到
* class.getResource("/com/hsp/io/FileInformation.class")
* 不可以写相对路径前面不加斜杠
*
* */
public static void main(String[] args) {
// 1.得到类的加载器 使用任何一个类的.class 都可以得到类的加载器
ClassLoader classLoader = FileInformation.class.getClassLoader();
// 2.通过类的加载器获取到要扫描的包的资源 url
// classLoader.getResource("com/hspedu/spring/component"); 默认是按照斜杠 / 来间隔各级文件目录的
/*
* 下面返回为null 在这里 即不可以写绝对路径 也不可写/ 在手写hsptomcat 时 写的是
* String path = HspTomcatV3.class.getResource("/").getPath();// 得到的是工作目录,而不是源码目录
* System.out.println("path= " + path);
* 这里的区别是
* 手写tomcat时 是用 class对象.getResource() 返回的是也是URL对象
* 类加载器.getResource() 返回的是URL对象
* 但是用法不同 加载器中的 不可以写 "/" 和 绝对路径
* */
URL resource = classLoader.getResource("/"); // null
URL resource2 = classLoader.getResource("day8/com/hsp/io"); // null
URL resource3 = classLoader.getResource("/com/hsp/io"); // null
URL resource4 = classLoader.getResource("com/hsp/io"); //
URL resource5 = classLoader.getResource("com/hsp/io/FileInformation.java"); // null
URL resource6 = classLoader.getResource("com/hsp/io/FileInformation.class"); //
URL resource7 = classLoader.getResource("day8/com/hsp/io/FileInformation.class"); // null
System.out.println("resource= " + resource);// null
System.out.println("resource2= " + resource2);// null
System.out.println("resource3= " + resource3);// null
System.out.println("resource4= " + resource4);// resource4= file:/D:/Java_developer_tools/javase/JavaSenior2/out/production/day8/com/hsp/io
System.out.println("resource5= " + resource5);// resource5= null
System.out.println("resource6= " + resource6);// resource6= file:/D:/Java_developer_tools/javase/JavaSenior2/out/production/day8/com/hsp/io/FileInformation.class
System.out.println("resource7= " + resource7);// resource7= null
/*
* 结论:默认情况下 是把 out module 的根目录 当作默认的类加载路径 即out/production/day8/
* */
//String resourcePath = classLoader.getResource("/").getPath(); // NullPointerException
System.out.println("=========================");
URL classResource = FileReader.class.getResource("/"); // classResource= file:/D:/Java_developer_tools/javase/JavaSenior2/out/production/day8/
URL classResource2 = FileReader.class.