发表于: 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.很多天没有干货,每次都是在跟配置打交道。回头写的时候基本上都忘了,需要掌握更多基础






返回列表 返回列表
评论

    分享到