发表于: 2017-04-24 22:49:53

2 1717


Task1的第三天


今日计划

  1. 今天准备推到Q21

今日完成

Q17:编写DAO

设计了DAO层,结构如下图:

dao层结构

StudentDao接口设计如下:

package com.semonx.jnshu.dao;

import com.semonx.jnshu.bean.StudentBean;

import java.util.List;

/**
* Created by Semon on 2017/4/24.
*/
public interface StudentDao {
   // 查询所有的学生
   public List<StudentBean> getAllStudent();

   // 通过qq号查询一个学生
   public StudentBean getStudentByQq(String qq);

   // 通过线上学习id查询一个学生
   public StudentBean getStudentByOnlineId(String onlineId);

   // 插入一个学生
   public void addStudent(StudentBean student);

   // 通过qq号删除一个学生
   public void deleteStudentByQq(String qq);

   // 通过线上学习id删除一个学生
   public void deleteStudentByOnlineId(String onlineId);

   // 通过qq号修改一个学生
   public void updateStudentByQq(String qq);

   // 通过线上学习id修改一个学生
   public void updateStudentByOnlineId(String onlineId);
}

StudentDaoImpl实现编写中,因为今天时间不多,没有看Spring的数据库部分,本来就打算用JDBC先写一下,然而因为Student类的成员太多,代码膨胀的太厉害,写不完了。明天看看Spring再写吧。

Q18:学习Junit,并尝试写自己的第一个单元测试

单元测试在我的第一个Maven工程中写过了,Junit主要内容就是@Test@Before@After这几个注解。还有就是测试方法和类的命名规范。

测试类的命名:类名+Test

测试方法的命名:test + 被测的方法名

@Before修饰的方法:setUp()

@After修饰的方法:tearDown()

Q19:学习Spring,配置Spring和Junit

Spring

使用spring最简单的方式是在pom.xml中添加Spring的依赖。建立依赖要了解Spring各个包的作用。

在建立Spring工程的时候,需要引入Spring的开发包,否则无法建立Spring的开发和运行环境,以下简单介绍一下Spring的核心开发包的基本用途:

  • Spring Core:包含Spring框架的基本核心工具类,Spring其他组件都需要使用这个包,是其他组件的基本核心。

  • Spring Beans:包含访问配置文件,创建和管理Bean以及进行控制反转和依赖注入操作相关的所有类。如果应用只需要基本的IOC和DI的支持的话,只需要引入Spring Core jar文件和Spring Bean jar文件即可。

  • Spring AOP:包含了使用Spring AOP特性时所需要的类,利用这个jar文件我们可以使用基于AOP的Spring特性。如声明性的事物管理,日志系统引入等等

  • Spring Context:这个jar文件为Spring的核心提供了大量扩展,能够找到使用Spring AppliContext特性时所需要的全部类,JNDI所需要的全部类,UI方面用来和模版引擎和校验方面的相关类。以上的就是Spring工程最核心也是最基础的开发包。接下来介绍Spring当中的业务组件包,在开发当中可以根据项目的情况酌情选择与项目相匹配的开发包来进行使用。

  • Spring Aspects:提供了对AspectJ的支持,以便方便的将面向方面的功能集成到IDE中。AspectJ是一个面向切面的框架,他扩展了JAVA语言。AspectJ定义了AOP语法,所以他有一个专门的编译器来生成JAVA字节规范的class文件。

  • Spring Context Support:这个开发包包含了支持缓存catch、JCA、JMX、邮件服务、任务计划等方面的这些所有类。

  • Spring Expression:是Spring表达式语言。Spring创建了一种新的方式用于配置对象的注入,他便是SPEL即Spring Expression Language。有别于传统的Spring静态配置,他支持在运行时操作和查询对象,其语法类似统一的EL语言。但是SPEL提供了额外的功能,具体功能会在后面的学习中给出。

  • Spring Framework Bom:他是用来在使用Maven时 确保所有的Spring模块都使用统一的版本。而Maven是基于对象模型,可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

  • Spring Instrument:提供了Spring对服务器的代理接口

  • Spring Instrument Tomcat:提供了Spring对Tomcat连接池的集成

  • Spring JDBC:包含了Spring对JDBC数据访问时进行封装的所有类。Spring提供了两种使用Spring JDBC API的最佳实践:1.以JDBC Template为核心的基于Template JDBC的使用方式。2.是在JDBC Template的基础之上构建的基于操作对象的JDBC 的使用方式。

  • Spring JMS:提供了对Spring JMS1.0和JMS1.1的支持类。Spring 的JMS抽象框架简化了JMS API的使用并与JMS的提供者平滑的继承。org.springframework.jms.core包提供了在Spring当中使用JMS的核心功能,他的模版类处理资源的创建和释放,简化了JMS的使用。

  • Spring orm:Spring对DAO特性进行了扩展,使其支持iBATIS 、JDO、OJB、TopLink,因为Hibernate已经独立成包了,所以不包含在这个包中了。 在使用这个包时必须同时包含sprin-dao.jar

  • Spring oxm:Spring对Object XML的映射支持,可以让JAVA与XML之间来回切换。这是Spring的一个新特性。OXM既是OXMapper,OX映射器这个概念并不新鲜,O代表Object ,X代表XML。他的目的是在JAVA和XML文档之间来回转换。

  • Spring Struts:提供了对Struts框架的支持,可以更方便更容易的集成Struts框架

  • Spring test:提供了对Junit等测试框架的简单封装,这让我们在对Spring的代码进行测试时更加方便和快捷。

  • Spring tx:即Spring transection,他为JDBC、Hibernate、JDO、JPA等提供了一致的声明式的编程式事物管理。

  • Spring web:包含web应用研发时用到Spring框架时所需要的的核心类。

  • Spring webmvc:包含了Spring webmvc框架相关的所有类。假如你的应用使用了独立的SpringMVC框架,则无须使用这个jar包。

  • Spring webmvc portlet:提供了对Spring MVC的增强,支持了portlet标准。Spring不仅支持传统的web开发,也支持JSR-168 portlet的开发。PortletMVC框架尽可能多的采用WEB MVC的框架,使相同的底层表现层抽象和整合技术。

所以,我们要在项目中包含spring-context。在pom.xml中添加依赖

<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-context</artifactId>
 <version>4.3.7.RELEASE</version>
</dependency>

Junit

这个没什么说的,依赖如下:

<dependency>
 <groupId>junit</groupId>
 <artifactId>junit</artifactId>
 <version>4.12</version>
 <scope>test</scope>
</dependency>  

Q20:编写单元测试的代码,并测试Dao

没能完成,已经没时间了。明天做吧。

Q21:查看日志,并转成Debug模式,练习调试

不知道这里说的是什么的日志。Debug模式不用练了,平常用的够多了。

明日计划

Spring东西挺多,明天主要看Spring的IOC和DI,还有数据库操作部分,暂停推进任务要求。好像Spring对JDBC有封装?反正明天找找办法,Impl的代码真的是膨胀的没法看了。

问题总结

  1. 1. 上班之后时间果然少了很多,也没办法好好看书了。
  2. 2. Spring估计要多花一些时间,估计明后就只看这个了。
  3. 3. 编写Impl的时候想到一个问题:我将报名帖的所有字段都设置成了非空了,StudentBean类的成员可以为空,insert的时候传进来StudentBean对象有空的成员该怎么处理?是在调用DAO层之前就做合法性检验,还是在DAO层中置为空串,又或者任由JDBC抛出异常,或者是别的我没想到的?
  4. 4. 对了,代码量大的情况下,怎么放日报里?



返回列表 返回列表
评论

    分享到