发表于: 2018-03-31 20:27:46
1 652
今天完成的事情:
1.xml文档
2.使用mvn跑单元测试
3.打包项目
4.关于main方法
1.关于xml文档:
因为报错 :文档根元素 "beans" 必须匹配 DOCTYPE 根 "null"。
由于昨天这个错误,今天看了好久也没找到原因,至少不是xml的原因。
使用的时候是reader读取xml文件
reader = Resources.getResourceAsReader("mybatis/springmybatis.xml");
如果使用注释直接注入会报之前的“前言中不允许有内容 ”
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
而项目中只有两个xml文件,一个springMybatis.xml,一个mapper.xml,配置跟规范都没有错。一直找不到原因。
感觉很多的重点都在xml配置上面,所以今天仔细看了xml文件的基础概念,发现xml是个很浅的东西。重点的不是xml,而是里面的配置项。
基础概念:
·xml文档是可扩展的标记语言,是一种格式规范
·xml文档是为了实现不同平台、不同系统、不同程序语言之间的数据交互
·设计宗旨是实现传输数据,而不是显示数据
·xml不会做任何事情,任何人都可以自定义其属性
xml标准:
1.声明:
每个xml必须有声明,必须是第一行。version表示xml的版本,encoding表明xml的编码
<?xml version="1.0" encoding="UTF-8"?>
2.根元素
每个xml有且只能有一个根元素,每个根元素都必须有开始和结束标记:
<mapper namespace="UserMapper">...</mapper>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
</beans>
3.元素和属性
使用的时候自定义,但是每个元素标签必须成对出现,必须区分大小写,必须正确嵌套。
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="jdbcUrl" value="jdbc:mysql://localhost/jnshu"></property>
<property name="user" value="root"></property>
<property name="password" value="root"></property>
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
</bean>
4.DOCTYPE,DOCTYPE标签是一种标准通用标记语言的文档类型声明,它是为了告诉编译器应该使用什么样的文档类型定义来解析文档
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
格式良好的xml文档:
1、必须有XML的声明语句
2、必须有且只有一个XML根元素。
3、标签大小写敏感。
4、属性使用双引号。
5、标签必须成对出现。
6、空标签关闭。
7、元素必须正确的嵌套。
8、必须对特殊字符使用实体
2.使用mvn跑单元测试:
命令:mvn -Dtest = Test testSelectById
需要在项目根目录下:
提示未知的生命周期阶段“=”您必须指定一个有效的生命周期阶段或格式
Maven是约定优于配置,所以如果不指定的华它会执行所有以Test开头的java类
修改命令,mvn -Dtest=Test test (Test文件位于test文件夹下)
执行成功:
3.打包:
项目右键Open Model Setting:
这里打包成jar包
MainClass是主程序入口
提示是因为文件重复,把MANIFEST.MF删除就可以了
然后选中根目录
然后选择build project:
然后在菜单选择build artifacts,在弹出来的窗口选择你打包的jar
idea就会自动生成jar包:
运行jar包:
空指针异常,原来是因为静态类调用了实例函数。
但是使用内部类的时候出现尾调用方法的异常No runnable methods
(待解决)
4.main方法:
程序的入口,需要设置成静态的,公共的,不需要返回值。
因为是静态方法,所以使用其它非静态函数会报空指针异常。因为启动的时候它已经被创建了,所以需要调用其它方法的时候需要创建实例化对象:
public static void main(String[] args){
Eaf eaf = new Test().new Eaf();
eaf.testSelectById(id);}
class Eaf {
@Autowired
UserMapper userMapper;
@org.junit.Test
public void testSelectById(int id) {
System.out.print(userMapper.selectById(id));
}
}
或者同样使用静态类:
public static void main(String[] args){
Eaf eaf = new Eaf();
eaf.testSelectById();}
static class Eaf {
……
}
或者设为静态方法:
public static void main(String[] args){
testSelectById();
}private static void testSelectById() {
……
}
或者把内部类写在主类外面,属于静态嵌套或者非静态嵌套。
这是一个大的概念,明天继续研究。
明天计划的事情:
·测试服务器
·继续学习spring的IOC/DI/AOP
·继续学习maven
·继续学习基础概念
遇到的问题:
·还是配置上的问题,不好写,遇到的问题越多越是一团乱麻
·main方法使用内部类空指针异常和No runnable methods异常(关于静态方法和实例函数,之前没有使用过)
收获:
1.xml的规范
2.mvn命令
关于Maven:Maven不是服务器,它简化和标准化项目建设过程,一个项目构建、管理的工具。处理编译,分配,文档,团队协作和其他任务的无缝连接。 Maven增加可重用性并负责建立相关的任务。Maven是一个为了让项目的可重复使用,容易理解容易维护的一个模型。
包括spring,由于开始直接用的就是这些,并没有经历过其它的,所以并不知道它们具体的方便之处,或者说理解不深,只能后面继续体会。
3.打包(关于main方法)
4.很多天没有干货,每次都是在跟配置打交道。回头写的时候基本上都忘了,需要掌握更多基础。
评论