@Autowired, ResultSet, ๊ทธ๋ฆฌ๊ณ ๊ธฐ๋ณธ ๊ตฌ์กฐ ์ ๊ฒ์ค๋์ Spring Boot๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๋ฉด์ ์ค์ ๋ก ์๋ํ๋ ์ปจํธ๋กค๋ฌ์ ์๋น์ค ์ฝ๋๋ฅผ ์์ฑํด๋ณด์๋ค. ๊ฐ๋ฐ ๋์ค ๊ฒช์ ๋ฌธ์ ๋ค๊ณผ ํด๊ฒฐ ๊ณผ์ ์ ๊ฐ๋จํ ์ ๋ฆฌํด๋ณธ๋ค.
@Autowired๊ฐ ๋์ํ์ง ์๋ ์ด์ ๋?@RestController
public class MemberController {
@Autowired
private MemberService service;
}
@Autowired๋ Spring์ด MemberService์ ์ธ์คํด์ค๋ฅผ ์๋์ผ๋ก ์ฃผ์
ํด์ฃผ๋ ์ด๋
ธํ
์ด์
์ด๋ค. ๊ทธ๋ฐ๋ฐ ์ด๊ฒ ์ฒ์์๋ ๋์ํ์ง ์์๋ค. ์๋ฌ ๋ฉ์์ง๋ ๋ค์๊ณผ ๊ฐ์๋ค:
Field service in edu.pnu.controller.MemberController required a bean of type 'edu.pnu.service.MemberService' that could not be found.
๐ ์์ธ์ MemberService ํด๋์ค์ @Service ์ด๋
ธํ
์ด์
์ด ์์๊ธฐ ๋๋ฌธ:
@Service
public class MemberService {
private MemberDao dao = new MemberDao();
}
Spring์ @Component, @Service, @Repository, @Controller ์ด๋
ธํ
์ด์
์ด ๋ถ์ ํด๋์ค๋ง ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๋ค.
groupId์ artifactId๋?groupId: ํ๋ก์ ํธ์ ๊ณ ์ ํ ์๋ณ์. ๋ณดํต ํ์ฌ๋ ์กฐ์ง ์ด๋ฆ์ฒ๋ผ ์.artifactId: ๋ชจ๋ ์ด๋ฆ ๋๋ ์ฑ ์ด๋ฆ.์์:
<groupId>edu.pnu</groupId>
<artifactId>member-service</artifactId>
โ ํ๋ก์ ํธ ๋ง๋ค ๋ ํจํค์ง๋ฅผ
edu.pnu.controller,edu.pnu.service๋ฑ์ผ๋ก ๋๋ ๋๋ค๋ฉดgroupId๋edu.pnu๋ก ํ๋ ๊ฒ์ด ์์ฐ์ค๋ฝ๋ค.
| ์ญํ | ์ด๋ ธํ ์ด์ |
|---|---|
| ์ปจํธ๋กค๋ฌ ์ง์ | @RestController, @Controller |
| ์์ฒญ ๋งคํ | @GetMapping, @PostMapping, @PutMapping, @DeleteMapping |
| ์์ฒญ๊ฐ ์ฒ๋ฆฌ | @RequestParam, @RequestBody |
| ์์กด์ฑ ์ฃผ์ | @Autowired |
| ๋น์ฆ๋์ค ๋ก์ง | @Service |
| DB ๊ด๋ จ ํด๋์ค | @Repository |
@GetMapping("/members")
public List<MemberDTO> members() {
return service.getAllMember();
}
@PostMapping("/memberPostJ")
public ResponseEntity<?> jsonPost(@RequestBody MemberDTO vo) {
vo = service.jsonMember(vo);
if (vo == null) return ResponseEntity.status(400).body("๋์ผํ id๊ฐ ์์ต๋๋ค.");
return ResponseEntity.ok(vo);
}
@Service
public class MemberService {
private MemberDao dao = new MemberDao();
public List<MemberDTO> getAllMember() {
return dao.getAllMember();
}
public MemberDTO jsonMember(MemberDTO vo) {
return dao.jsonMember(vo);
}
}
public List<MemberDTO> getAllMember() {
List<MemberDTO> list = new ArrayList<>();
Statement st = getCon().createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM member");
while (rs.next()) {
MemberDTO dto = new MemberDTO();
dto.setId(rs.getInt("id"));
dto.setName(rs.getString("name"));
dto.setPass(rs.getString("pass"));
dto.setRegidate(rs.getDate("regidate"));
list.add(dto);
}
return list;
}
๊ธฐ๋ณธ์ ์ผ๋ก ResultSet์ ์๋ฐฉํฅ๋ง ๊ฐ๋ฅํ๋ค. ํ ๋ฒ ์์ผ๋ก ๊ฐ๋ฉด ๋์๊ฐ ์ ์๋ค.
ResultSet rs = st.executeQuery("SELECT * FROM member");
while (rs.next()) {
// ํ ๋ฐฉํฅ์ผ๋ก๋ง ์ด๋ ๊ฐ๋ฅ
}
ํ์ง๋ง ์ด๋ ๊ฒ ํ๋ฉด ์คํฌ๋กค ๊ฐ๋ฅ & ์์ ๊ฐ๋ฅํ ResultSet์ ๋ง๋ค ์ ์๋ค:
Statement stmt = con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE
);
ResultSet rs = stmt.executeQuery("SELECT * FROM member");
@Autowired๋ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก๋ ๊ฐ์ฒด๋ง ์๋ ์ฃผ์
๊ฐ๋ฅํ๋ค.@Service, @Repository ์์ด ๊ฐ์ฒด๋ง ๋ง๋ค์ด ๋์ผ๋ฉด ์๋ํ์ง ์๋๋ค.groupId์ artifactId๋ Maven์ด ํ๋ก์ ํธ๋ฅผ ์ธ์ํ๋ ๊ธฐ๋ณธ ๋จ์์ด๋ค.ResultSet์ ๊ธฐ๋ณธ ์ค์ ์ผ๋ก๋ ํ ๋ฐฉํฅ, ์ฝ๊ธฐ ์ ์ฉ์ด์ง๋ง ์ต์
์ผ๋ก ํ์ฅํ ์ ์๋ค.