Skip to content

50thk/Springboot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

22 Commits
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Springboot

  1. ๊ธฐ๋ณธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ: Spring Web, Spring Boot Devtools(๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ฐœ์ƒ์‹œ ์ž๋™์œผ๋กœ ์„œ๋ฒ„ ์žฌ๊ฐ€๋™ / Only gradle(not maven) / Crome์—์„œ Live reload ํ™•์žฅ ์„ค์น˜ํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ € ์ƒˆ๋กœ๊ณ ์นจ ์—†์ด ํ™•์ธ๊ฐ€๋Šฅ), lombok(getter, setter, RequiredArgsConstructor(final๋กœ ๋ณ€์ˆ˜ ์„ค์ • ์‹œ ์ƒ์„ฑ์ž์— ์„ค์ •))

  2. ํ”„๋กœ์ ํŠธ ๋‚ด ํŒŒ์ผ ์„ค๋ช…

    • <ํ”„๋กœ์ ํŠธ๋ช…> + Application.java / ์›น ๊ตฌ๋™
    • templates ๋””๋ ‰ํ„ฐ๋ฆฌ / HTML
    • static ๋””๋ ‰ํ„ฐ๋ฆฌ / css, js, img
    • application.properties ํŒŒ์ผ / ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ •
    • src/test/java ๋””๋ ‰ํ„ฐ๋ฆฌ / JUnit๊ณผ ์Šคํ”„๋ง๋ถ€ํŠธ์˜ ํ…Œ์ŠคํŒ… ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ src/main/java ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธ
    • build.gradle ํŒŒ์ผ / gradle์˜ ํ™˜๊ฒฝ ํŒŒ์ผ, ํ”„๋กœ์ ํŠธ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ ๊ธฐ์ˆ 
  3. Spring ๊ธฐ๋Šฅ

    • annotation

      • @Controller / org.springframework.stereotype.Controller, ํด๋ž˜์Šค๋ฅผ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ง€์ •
      • @RequestMapping("/app") / org.springframework.web.bind.annotation.RequestMapping, ์š”์ฒญ๋œ URL๊ณผ์˜ ๋งคํ•‘์„ ๋‹ด๋‹น(์š”์ฒญ ๋ฐœ์ƒ ์‹œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ฐพ์Œ)
      • @ResponseBody / org.springframework.web.bind.annotation.ResponseBody, URL ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต(return)
      • @Entity / javax.persistence.Entity, ํด๋ž˜์Šค๋ฅผ ์—”ํ‹ฐํ‹ฐ๋กœ ์ง€์ • / ์ผ๋ฐ˜์ ์œผ๋กœ ์—”ํ‹ฐํ‹ฐ์—๋Š” Setter ๋Œ€์‹  lombok์˜ @Builder annotation์„ ํ†ตํ•œ ๋นŒ๋“œํŒจํ„ด์„ ์‚ฌ์šฉ
      • @GeneratedValue / javax.persistence.GeneratedValue, ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ํ•ด๋‹น ์†์„ฑ์— ๊ฐ’์„ ๋”ฐ๋กœ ์„ธํŒ…ํ•˜์ง€ ์•Š์•„๋„ 1์”ฉ ์ž๋™์œผ๋กœ ์ฆ๊ฐ€ํ•˜์—ฌ ์ €์žฅ๋œ๋‹ค. strategy๋Š” ๊ณ ์œ ๋ฒˆํ˜ธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์˜ต์…˜์œผ๋กœ GenerationType.IDENTITY๋Š” ํ•ด๋‹น ์ปฌ๋Ÿผ๋งŒ์˜ ๋…๋ฆฝ์ ์ธ ์‹œํ€€์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฒˆํ˜ธ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ฌ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. strategy ์˜ต์…˜์„ ์ƒ๋žตํ•  ๊ฒฝ์šฐ์— @GeneratedValue ์• ๋„ˆํ…Œ์ด์…˜์ด ์ง€์ •๋œ ์ปฌ๋Ÿผ๋“ค์ด ๋ชจ๋‘ ๋™์ผํ•œ ์‹œํ€€์Šค๋กœ ๋ฒˆํ˜ธ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ์ •ํ•œ ์ˆœ์„œ์˜ ๊ณ ์œ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์งˆ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ๋ณดํ†ต GenerationType.IDENTITY๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.
      • @Column / javax.persistence.Column, ์—”ํ‹ฐํ‹ฐ์˜ ์†์„ฑ์€ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ๋ช…๊ณผ ์ผ์น˜ํ•˜๋Š”๋ฐ ์ปฌ๋Ÿผ์˜ ์„ธ๋ถ€ ์„ค์ •์„ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. length๋Š” ์ปฌ๋Ÿผ์˜ ๊ธธ์ด๋ฅผ ์„ค์ •ํ• ๋•Œ ์‚ฌ์šฉํ•˜๊ณ  columnDefinition์€ ์ปฌ๋Ÿผ์˜ ์†์„ฑ์„ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. columnDefinition = "TEXT"์€ "๋‚ด์šฉ"์ฒ˜๋Ÿผ ๊ธ€์ž ์ˆ˜๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค. ์—”ํ‹ฐํ‹ฐ์˜ ์†์„ฑ์€ @Column ์• ๋„ˆํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋”๋ผ๋„ ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ์œผ๋กœ ์ธ์‹ํ•œ๋‹ค. ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ์œผ๋กœ ์ธ์‹ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋งŒ @Transient ์• ๋„ˆํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค.
      • @Id / javax.persistence.Id, primary key๋กœ ์ง€์ •
      • @ManyToOne / javax.persistence.ManyToOne, N:1 ๊ด€๊ณ„ ์„ค์ •, ๋ถ€๋ชจ ์ž์‹ ๊ด€๊ณ„
      • @OneToMany / javax.persistence.OneToMany, 1:N ๊ด€๊ณ„ ์„ค์ •, mappedBy - ์ฐธ์กฐ ์—”ํ‹ฐํ‹ฐ์˜ ์†์„ฑ๋ช…, cascade - CascadeType - ์งˆ๋ฌธ์ด ์‚ญ์ œ๋  ๋•Œ ๋‹ต๋ณ€๋“ค์˜ ๊ฑฐ์ทจ ์œ ํ˜•(REMOVE ์ „์ฒด ์‚ญ์ œ)
      • ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ๋ช… / createDate ์†์„ฑ์˜ ์‹ค์ œ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ๋ช…์€ create_date๊ฐ€ ๋จ. createDate์ฒ˜๋Ÿผ ๋Œ€์†Œ๋ฌธ์ž ํ˜•ํƒœ์˜ ์นด๋ฉœ์ผ€์ด์Šค(Camel Case) ์ด๋ฆ„์€ ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ๋ณ€๊ฒฝ๋˜๊ณ  ์–ธ๋”๋ฐ”(_)๋กœ ๋‹จ์–ด๊ฐ€ ๊ตฌ๋ถ„๋˜์–ด ์‹ค์ œ ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ๋ช…์ด ๋œ๋‹ค.
      • @SpringBootTest / org.springframework.boot.test.context.SpringBootTest, ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ์Šคํ”„๋ง๋ถ€ํŠธ ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค์ž„์„ ์˜๋ฏธ.
      • @Autowired / org.springframework.beans.factory.annotation.Autowired, ์Šคํ”„๋ง์˜ DI๊ธฐ๋Šฅ์œผ๋กœ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์Šคํ”„๋ง์ด ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์คŒ. ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์Šคํ”„๋ง์˜ ์• ๋„ˆํ…Œ์ด์…˜์ด๋‹ค. ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ์‹์—๋Š” @Autowired ์™ธ์— Setter ๋˜๋Š” ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด ์žˆ๋‹ค. ์ˆœํ™˜์ฐธ์กฐ ๋ฌธ์ œ์™€ ๊ฐ™์€ ์ด์œ ๋กœ @Autowired ๋ณด๋‹ค๋Š” ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•œ ๊ฐ์ฒด ์ฃผ์ž…๋ฐฉ์‹์ด ๊ถŒ์žฅ๋œ๋‹ค. ํ•˜์ง€๋งŒ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ์—๋Š” ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•œ ๊ฐ์ฒด์˜ ์ฃผ์ž…์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ์‹œ์—๋งŒ @Autowired๋ฅผ ์‚ฌ์šฉ
      • @Test / ํ•ด๋‹น ๋ฉ”์„œ๋“œ๊ฐ€ ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ์ž„์„ ์˜๋ฏธ. ํด๋ž˜์Šค๋ฅผ JUnit์œผ๋กœ ์‹คํ–‰ ์‹œ @Test ์• ๋„ˆํ…Œ์ด์…˜์ด ๋ถ™์€ ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰;JUnit์€ ์ž‘์„ฑํ•œ ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฐ”์˜ ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ
      • @Transactional / org.springframework.transaction.annotation.Transactional, ๋ฉ”์„œ๋“œ๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ DB ์„ธ์…˜์ด ์œ ์ง€๋œ๋‹ค.
      • @RequiredArgsConstructor / @RequiredArgsConstructor๋Š” ๋กฌ๋ณต์ด ์ œ๊ณตํ•˜๋Š” ์• ๋„ˆํ…Œ์ด์…˜์œผ๋กœ final์ด ๋ถ™์€ ์†์„ฑ์„ ํฌํ•จํ•˜๋Š” ์ƒ์„ฑ์ž๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ๋กฌ๋ณต์˜ @Getter, @Setter๊ฐ€ ์ž๋™์œผ๋กœ Getter, Setter ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ @RequiredArgsConstructor๋Š” ์ž๋™์œผ๋กœ ์ƒ์„ฑ์ž๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์Šคํ”„๋ง ์˜์กด์„ฑ ์ฃผ์ž… ๊ทœ์น™์— ์˜ํ•ด ๊ฐ์ฒด๊ฐ€ ์ž๋™์œผ๋กœ ์ฃผ์ž…๋œ๋‹ค.
      • @Service / ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ์„œ๋น„์Šค๋กœ ์ง€์ •
      • @PathVariable / ๊ฐ€๋ณ€ํ•˜๋Š” ์š”์ฒญ URL์˜ ์ฃผ์†Œ์˜ ๋ณ€์ˆ˜ ๊ฐ’์„ ์–ป์„ ๋•Œ @RequestMapping๊ณผ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์ด ๋™์ผํ•ด์•ผํ•จ.
      • @PostMapping / @RequestMapping๊ณผ ๋™์ผํ•˜๊ฒŒ ๋งคํ•‘์„ ๋‹ด๋‹นํ•˜๋Š” ์—ญํ• ์„ ํ•˜์ง€๋งŒ POST์š”์ฒญ๋งŒ ๋ฐ›์•„๋“ค์ผ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ
      • @RequestParam / ํ…œํ”Œ๋ฆฟ์—์„œ ์ž…๋ ฅํ•œ ๋‚ด์šฉ์„ ์–ป์Œ, ํ…œํ”Œ๋ฆฟ์—์„œ ์–ป๊ณ ์žํ•˜๋Š” name ์†์„ฑ๋ช…๊ณผ ๋ณ€์ˆ˜๋ช…์„ ์ผ์น˜์‹œ์ผœ์•ผํ•จ.
    • assertEquals(๊ธฐ๋Œ€๊ฐ’, ์‹ค์ œ๊ฐ’) / ํ…Œ์ŠคํŠธ์—์„œ ๊ธฐ๋Œ€๊ฐ’๊ณผ ์‹ค์ œ๊ฐ’์„ ๋น„๊ตํ•˜๊ณ  ๊ฐ™์œผ๋ฉด ํ…Œ์ŠคํŠธ ํ†ต๊ณผ, ๋‹ค๋ฅด๋ฉด ํ…Œ์ŠคํŠธ ์‹คํŒจ๋กœ ์ฒ˜๋ฆฌ.

    • findAll, findById, findBySubject,

    • Optional / null๊ฐ’์„ ์œ ์—ฐํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค, isPresent๋กœ null์ด ์•„๋‹Œ์ง€ ๋งž๋Š”์ง€ true, false๋ฅผ ๋ฆฌํ„ด๋ฐ›์•„ ํ™•์ธ

    • ORM(object relational mapping) / java์˜ ๋ฌธ๋ฒ•์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ๋‚ด๋ถ€์—์„œ ์ž๋™์œผ๋กœ SQL์ฟผ๋ฆฌ๋กœ ๋ณ€ํ™˜๋˜์–ด ์ฒ˜๋ฆฌ๋จ / 'ORM์„ ์ด์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ข…๋ฅ˜์— ์ƒ๊ด€ ์—†์ด ์ผ๊ด€๋œ ์ฝ”๋“œ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์–ด์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์œ ์ง€ยท๋ณด์ˆ˜ํ•˜๊ธฐ๊ฐ€ ํŽธ๋ฆฌํ•˜๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‹ฌ๋ผ๋„ ํ†ต์ผ๋œ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ณ  ์˜ค๋ฅ˜ ๋ฐœ์ƒ๋ฅ ๋„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.'

    • JPA(Java Persistence API) / JPA๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ฒ˜๋ฆฌ(์ €์žฅ, ์กฐํšŒ), JPA๋Š” ์ž๋ฐ” ์ง„์˜์—์„œ ORM(Object-Relational Mapping)์˜ ๊ธฐ์ˆ  ํ‘œ์ค€์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ชจ์Œ, ์ธํ„ฐํŽ˜์ด์Šค์ด๋ฏ€๋กœ ๊ตฌํ˜„ ํด๋ž˜์Šค ํ•„์š”, JPA๋ฅผ ๊ตฌํ˜„ํ•œ ๋Œ€ํ‘œ์ ์ธ ์‹ค์ œ ํด๋ž˜์Šค์—๋Š” ํ•˜์ด๋ฒ„๋„ค์ดํŠธ(Hibernate)๊ฐ€ ์žˆ๋‹ค.

    • H2 database / ์ฃผ๋กœ ๊ฐœ๋ฐœ์šฉ์ด๋‚˜ ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํŒŒ์ผ ๊ธฐ๋ฐ˜์˜ ๊ฒฝ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค. ๊ฐœ๋ฐœ์‹œ์—๋Š” H2๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•˜๊ณ  ์‹ค์ œ ์šด์˜์‹œ์Šคํ…œ์€ ์ข€ ๋” ๊ทœ๋ชจ์žˆ๋Š” DB๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ธ ๊ฐœ๋ฐœ ํŒจํ„ด.

    • Entity / ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”๊ณผ ๋งคํ•‘๋˜๋Š” ์ž๋ฐ” ํด๋ž˜์Šค, ๋ชจ๋ธ, ๋„๋ฉ”์ธ ๋ชจ๋ธ์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•จ.

    • Repository / ์—”ํ‹ฐํ‹ฐ์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์— ์ ‘๊ทผํ•˜๋Š” ๋ฉ”์„œ๋“œ๋“ค(์˜ˆ: findAll, save ๋“ฑ)์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ๋Š” ํ…Œ์ด๋ธ”์— ์–ด๋–ค ๊ฐ’์„ ๋„ฃ๊ฑฐ๋‚˜ ๊ฐ’์„ ์กฐํšŒํ•˜๋Š” ๋“ฑ์˜ CRUD(Create, Read, Update, Delete)๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ด ๋•Œ ์ด๋Ÿฌํ•œ CRUD๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ์ง€ ์ •์˜ํ•˜๋Š” ๊ณ„์ธต

    • ์Šคํ”„๋ง์˜ ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection) ๋ฐฉ์‹ 3๊ฐ€์ง€

      • @Autowired ์†์„ฑ - ์†์„ฑ์— @Autowired ์• ๋„ˆํ…Œ์ด์…˜์„ ์ ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ์‹
      • ์ƒ์„ฑ์ž - ์ƒ์„ฑ์ž๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ์‹ (๊ถŒ์žฅํ•˜๋Š” ๋ฐฉ์‹)
      • Setter - Setter ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ์‹ (๋ฉ”์„œ๋“œ์— @Autowired ์• ๋„ˆํ…Œ์ด์…˜ ์ ์šฉ์ด ํ•„์š”ํ•˜๋‹ค.)
    • application.properties ์„ค์ •

      • spring.h2.console.enabled - H2 ์ฝ˜์†”์˜ ์ ‘์†์„ ํ—ˆ์šฉํ• ์ง€์˜ ์—ฌ๋ถ€
      • spring.h2.console.path - ์ฝ˜์†” ์ ‘์†์„ ์œ„ํ•œ URL ๊ฒฝ๋กœ
      • spring.datasource.url - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘์†์„ ์œ„ํ•œ ๊ฒฝ๋กœ
      • spring.datasource.driverClassName - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘์†์‹œ ์‚ฌ์šฉํ•˜๋Š” ๋“œ๋ผ์ด๋ฒ„
      • spring.datasource.username - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์‚ฌ์šฉ์ž๋ช…, ๊ธฐ๋ณธ๊ฐ’ = sa
      • spring.datasource.password - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŒจ์Šค์›Œ๋“œ
      • spring.jpa.properties.hibernate.dialect - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—”์ง„ ์ข…๋ฅ˜๋ฅผ ์„ค์ •
      • spring.jpa.hibernate.ddl-auto - ์—”ํ‹ฐํ‹ฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๋Š” ๊ทœ์น™์„ ์ •์˜, ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ณดํ†ต update ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์šด์˜ํ™˜๊ฒฝ์—์„œ๋Š” none ๋˜๋Š” validate ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉ / none - ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค., update - ์—”ํ‹ฐํ‹ฐ์˜ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ ์ ์šฉํ•œ๋‹ค., validate - ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ๋งŒ ํ•œ๋‹ค., create - ์Šคํ”„๋ง๋ถ€ํŠธ ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋ ๋•Œ ๋ชจ๋‘ dropํ•˜๊ณ  ๋‹ค์‹œ ์ƒ์„ฑํ•œ๋‹ค., create-drop - create์™€ ๋™์ผํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์ข…๋ฃŒ์‹œ์—๋„ ๋ชจ๋‘ drop ํ•œ๋‹ค.
    • ์Šคํ”„๋ง๋ถ€ํŠธ์—์„œ template์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ…œํ”Œ๋ฆฟ ์—”์ง„์„ ์‚ฌ์šฉํ•ด์•ผํ•จ (Thymeleaf, Mustache, Groovy, Freemarker, Velocity ๋“ฑ)

About

message board

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors