结合Service层讲解DAO层的异常处理操作

 更新时间:2021年6月7日 15:01  点击:1704

domain:只是定义一个javabean。

dao:对于数据库的操作,都放到dao层,也就是dao里面通常是对数据库的增、删、改、查等操作。

service:完成相应的业务逻辑处理,调用dao层。

(web)servlet:完成界面请求、对界面进行跳转等等。servlet调用service层。

例子:

在domain包中,新建Xxx.java;在dao包中,新建IXxxDAO.java;在impl包中,新建XxxDAOImpl类;在test包中,新建XxxDAOTest.java,在XxxDAOImpl.java中编写具体方法,核心步骤为“贾琏欲执事”。

注:

①IXxxDAO.java为接口,在其中编写需要使用的方法,主要是增(save)删(delete)改(update)查(get&list–查询全部)。 ②Xxx.java中的变量均为私有,并且与数据库中的列名,属性相同。

J2EE三层架构:

令DaoException继承RuntimeException, 处理异常的时候可以将其抛给Service层(UserService.java),如果要处理那么就try,catch,否则就令其报错

用AOP捕捉 Service中调用Dao的异常

PersonDao和PersonDaoImpl,并在PersonDaoImpl中制造异常

public interface PersonDao {
 public void savePerson();
 public void updatePerson();
}
public class PersonDaoImpl implements PersonDao {
 
 public void savePerson() {
  int a = 1/0;
 }
 
 public void updatePerson() {
  Long.parseLong("aaa");
 }
 
}

目标类和目标方法

public interface PersonService {
 void savePerson();
 void updatePerson();
}
public class PersonServiceImpl implements PersonService {
 
 private PersonDao personDao;//在这里选择set方式在spring的配置文件中进行注入
 
 public PersonDao getPersonDao() {
  return personDao;
 }
 public void setPersonDao(PersonDao personDao) {
  this.personDao = personDao;
 }
 public void savePerson() {
  personDao.savePerson();
 }
 public void updatePerson() {
  personDao.updatePerson();
 }
}

切面(定义一个异常类和异常方法)

public class Exception {
 
 /**
  * 这是一个异常通知
  */
 public void exceptionMethod(JoinPoint joinPoint,Throwable ex){
  System.out.println(ex.getMessage());
 }
 
}

配置文件

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
       xmlns:aop="http://www.springframework.org/schema/aop"  
       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-2.5.xsd  
           http://www.springframework.org/schema/aop   
           http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">  
          
    <bean id="personDao" class="com.mo.dao.PersonDaoImpl"></bean>     
    
    <bean id="personService" class="com.mo.service.PersonServiceImpl">
     <!-- 用set方法注入 -->
     <property name="personDao" ref="personDao"></property>
    </bean>  
    
    <bean id="Exception" class="com.mo.exception.Exception"></bean>
      
    <aop:config>  
        <!-- 切入点表达式,确定目标类 -->  
        <aop:pointcut   
            expression="execution(* com.mo.service.PersonServiceImpl.*(..))"   
            id="perform"/>  
              
        <!-- ref指向的对象就是切面 -->  
        <aop:aspect ref="Exception">  
             <aop:after-throwing method="exceptionMethod" pointcut-ref="perform" throwing="ex"/>  
        </aop:aspect>  
    </aop:config>  
</beans>

单元测试类

@Test
public void test(){
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");  
        PersonService personService = (PersonService)context.getBean("personService");
        personService.savePerson();
}

输出

/ by zero

以上为个人经验,希望能给大家一个参考,也希望大家多多支持猪先飞。

[!--infotagslink--]

相关文章

  • c# 三种方法调用WebService接口

    这篇文章主要介绍了c# 三种方法调用WebService接口的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-07
  • C#使用Http Post方式传递Json数据字符串调用Web Service

    这篇文章主要为大家详细介绍了C#使用Http Post方式传递Json数据字符串调用Web Service,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • c#动态调用Webservice的两种方法实例

    这篇文章介绍了c#动态调用Webservice的两种方法实例,有需要的朋友可以参考一下...2020-06-25
  • c#中WebService的介绍及调用方式小结

    这篇文章主要给大家介绍了关于c#中的WebService及其调用方式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • Python同时处理多个异常的方法

    这篇文章主要介绍了Python同时处理多个异常的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-29
  • Angular处理未可知异常错误的方法详解

    这篇文章主要给大家介绍了关于Angular如何处理未可知异常错误的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-17
  • DTO 实现 service 和 controller 之间值传递的操作

    这篇文章主要介绍了DTO 实现 service 和 controller 之间值传递的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
  • java中的空指针异常情况以及解决方案

    这篇文章主要介绍了java中的空指针异常情况以及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-02
  • 浅谈PHP调用Webservice思路及源码分享

    方法一:直接调用复制代码 代码如下:<? /******************************************************************************/ /* 文件名 : soapclient.php /* 说 明 : WebService接口客户端例程 /****************...2014-06-07
  • C# 创建、部署和调用WebService简单示例

    这篇文章主要为大家详细介绍了C# 创建、部署和调用WebService的简单示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • 详解C#编程中异常的创建和引发以及异常处理

    这篇文章主要介绍了C#编程中异常的创建和引发以及异常处理,文中介绍了Catch块和Finally块等基本的异常处理要点,需要的朋友可以参考下...2020-06-25
  • Java接口DAO模式代码原理及应用详解

    这篇文章主要介绍了Java接口DAO模式代码原理及应用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-03
  • C# Soap调用WebService的实例

    下面小编就为大家带来一篇C# Soap调WebService的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
  • c#动态改变webservice的url访问地址

    这篇文章主要介绍了c#动态改变webservice的url访问地址,需要的朋友可以参考下...2020-06-25
  • Spring boot 无法注入service问题

    这篇文章主要介绍了Spring boot 无法注入service问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-09
  • MyBatis在DAO层定义接口返回类型泛型无效的解决

    这篇文章主要介绍了MyBatis在DAO层定义接口返回类型泛型无效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-31
  • WebService 的简单封装接口调用方法

    这篇文章主要介绍了WebService 的简单封装接口调用方法,主要是通过简单的sql语句来查询数据库,从而返回dataset,十分简单实用,有需要的小伙伴可以参考下。...2020-06-25
  • JAVA调用SAP WEBSERVICE服务实现流程图解

    这篇文章主要介绍了JAVA调用SAP WEBSERVICE服务实现流程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-10-11
  • Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.Transformer异常

    这篇文章主要介绍了Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-10
  • Spring异常捕获且回滚事务解决方案

    这篇文章主要介绍了Spring异常捕获且回滚事务解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-03