java第一个接口

1.环境准备

  • JDK 17 (Spring Boot 3.x要求)

  • Maven 3.8+

  • IDE (IntelliJ IDEA或VS Code)

2.创建Spring Boot项目

使用Spring Initializr (https://start.spring.io/) 创建项目,选择以下依赖:

  • Spring Web (Spring MVC)

  • Spring Data JPA

  • H2 Database (内存数据库,适合示例)

  • Lombok (简化代码)

3.项目结构

复制代码
src/
├── main/
│   ├── java/
│   │   └── com/
│   │       └── example/
│   │           └── demo/
│   │               ├── DemoApplication.java
│   │               ├── controller/
│   │               │   └── UserController.java
│   │               ├── model/
│   │               │   └── User.java
│   │               ├── repository/
│   │               │   └── UserRepository.java
│   │               └── service/
│   │                   └── UserService.java
│   └── resources/
│       ├── application.properties
│       └── data.sql

4.编写代码

实体类 (User.java)

java 复制代码
package com.example.demo.model;

import jakarta.persistence.*;
import lombok.*;

@Entity
@Table(name = "users")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(nullable = false)
    private String name;
    
    @Column(unique = true, nullable = false)
    private String email;
}

仓库接口 (UserRepository.java)

java 复制代码
package com.example.demo.repository;

import com.example.demo.model.User;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
}

服务层 (UserService.java)

java 复制代码
package com.example.demo.service;

import com.example.demo.model.User;
import com.example.demo.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
@RequiredArgsConstructor
public class UserService {
    private final UserRepository userRepository;
    
    public List<User> getAllUsers() {
        return userRepository.findAll();
    }
    
    public User createUser(User user) {
        return userRepository.save(user);
    }
    
    public User getUserById(Long id) {
        return userRepository.findById(id)
                .orElseThrow(() -> new RuntimeException("User not found"));
    }
}

控制器 (UserController.java)

java 复制代码
package com.example.demo.controller;

import com.example.demo.model.User;
import com.example.demo.service.UserService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/users")
@RequiredArgsConstructor
public class UserController {
    private final UserService userService;
    
    @GetMapping
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }
    
    @PostMapping
    public User createUser(@RequestBody User user) {
        return userService.createUser(user);
    }
    
    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
        return userService.getUserById(id);
    }
}

配置文件 (application.properties)

复制代码
# 启用H2控制台
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console

# 数据库配置
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=

# JPA配置
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.format_sql=true

初始化数据 (data.sql)

sql 复制代码
INSERT INTO users (name, email) VALUES 
('张三', 'zhangsan@example.com'),
('李四', 'lisi@example.com');

5.运行和测试

  1. 启动应用:运行DemoApplication.java中的main方法

  2. 访问H2控制台:http://localhost:8080/h2-console

    • JDBC URL: jdbc:h2:mem:testdb

    • User Name: sa

    • Password: (空)

  3. 测试API:

特性:

  1. Spring Boot 3:最新的Spring框架版本

  2. Jakarta EE 9+:取代了旧的javax包

  3. Lombok:减少样板代码

  4. H2内存数据库:快速开发测试

  5. RESTful风格API:符合现代API设计规范

  6. 分层架构:Controller-Service-Repository

  7. 依赖注入:通过构造函数注入

相关推荐
开开心心就好6 分钟前
AI人声伴奏分离工具,离线提取伴奏K歌用
java·linux·开发语言·网络·人工智能·电脑·blender
Never_Satisfied10 分钟前
在JavaScript / HTML中,关于querySelectorAll方法
开发语言·javascript·html
80530单词突击赢19 分钟前
JavaWeb进阶:SpringBoot核心与Bean管理
java·spring boot·后端
3GPP仿真实验室34 分钟前
【Matlab源码】6G候选波形:OFDM-IM 增强仿真平台 DM、CI
开发语言·matlab·ci/cd
devmoon37 分钟前
在 Polkadot 上部署独立区块链Paseo 测试网实战部署指南
开发语言·安全·区块链·polkadot·erc-20·测试网·独立链
lili-felicity38 分钟前
CANN流水线并行推理与资源调度优化
开发语言·人工智能
爬山算法38 分钟前
Hibernate(87)如何在安全测试中使用Hibernate?
java·后端·hibernate
沐知全栈开发38 分钟前
CSS3 边框:全面解析与实战技巧
开发语言
island13141 小时前
CANN GE(图引擎)深度解析:计算图优化管线、内存静态规划与异构 Stream 调度机制
c语言·开发语言·神经网络
云姜.1 小时前
线程和进程的关系
java·linux·jvm