首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Spring MVC 三層架構(Controller-Service-DAO)完整示例代碼

     編輯:程式設計綜合問答

項目結構

src/main/java
├── controller
│   └── UserController.java
├── service
│   ├── UserService.java
│   └── impl
│       └── UserServiceImpl.java
├── dao
│   ├── UserDao.java
│   └── impl
│       └── UserDaoImpl.java
├── entity
│   └── User.java
└── config
    └── SpringConfig.java

核心代碼示例

1. 實體類

public class User {
    private Long id;
    private String username;
    private String password;
    // getter/setter/toString 省略
}

2. DAO 層

@Repository
public interface UserDao {
    void save(User user);
    User findById(Long id);
    List findAll();
}

@Repository
public class UserDaoImpl implements UserDao {
    @Autowired private JdbcTemplate jdbcTemplate;
    
    public void save(User user) {
        String sql = "INSERT INTO users(username,password) VALUES(?,?)";
        jdbcTemplate.update(sql, user.getUsername(), user.getPassword());
    }
    // 其他方法省略
}

3. Service 層

public interface UserService {
    void register(User user);
    User getUser(Long id);
}

@Service
@Transactional
public class UserServiceImpl implements UserService {
    @Autowired private UserDao userDao;
    
    public void register(User user) {
        // 業務校驗
        if (userDao.findByUsername(user.getUsername()) != null) {
            throw new RuntimeException("用戶已存在");
        }
        userDao.save(user);
    }
    // 其他方法省略
}

4. Controller 層

5. Spring 配置 (Java Config)

關鍵點總結

  • 分層職責:Controller 接收請求/響應視圖,Service 封裝業務邏輯/事務,DAO 專注數據訪問。
  • 依賴倒置:上層依賴接口,實現類可替換,便於測試與擴展。
  • 事務邊界:在 Service 方法或類上加 @Transactional,保證業務原子性。
  • 異常處理:Controller 捕獲 Service 異常轉為用戶友好提示,避免堆棧信息洩露。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved