创建项目
当前使用的是IDEA2025.3.1版本
创建新项目:
2025.3.1的版本无法选择Java8,可以把最上面的Service URL改成
start.aliyun.com
然后最开始选择Spring Web即可
创建完毕之后目录应该是酱子的:
结构
com.zsgctest.demo.web是在初始化的时候自己定义的,这是一个包packageBasicController这是一个controller,里面放一些负责处理用户请求的方法,调用相应的服务层方法处理业务逻辑,并将结果返回给视图层展示。
我的理解是写一些方法,然后入参和方法类型不同,并用对应的mapping注解,来做对应的CURD操作
这是当前无sql的模拟CURD操作代码
package com.zsgctest.demo.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.*;
/**
* @author <a href="mailto:chenxilzx1@gmail.com">theonefx</a>
*/
@Controller
@RestController
// @RequestMapping("/users") 这里如果加上这个,那么下面的所有路由均在users下面访问
public class BasicController {
// http://127.0.0.1:8080/hello?name=lisi
@RequestMapping("/hello")
@ResponseBody
public String hello(@RequestParam(name = "name", defaultValue = "unknown user") String name) {
return "Hello " + name;
}
// 创建线程安全的Map,模拟users信息的存储
static Map<Long, User> users = Collections.synchronizedMap(new HashMap<Long, User>());
// 创建一个post的请求
@PostMapping("/")
public String postUser(@RequestBody User user) {
// @RequestBody注解用来绑定通过http请求中application/json类型上传的数据
users.put(user.getId(), user);
return "success";
}
// 创建一个查询接口
@GetMapping("/users")
public List<User> getUsers() {
// 还可以通过@RequestParam从页面中传递参数来进行查询条件或者翻页信息的传递
List<User> r = new ArrayList<User>(users.values());
return r;
}
// 创建一个getUser的请求
@GetMapping("/user/{id}")
public User getUser(@PathVariable long id) {
// url中的id可通过@PathVariable绑定到函数的参数中
return users.get(id);
}
// 修改user
@PutMapping("/user/{id}")
public String putUser(@PathVariable long id, @RequestBody User user) {
User u = users.get(id);
u.setName(user.getName());
u.setAge(user.getAge());
users.put(id, u);
return "success";
}
// 根据id删除user
@DeleteMapping("/user/{id}")
public String deleteUser(@PathVariable long id) {
users.remove(id);
return "success";
}
}
我们创建了一个名为BasicController的类,并用@Controller注释标记它。然后,我们用@RequestMapping("/hello")注释类中方法,指定路由路径。在hello()方法上,我们用@GetMapping注释指定HTTP GET请求的路径。最后,我们用@ResponseBody注释指定返回的字符串直接写入HTTP响应体。
这个Controller会响应对"/hello"路径的GET请求,并返回对应字符串。
DemoApplication
这是一个主类,里面存放main方法,是一个起点
package com.zsgctest.demo.web;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/*
* SpringBootApplication是一个组合注解
* 包含了@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan三个注解。它通常放在应用程序的主类上。
* @SpringBootConfiguration:继承自@Configuration,指示这个类包含一个或多个@Bean方法,并且可以由Spring进行配置。
* @EnableAutoConfiguration:启用Spring Boot的自动配置功能,它尝试根据你的类路径和你的beans自动配置你的Spring应用程序。
* @ComponentScan:Spring会自动扫描该类所在的包下的controller、service、repository等组件,标注在类上,会在Spring容器中注册为Bean。
*/
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
3. User
这是定义数据的方法,此处使用了lombok的data注解,可以不用写get和set方法
package com.zsgctest.demo.web;
import lombok.Data;
/**
* @author <a href="mailto:chenxilzx1@gmail.com">theonefx</a>
*/
@Data
public class User {
private String name;
private Integer age;
private Long id;
}
这三个文件中均使用了
package com.zsgctest.demo.web应该是表明这是一个包的范围
application.properties
此处暂时只是定义了端口,应该还有更多可以定义的东西~
pom.xml
这应该是maven的依赖文件定义的地方~
我在此处增加了lombok的引用
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
通过刷新maven,然后可以在DemoApplication中运行项目,使用localhost:8080进入项目.