1、@Autowired 注入为null的解决方法
- 使用springboot中的
JPA
方法来和mysql数据库websocket_db
进行连接
@Repository
public interface SellerRepository extends JpaRepository<Seller, Integer> {
}
- 在这个
websocket
的连接中发现SellerRepository
注入值为null
:
- 但是,我在测试类中已经该接口进行测试了,发现该接口可以获取数据,因此,我的猜想时,
WebSocketServer
中某些类或方法的使用加载顺序高于SellerRepository
,SellerRepository
还没有注入的情况下就被获取使用。
@SpringBootTest
public class SellerRepositoryTest {
@Autowired
private SellerRepository sellerRepository;
@Test
void findAll() {
List<Seller> all = sellerRepository.findAll();
System.out.println(all);
}
}
2、JSON字符串和对象理解不清
-
下面是一些
JSON
的学习链接,读者可以参考以帮助理解
JSONObject/JSONArray的使用介绍
JSON.parseObject(String str)和JSON.toJSONString()的区别 -
按照作者提供的
vision-project\koa_server
方法,书写springboot
代码,进而和前端接口对接,在原来代码中,返回数据格式如下:
{
"action":"getData",
"socketType":"sellerData",
"chartName":"seller",
"value":"",
"data":"[{\n \"name\": \"商家1\",\n \"value\": 99\n}, {\n \"name\": \"商家2\",\n \"value\": 102\n}, {\n \"name\": \"商家3\",\n \"value\": 83\n}, {\n \"name\": \"商家4\",\n \"value\": 49\n}, {\n \"name\": \"商家5\",\n \"value\": 200\n}, {\n \"name\": \"商家6\",\n \"value\": 152\n}, {\n \"name\": \"商家7\",\n \"value\": 76\n}, {\n \"name\": \"商家8\",\n \"value\": 23\n}, {\n \"name\": \"商家9\",\n \"value\": 87\n}, {\n \"name\": \"商家10\",\n \"value\": 223\n}, {\n \"name\": \"商家11\",\n \"value\": 145\n}, {\n \"name\": \"商家12\",\n \"value\": 187\n},{\n \"name\": \"商家13\",\n \"value\": 127\n},{\n \"name\": \"商家14\",\n \"value\": 57\n},{\n \"name\": \"商家15\",\n \"value\": 99\n}]"
}
在data
这一个数据里面包含着许多字符\n
,并且在data
后面("data":"[{\n
)还包含一个"
字符,说明这里是一个字符串,在我书写代码中返回的数据格式如下:
{
"socketType":"sellerData",
"chartName":"seller",
"data":[
{
"name":"商家1",
"value":99
},
{
"name":"商家2",
"value":102
},
{
"name":"商家3",
"value":83
},
{
"name":"商家4",
"value":49
},
{
"name":"商家5",
"value":200
},
{
"name":"商家6",
"value":152
},
{
"name":"商家7",
"value":76
},
{
"name":"商家8",
"value":23
},
{
"name":"商家9",
"value":87
},
{
"name":"商家10",
"value":223
},
{
"name":"商家11",
"value":145
},
{
"name":"商家12",
"value":187
},
{
"name":"商家13",
"value":127
},
{
"name":"商家14",
"value":57
},
{
"name":"商家15",
"value":99
}
],
"action":"getData",
"value":""
}
- 在这里,我采用的代码如下,导致前端无法解析后端返回的字符串。
payload.put("data", sellerVos);
- 正确书写方式如下:
payload.put("data", JSON.toJSONString(sellerVos));
此时,获取到的数据格式如下,前端能够正确解析:
{
"socketType":"sellerData",
"chartName":"seller",
"data":"[{\"name\":\"商家1\",\"value\":99},{\"name\":\"商家2\",\"value\":102},{\"name\":\"商家3\",\"value\":83},{\"name\":\"商家4\",\"value\":49},{\"name\":\"商家5\",\"value\":200},{\"name\":\"商家6\",\"value\":152},{\"name\":\"商家7\",\"value\":76},{\"name\":\"商家8\",\"value\":23},{\"name\":\"商家9\",\"value\":87},{\"name\":\"商家10\",\"value\":223},{\"name\":\"商家11\",\"value\":145},{\"name\":\"商家12\",\"value\":187},{\"name\":\"商家13\",\"value\":127},{\"name\":\"商家14\",\"value\":57},{\"name\":\"商家15\",\"value\":99}]",
"action":"getData",
"value":""
}
- 前端页面的返回结果为:
![](https://i-blog.csdnimg.cn/blog_migrate/b0e1252058cf4e2e9080cbad947eb388.png)