스프링 의존성 주입
어떠한 빈(Bean)에 생성자가 오직 하나만 있고, 생성자의 파라미터 타입이 빈으로 등록 가능한 존재라면 이 빈은 @Autowired 없이도 의존성 주입이 가능
<Controller 코드 예시>
package com.test.demo;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
@RequiredArgsConstructor
public class userController {
private final userService userService;
// 회원가입을 할 수 있는 API...
@PostMapping("/join")
public String join(@RequestBody userDto userInfo) {
String userId = userService.join(userInfo);
return userId;
}
// 회원가입된 유저중에 특정 유저 찾음
@GetMapping("/find")
public String findUser(@RequestParam String id) {
String result = userService.findUser(id);
if (result == null) {
return "error";
}
return result;
}
}
package com.test.demo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class userService {
private final userDao userDao;
// 회원가입된 유저중에 특정 유저 찾기
public String findUser(String id) {
return userDao.select(id);
}
// 회원가입
public String join(userDto userInfo) {
String key = userInfo.getId();
String value = userInfo.getUserName();
return userDao.insert(key, value); // key 값 리턴됨
}
}
<DAT 코드 예시>
package com.test.demo;
import org.springframework.stereotype.Repository;
import java.util.HashMap;
import java.util.Map;
@Repository
public class userDao {
private static Map<String, String> userDb = new HashMap<>();
public String insert(String key, String value) {
userDb.put(key, value);
System.out.println("key : " + key);
System.out.println("value : " + value);
return key;
}
public String select(String key) {
System.out.println(userDb);
return userDb.get(key);
}
}
<DTO 코드 예시>
package com.test.demo;
import lombok.*;
import org.springframework.lang.Nullable;
@Getter
@Setter
// @RequiredArgsConstructor
@Builder
@NoArgsConstructor
public class userDto {
@NonNull
private String id;
@NonNull
private String userName;
// @Builder
public userDto(String id, String userName) {
this.id = id;
this.userName = userName;
}
}
참고
최고에용