## ๐Ÿ›  ์˜ค๋Š˜ ๋‚ด๊ฐ€ Spring Boot์—์„œ ๋ฐฐ์šด ๊ฒƒ๋“ค โ€” `@Autowired`, ResultSet, ๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋ณธ ๊ตฌ์กฐ ์ ๊ฒ€

Yeeunยท2025๋…„ 4์›” 15์ผ
0

SpringBoot

๋ชฉ๋ก ๋ณด๊ธฐ
1/46

๐Ÿ›  ์˜ค๋Š˜ ๋‚ด๊ฐ€ Spring Boot์—์„œ ๋ฐฐ์šด ๊ฒƒ๋“ค โ€” @Autowired, ResultSet, ๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋ณธ ๊ตฌ์กฐ ์ ๊ฒ€

์˜ค๋Š˜์€ Spring Boot๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๋ฉด์„œ ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ์™€ ์„œ๋น„์Šค ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณด์•˜๋‹ค. ๊ฐœ๋ฐœ ๋„์ค‘ ๊ฒช์€ ๋ฌธ์ œ๋“ค๊ณผ ํ•ด๊ฒฐ ๊ณผ์ •์„ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.


๐Ÿ“Œ 1. @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 ์–ด๋…ธํ…Œ์ด์…˜์ด ๋ถ™์€ ํด๋ž˜์Šค๋งŒ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•œ๋‹ค.


๐Ÿ“Œ 2. Spring Boot Starter ๋งŒ๋“ค ๋•Œ์˜ groupId์™€ artifactId๋ž€?

  • groupId: ํ”„๋กœ์ ํŠธ์˜ ๊ณ ์œ ํ•œ ์‹๋ณ„์ž. ๋ณดํ†ต ํšŒ์‚ฌ๋‚˜ ์กฐ์ง ์ด๋ฆ„์ฒ˜๋Ÿผ ์”€.
  • artifactId: ๋ชจ๋“ˆ ์ด๋ฆ„ ๋˜๋Š” ์•ฑ ์ด๋ฆ„.

์˜ˆ์‹œ:

<groupId>edu.pnu</groupId>
<artifactId>member-service</artifactId>

โ— ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค ๋•Œ ํŒจํ‚ค์ง€๋ฅผ edu.pnu.controller, edu.pnu.service ๋“ฑ์œผ๋กœ ๋‚˜๋ˆ ๋’€๋‹ค๋ฉด groupId๋„ edu.pnu๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์ž์—ฐ์Šค๋Ÿฝ๋‹ค.


๐Ÿ“Œ 3. MVC์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ์–ด๋…ธํ…Œ์ด์…˜ ์š”์•ฝ

์—ญํ• ์–ด๋…ธํ…Œ์ด์…˜
์ปจํŠธ๋กค๋Ÿฌ ์ง€์ •@RestController, @Controller
์š”์ฒญ ๋งคํ•‘@GetMapping, @PostMapping, @PutMapping, @DeleteMapping
์š”์ฒญ๊ฐ’ ์ฒ˜๋ฆฌ@RequestParam, @RequestBody
์˜์กด์„ฑ ์ฃผ์ž…@Autowired
๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง@Service
DB ๊ด€๋ จ ํด๋ž˜์Šค@Repository

๐Ÿ“Œ 4. ์˜ˆ์ œ ์ฝ”๋“œ๋กœ ๋ณด๋Š” ํ๋ฆ„ (Controller โ†’ Service โ†’ DAO)

๐Ÿ“ Controller

@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

@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);
    }
}

๐Ÿ“ DAO (JDBC ์ง์ ‘ ์‚ฌ์šฉ)

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;
}

๐Ÿ“Œ 5. JDBC์˜ ResultSet์€ ์™œ ๋’ค๋กœ ๋ชป ๊ฐ€๋Š” ๊ฑธ๊นŒ?

๊ธฐ๋ณธ์ ์œผ๋กœ 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์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ธ์‹ํ•˜๋Š” ๊ธฐ๋ณธ ๋‹จ์œ„์ด๋‹ค.
  • JDBC ResultSet์€ ๊ธฐ๋ณธ ์„ค์ •์œผ๋กœ๋Š” ํ•œ ๋ฐฉํ–ฅ, ์ฝ๊ธฐ ์ „์šฉ์ด์ง€๋งŒ ์˜ต์…˜์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Spring MVC๋Š” Controller โ†’ Service โ†’ DAO ๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํ๋ฅด๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€