版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq78442761/article/details/87938729
目录
从Spring Initializr上下载项目
在Search for dependencies上选择Reactive Web
下载好后用IDEA打开
补充first-app-demo中的代码
这里首先看下FirstAppDemoApplication.java
package com.MyFirst.firstappdemo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class FirstAppDemoApplication {
public static void main(String[] args) {
SpringApplication.run(FirstAppDemoApplication.class, args);
}
}
从此处可以得到一些感悟!
这些好的框架在main函数里面都很简单,Qt也是如此。
随后新建3个包:
分别为controller,domain,repository标准的MVC。
代码分别如下:
UserController.java
package com.MyFirst.firstappdemo.controller;
import com.MyFirst.firstappdemo.domain.User;
import com.MyFirst.firstappdemo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
//构造器注入方式把对象放进来,Spring框架进行传递
private final UserRepository userRepositroy;
@Autowired
public UserController(UserRepository userRepository){
this.userRepositroy = userRepository;
}
@PostMapping("/person/save")
public User save(@RequestParam String name){
User user = new User();
user.setName(name);
if(userRepositroy.save(user)){
System.out.printf("用户对象:%s保存成功!\n", user);
}
return user; //把user返回给客户端
}
}
User.java
package com.MyFirst.firstappdemo.domain;
/***
* 用户模型
*/
public class User {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
UserRepository.java
package com.MyFirst.firstappdemo.repository;
import com.MyFirst.firstappdemo.domain.User;
import org.springframework.stereotype.Repository;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicInteger;
/**
* {@link User} {@link Repository}
*/
@Repository
public class UserRepository {
/**
* 采用内存型的存储方式 Map
*/
private final ConcurrentMap<Integer, User> repository = new ConcurrentHashMap<>();
private final static AtomicInteger idGenerator = new AtomicInteger();
/**
* 保存用户对象
* @param user {@link User}
* @return 如果保存成功,返回<code>true</code>
* 否则返回<code>false</code>
*/
public boolean save(User user){
//ID从1开始
Integer id = idGenerator.incrementAndGet();
user.setId(id);
return repository.put(id, user) == null;
}
}
运行及现象
这里使用telnet去操作,输入如下命令
POST /person/save?name=xiaoHong HTTP/1.1
Host: localhost
运行截图如下:
此时IDEA中的打印: