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. 依赖注入:通过构造函数注入

相关推荐
我命由我1234519 分钟前
Java 并发编程 - Delay(Delayed 概述、Delayed 实现、Delayed 使用、Delay 缓存实现、Delayed 延迟获取数据实现)
java·开发语言·后端·缓存·java-ee·intellij-idea·intellij idea
HLJ洛神千羽19 分钟前
C++程序设计实验(黑龙江大学)
开发语言·c++·软件工程
北城以北888819 分钟前
SSM--MyBatis框架之缓存
java·缓存·intellij-idea·mybatis
kyle~25 分钟前
算法数学---差分数组(Difference Array)
java·开发语言·算法
曹牧25 分钟前
C#:三元运算符
开发语言·c#
曹朋羽30 分钟前
Spring EL 表达式
java·spring·el表达式
Jonathan Star43 分钟前
MediaPipe 在Python中实现人体运动识别,最常用且高效的方案是结合**姿态估计**(提取人体关键点)和**动作分类**(识别具体运动)
开发语言·python·分类
滨HI01 小时前
C++ opencv拟合直线
开发语言·c++·opencv
沐浴露z1 小时前
详解JDK21新特性【虚拟线程】
java·开发语言·jvm
艾莉丝努力练剑1 小时前
【C++:红黑树】深入理解红黑树的平衡之道:从原理、变色、旋转到完整实现代码
大数据·开发语言·c++·人工智能·红黑树