最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

結合Service層講解DAO層的異常處理操作

 更新時間:2021年06月07日 12:01:50   作者:南下尋  
這篇文章主要介紹了結合Service層講解DAO層的異常處理操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

domain:只是定義一個javabean。

dao:對于數(shù)據(jù)庫的操作,都放到dao層,也就是dao里面通常是對數(shù)據(jù)庫的增、刪、改、查等操作。

service:完成相應的業(yè)務邏輯處理,調(diào)用dao層。

(web)servlet:完成界面請求、對界面進行跳轉(zhuǎn)等等。servlet調(diào)用service層。

例子:

在domain包中,新建Xxx.java;在dao包中,新建IXxxDAO.java;在impl包中,新建XxxDAOImpl類;在test包中,新建XxxDAOTest.java,在XxxDAOImpl.java中編寫具體方法,核心步驟為“賈璉欲執(zhí)事”。

注:

①IXxxDAO.java為接口,在其中編寫需要使用的方法,主要是增(save)刪(delete)改(update)查(get&list–查詢?nèi)?。 ②Xxx.java中的變量均為私有,并且與數(shù)據(jù)庫中的列名,屬性相同。

J2EE三層架構:

令DaoException繼承RuntimeException, 處理異常的時候可以將其拋給Service層(UserService.java),如果要處理那么就try,catch,否則就令其報錯

用AOP捕捉 Service中調(diào)用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

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java中List排序的3種常見方法總結

    Java中List排序的3種常見方法總結

    在Java編程中List對象的排序是一個常見的需求,List接口提供了多種排序方法,這篇文章主要給大家介紹了關于Java中List排序的3種常見方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-08-08
  • vue2向springboot傳值接收不到的解決方法

    vue2向springboot傳值接收不到的解決方法

    本文主要介紹了vue2向springboot傳值接收不到的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • java求解漢諾塔問題示例

    java求解漢諾塔問題示例

    漢諾塔問題的描述如下:有3根柱子A、B和C,在A上從上往下按照從小到大的順序放著一些圓盤,以B為中介,把盤子全部移動到C上。移動過程中,要求任意盤子的下面要么沒有盤子,要么只能有比它大的盤子。編程實現(xiàn)3階漢諾塔的求解步驟
    2014-02-02
  • MyBatis結果映射(ResultMap)的使用

    MyBatis結果映射(ResultMap)的使用

    在MyBatis中,結果映射是實現(xiàn)數(shù)據(jù)庫結果集到Java對象映射的核心,它不僅支持簡單的字段映射,還能處理字段名不一致、嵌套對象和集合映射等復雜場景,通過ResultMap,開發(fā)者可以靈活定義映射關系,以適應各種需求,感興趣的可以了解一下
    2024-09-09
  • spring webflux自定義netty 參數(shù)解析

    spring webflux自定義netty 參數(shù)解析

    這篇文章主要介紹了spring webflux自定義netty 參數(shù)解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java8中Map的一些騷操作總結

    java8中Map的一些騷操作總結

    這篇文章主要給大家介紹了關于java8中Map的一些騷操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • springboot 配置文件配置項前綴為0的數(shù)字特殊處理方式

    springboot 配置文件配置項前綴為0的數(shù)字特殊處理方式

    這篇文章主要介紹了springboot 配置文件配置項前綴為0的數(shù)字特殊處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Spring?Retry實現(xiàn)重試機制的示例詳解

    Spring?Retry實現(xiàn)重試機制的示例詳解

    這篇文章主要為大家詳細介紹了Spring-Retry的用法以及實現(xiàn)原理是怎么樣的,文中的示例代碼講解詳細,具有一定的參考價值,需要的可以了解一下
    2023-07-07
  • Spring Boot參數(shù)校驗及分組校驗的使用教程

    Spring Boot參數(shù)校驗及分組校驗的使用教程

    在日常的開發(fā)中,參數(shù)校驗是非常重要的一個環(huán)節(jié),嚴格參數(shù)校驗會減少很多出bug的概率,增加接口的安全性,下面這篇文章主要給大家介紹了關于Spring Boot參數(shù)校驗及分組校驗使用的相關資料,需要的朋友可以參考下
    2021-08-08
  • Java使用Tesseract-Ocr識別數(shù)字

    Java使用Tesseract-Ocr識別數(shù)字

    這篇文章主要介紹了Java使用Tesseract-Ocr識別數(shù)字的方法,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下
    2021-04-04

最新評論

巴楚县| 镇康县| 麻江县| 侯马市| 望江县| 黄大仙区| 山丹县| 福贡县| 金秀| 三门县| 玉门市| 新兴县| 嘉黎县| 会泽县| 绵阳市| 平潭县| 即墨市| 辛集市| 尉氏县| 灌阳县| 新昌县| 双峰县| 白水县| 武清区| 西城区| 深泽县| 贵阳市| 湛江市| 合川市| 北流市| 金川县| 株洲市| 东阳市| 佳木斯市| 滁州市| 嘉定区| 浪卡子县| 手游| 新营市| 临洮县| 聂荣县|