前提
下記記事を参考にredisに対してsample dataをpost/getできるようなサンプルアプリを構築しようとしております
https://qiita.com/yut_arrows/items/07eabf48235d04331f9e
実現したいこと
下記サンプルコードがあるのですが、コンパイルエラーが出ます
import文が足りてないと思うのですが、何を追加すれば良いのかご教示頂けますと幸いです
java
1@Data 2@Getter 3@Setter 4class RedisSampleData { 5 6 private String string; 7 8 private List<String> list; 9 10 private Map<String, String> map; 11 12}
java
1@RestController 2@RequestMapping(value = "/SampleRedis") 3public class RedisSampleController { 4 5 @Autowired 6 private StringRedisTemplate redisTemplate; 7 8 @PostMapping 9 public void post(@RequestBody RedisSampleData redisSampleData) { 10 redisTemplate.delete("redis-tutorial:string"); 11 redisTemplate.opsForValue() 12 .set("redis-tutorial:string", redisSampleData.getString()); 13 redisTemplate.delete("redis-tutorial:list"); 14 redisTemplate.opsForList() 15 .rightPushAll("redis-tutorial:list", 16 redisSampleData.getList().toArray(new String[0])); 17 redisTemplate.delete("redis-tutorial:map"); 18 redisTemplate.opsForHash() 19 .putAll("redis-tutorial:map", redisSampleData.getMap()); 20 } 21 22 @GetMapping 23 public RedisSampleData get() { 24 RedisSampleData redisSampleData = new RedisSampleData(); 25 redisSampleData.setString( 26 redisTemplate.opsForValue() 27 .get("redis-tutorial:string") 28 ); 29 redisSampleData.setList( 30 redisTemplate.opsForList() 31 .range("redis-tutorial:list", 0, -1) 32 ); 33 redisSampleData.setMap( 34 redisTemplate.<String, String>opsForHash() 35 .entries("redis-tutorial:map") 36 ); 37 return redisSampleData; 38 } 39}
(追記)
IDEは使用しておらずGradleを使ってビルドをしました。
build.gradleファイルの中身は下記です。
参照元のqiita記事にあるbuild.gradleファイルの中身だとcompileメソッドがないとエラーが出ましたので、Springのinitializerを使って作成したbuild.gradleの中身をそのまま持ってきております。
build.gradle
1plugins { 2 id 'org.springframework.boot' version '2.7.4' 3 id 'io.spring.dependency-management' version '1.0.14.RELEASE' 4 id 'java' 5} 6 7group = 'com.example' 8version = '0.0.1-SNAPSHOT' 9sourceCompatibility = '1.8' 10 11repositories { 12 mavenCentral() 13} 14 15dependencies { 16 implementation 'org.springframework.boot:spring-boot-starter-data-redis' 17 implementation 'org.springframework.boot:spring-boot-starter-web' 18 testImplementation 'org.springframework.boot:spring-boot-starter-test' 19} 20 21tasks.named('test') { 22 useJUnitPlatform() 23}
試したこと
import java.util.List;
import java.util.Map;
import lombok.Data;
import org.springframework.data.redis.core;
import org.springframework.context.annotation;
を追加しましたが、
RedisSampleData.java:4: error: package lombok does not exist
import lombok.Data;
や、
java:6: error: cannot find symbol
@Data
^
symbol: class Data
といったエラーが出てしまいます…。
(追記)
エラー全文はこちらです。
java
1> Task :compileJava FAILED 2/src/main/java/RedisSampleData.java:4: error: package lombok does not exist 3import lombok.Data; 4 ^ 5/src/main/java/RedisSampleData.java:6: error: cannot find symbol 6@Data 7 ^ 8 symbol: class Data 9/src/main/java/RedisSampleData.java:7: error: cannot find symbol 10@Getter 11 ^ 12 symbol: class Getter 13/src/main/java/RedisSampleData.java:8: error: cannot find symbol 14@Setter 15 ^ 16 symbol: class Setter 17/src/main/java/RedisSampleController.java:3: error: cannot find symbol 18import org.springframework.data.redis.core; 19 ^ 20 symbol: class core 21 location: package org.springframework.data.redis 22/src/main/java/RedisSampleController.java:4: error: cannot find symbol 23import org.springframework.context.annotation; 24 ^ 25 symbol: class annotation 26 location: package org.springframework.context 27/src/main/java/RedisSampleController.java:6: error: cannot find symbol 28@RestController 29 ^ 30 symbol: class RestController 31/src/main/java/RedisSampleController.java:7: error: cannot find symbol 32@RequestMapping(value = "/SampleRedis") 33 ^ 34 symbol: class RequestMapping 35/src/main/java/RedisSampleController.java:11: error: cannot find symbol 36 private StringRedisTemplate redisTemplate; 37 ^ 38 symbol: class StringRedisTemplate 39 location: class RedisSampleController 40/src/main/java/RedisSampleController.java:10: error: cannot find symbol 41 @Autowired 42 ^ 43 symbol: class Autowired 44 location: class RedisSampleController 45/src/main/java/RedisSampleController.java:14: error: cannot find symbol 46 public void post(@RequestBody RedisSampleData redisSampleData) { 47 ^ 48 symbol: class RequestBody 49 location: class RedisSampleController 50/src/main/java/RedisSampleController.java:13: error: cannot find symbol 51 @PostMapping 52 ^ 53 symbol: class PostMapping 54 location: class RedisSampleController 55/src/main/java/RedisSampleController.java:27: error: cannot find symbol 56 @GetMapping 57 ^ 58 symbol: class GetMapping 59 location: class RedisSampleController 60/src/main/java/RedisSampleController.java:17: error: cannot find symbol 61 .set("redis-tutorial:string", redisSampleData.getString()); 62 ^ 63 symbol: method getString() 64 location: variable redisSampleData of type RedisSampleData 65/src/main/java/RedisSampleController.java:21: error: cannot find symbol 66 redisSampleData.getList().toArray(new String[0])); 67 ^ 68 symbol: method getList() 69 location: variable redisSampleData of type RedisSampleData 70/src/main/java/RedisSampleController.java:24: error: cannot find symbol 71 .putAll("redis-tutorial:map", redisSampleData.getMap()); 72 ^ 73 symbol: method getMap() 74 location: variable redisSampleData of type RedisSampleData 7516 errors 76
そもそもアノテーションを使用する際はimportが必要なのでしょうか?ビルドファイル(gradle,buildやpom.xmlに記載すればいいのかと思ってました)import必要だとして、org.springframework.context.annotationが必要と言っているものや、lombokが必要と言っているものがあり、(手元ではどちらも失敗しており)恥ずかしながら混乱しております、、