通过javamain方法访问Controller

http://blog.csdn.net/lhwww/article/details/52698878
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面给一个简单的案例。 假设我们有两个Spring Boot项目,分别是A项目和B项目。现在我们要实现A项目调用B项目中的UserController的getUserInfo方法。 首先,在B项目中定义一个UserController,如下: ```java @RestController @RequestMapping("/user") public class UserController { @GetMapping("/{userId}") public User getUserInfo(@PathVariable String userId) { // 根据userId查询用户信息 User user = new User(); user.setUserId(userId); user.setUserName("张三"); user.setAge(20); return user; } } ``` 这个Controller的作用是根据userId查询用户信息。 接下来,在A项目中定义一个类,用于向B项目发送请求并获取响应。我们可以使用Java自带的Socket类来实现。 ```java public class SocketClient { public static void main(String[] args) throws IOException { // 连接B项目的Socket服务器 Socket socket = new Socket("127.0.0.1", 8888); // 发送请求 String request = "{\"action\": \"getUserInfo\", \"params\": {\"userId\": \"123\"}}"; OutputStream outputStream = socket.getOutputStream(); outputStream.write(request.getBytes()); outputStream.flush(); // 接收响应 InputStream inputStream = socket.getInputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len; while ((len = inputStream.read(buffer)) != -1) { baos.write(buffer, 0, len); } String response = baos.toString(); System.out.println(response); // 关闭资源 baos.close(); inputStream.close(); outputStream.close(); socket.close(); } } ``` 这个类的作用是向B项目发送一个请求,请求B项目中的UserController的getUserInfo方法,并将响应打印出来。 最后,在B项目中定义一个类,用于监听A项目的请求并调用UserController的相应方法。 ```java public class SocketServer { public static void main(String[] args) throws IOException { // 启动Socket服务器 ServerSocket serverSocket = new ServerSocket(8888); while (true) { // 监听客户端的连接 Socket socket = serverSocket.accept(); // 处理请求 new Thread(() -> { try { InputStream inputStream = socket.getInputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len; while ((len = inputStream.read(buffer)) != -1) { baos.write(buffer, 0, len); } String request = baos.toString(); // 解析请求 JSONObject jsonObject = JSONObject.parseObject(request); String action = jsonObject.getString("action"); JSONObject params = jsonObject.getJSONObject("params"); // 调用UserController方法 if ("getUserInfo".equals(action)) { String userId = params.getString("userId"); UserController userController = new UserController(); User user = userController.getUserInfo(userId); // 封装响应 String response = JSON.toJSONString(user); OutputStream outputStream = socket.getOutputStream(); outputStream.write(response.getBytes()); outputStream.flush(); // 关闭资源 outputStream.close(); } baos.close(); inputStream.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } }).start(); } } } ``` 这个类的作用是启动一个Socket服务器,监听A项目的请求,并根据请求调用UserController的相应方法,并将处理结果封装成响应发送给A项目。 这样,当我们运行SocketClient类时,就可以从B项目中的UserController获取到用户信息,并将信息打印出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值