Posts
Q&A
equals - ๊ตฌํ(2)์์ ์๋ ์์ฑ์ผ๋ก ์ฝ๋ ํ์ค์ด ์์ด ๋์ค๋๋ฐ ์ ๊ฐ ์๊ฐํ๊ฒ ๋ง๋์?
์๋ ํ์ธ์. ๋ฐํ์ง๋์ ๋ ๊ถ๊ธํด์ ์ฐพ์๋ณด๋ ๋ค์ ์ด์๋ก ํจ์น๋์๋ค์ ๐https://youtrack.jetbrains.com/issue/IDEA-357686 ๋ค์ ๋ด์ฉ์ผ๋ก ๋ฉ๋ด์ผ์๋ ๋ฐ์ํด๋๊ฒ์ ๐ > ์ฐธ๊ณ : ์ต์ IntellJ์์๋ equals ๊ตฌํ์์ ๋ค์ ์ฒซ ์ค ์ฝ๋๊ฐ ์ ๊ฑฐ๋๋ค.if (this == o) return true;* ์ด์ : ๋ด๋ถ ๋ถ์ ๊ฒฐ๊ณผ, ๋๋ถ๋ถ์ ์ค๋ฌด ์ฝ๋์์๋ ์๊ธฐ ์์ ์ ๋น๊ตํ๋ ๊ฒฝ์ฐ๊ฐ ๊ฑฐ์ ์๋ค. ๋ฐ๋ผ์ ๋ถ๊ธฐ ์์ธก ๋ฏธ์ค๊ฐ ๋ ํฐ ๋น์ฉ์ ์ ๋ฐํ๋ค๋ ๋ฆฌํฌํธ(IDEA-357686)๊ฐ ๋ฐ์๋์๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 13
Q&A
OrderServiceImpl ํด๋์ค์ ์์กด์ฑ ์ฃผ์ ์ด ๋๋ ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค
์๋ ํ์ธ์. yoon6669๋์ด๋ฒ ํ ์คํธ ์ฝ๋์์๋ ์คํ๋ง ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.// ์ด ์ฝ๋๋ ์์ ์๋ฐ ์ฝ๋์ ๋๋ค (์คํ๋ง ์ปจํ ์ด๋ ์์) OrderService orderService = new OrderServiceImpl(new MemoryRepository(), new FixDiscountPolicy()); ์ฌ๊ธฐ์ ์ค์ํ ํฌ์ธํธ๋ค์ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค:1. ํ ์คํธ ์ฝ๋์ ํน์ง์ด ํ ์คํธ๋ ์์ ์๋ฐ ํ ์คํธ์ ๋๋ค์คํ๋ง ์ปจํ ์ด๋(@SpringBootTest, ApplicationContext ๋ฑ)๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค๋ฐ๋ผ์ @Component, @Autowired ๊ฐ์ ์คํ๋ง ์ด๋ ธํ ์ด์ ์ด ์ ํ ๋์ํ์ง ์์ต๋๋ค2. ์ ์ค๋ฅ๊ฐ ๋์ง ์๋๊ฐ?@Autowired๋ ์คํ๋ง ์ปจํ ์ด๋๊ฐ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋๋ง ๋์ํฉ๋๋คํ ์คํธ์์๋ new OrderServiceImpl(...)๋ก ์ง์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์์ต๋๋ค์์ฑ์์ ์ง์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌํ๋ฏ๋ก ์์กด๊ด๊ณ๊ฐ ์๋์ผ๋ก ์ฃผ์ ๋ฉ๋๋ค์คํ๋ง ์ปจํ ์ด๋๊ฐ ๊ฐ์ ํ์ง ์์ผ๋ฏ๋ก ๋น ๋ฑ๋ก ์ฌ๋ถ๋ ์๊ด์์ต๋๋ค4. ์คํ๋ง ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ค๋ฉด?๋ง์ฝ ์คํ๋ง ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ ํ ์คํธ๋ผ๋ฉด:@SpringBootTest class OrderServiceTest { @Autowired OrderService orderService; // ์ด ๊ฒฝ์ฐ FixDiscountPolicy๊ฐ ๋น์ผ๋ก ๋ฑ๋ก๋์ด์ผ ํจ } ๊ฒฐ๋ก : ํ ์คํธ ์ฝ๋๋ ์์ ์๋ฐ์ด๋ฏ๋ก ์คํ๋ง์ ์๋ ์ฃผ์ ๋ฉ์ปค๋์ฆ๊ณผ๋ ๋ณ๊ฐ๋ก ๋์ํฉ๋๋ค. ์ง์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์์ฑ์๋ก ์์กด๊ด๊ณ๋ฅผ ์ฃผ์ ํ๋ ๊ฒ์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
- 0
- 1
- 21
Q&A
Test์ฝ๋๋ ํต๊ณผํ๋๋ฐ CoreApplication ์๋ฌ๊ฐ ๋๋ค๋ฉด
์๋ ํ์ธ์. yoon6669๋ ๐๊ฐ์์์ ์ฌ์ฉํ๋ TEST๋ ๋ชจ๋ ํ ์คํธ๋ฅผ ์ ํํ๊ฒ ๋ง์กฑํ๋ TEST ์ผ์ด์ค๋ฅผ ๋ง๋๋ ๊ฒ์ด ๋ชฉ์ ์ด๋ผ๊ธฐ ๋ณด๋ค๋ ํ์ต์ ๋ชฉ์ ์ผ๋ก TEST๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ์ดํดํ์๋ฉด ๋ฉ๋๋ค.๋ฌผ๋ก ํ์ต์ด ๋ชฉ์ ์ด ์๋๋ผ ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ ๋ค๋ฉด ๋ชจ๋ ํต๊ณผํ๋ ์ ํํ ํ ์คํธ๋ฅผ ํด์ผ๊ฒ ์ง์?๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 18
Q&A
๊ฐ์ ์๋ฃ
dbaldpahd0216๋ ๊ฐ์ฌํฉ๋๋ค ๐๋ค์ ํจ์น์ ๋ฐ์ํ๊ฒ ์ต๋๋ค^^!
- 0
- 2
- 23
Q&A
๋ถ๋ชจํ์ ๋ ๋น์ ๋ฑ๋ก ๋๋์?
์๋ ํ์ธ์. yoon6669๋๋ฌธ์ํ์ ๋ด์ฉ์ ์คํ๋ง ์ปจํ ์ด๋๊ฐ ๋น์ ์กฐํํ๋ ๋ฐฉ์๊ณผ ์๋ฐ์ ๊ฐ์ฒด ํ์ ์์คํ (์์ ๋ฐ ์ธํฐํ์ด์ค ๊ตฌํ)์ด ๊ฒฐํฉ๋์ด ๋ํ๋๋ ๋์์ ๋๋ค.์คํ๋ง ๋น์ ๋ฑ๋ก๊ณผ ํ์ :์คํ๋ง ์ปจํ ์ด๋๋ @Configuration ์ ๋ ธํ ์ด์ ์ด ๋ถ์ ์ค์ ํด๋์ค์ ์ ์๋ @Bean ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์คํ๋ง ๋น์ ๋ฑ๋กํฉ๋๋ค.@Bean ๋ฉ์๋์ ๋ฐํ ํ์ ์ด ํด๋น ์คํ๋ง ๋น์ ํ์ ์ด ๋ฉ๋๋ค.์๋ฅผ ๋ค์ด, TestConfig ํด๋์ค์์ rateDiscountPolicy() ๋ฉ์๋๋ RateDiscountPolicy ๊ฐ์ฒด๋ฅผ ๋ฐํํ๊ณ fixDiscountPolicy() ๋ฉ์๋๋ FixDiscountPolicy ๊ฐ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค. ๋ฐ๋ผ์ RateDiscountPolicy์ FixDiscountPolicy์ ์ธ์คํด์ค๊ฐ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก๋ฉ๋๋ค.๋น ์กฐํ ์ ํ์ ๋งค์นญ:์คํ๋ง ์ปจํ ์ด๋์์ ac.getBean(ํ์ )์ด๋ ac.getBeansOfType(ํ์ )๊ณผ ๊ฐ์ด ํ์ ์ผ๋ก ๋น์ ์กฐํํ ๋, ์คํ๋ง์ ์ปจํ ์ด๋์ ๋ฑ๋ก๋ ๋น๋ค ์ค์์ ์์ฒญํ ํ์ ๊ณผ ํธํ๋๋ (assignable) ํ์ ์ ๋น๋ค์ ๋ชจ๋ ์ฐพ์ต๋๋ค.์ฌ๊ธฐ์ 'ํธํ๋๋ค'๋ ๊ฒ์ ์์ฒญํ ํ์ ์ด ๋ฑ๋ก๋ ๋น์ ์ค์ ํด๋์ค์ ๋ถ๋ชจ ํด๋์ค์ด๊ฑฐ๋, ๋ฑ๋ก๋ ๋น์ ์ค์ ํด๋์ค๊ฐ ์์ฒญํ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ฒฝ์ฐ ๋ฑ์ ํฌํจํฉ๋๋ค. ์ฆ, ์๋ฐ์ ๋คํ์ฑ์ด ์ ์ฉ๋ฉ๋๋ค. ๋ถ๋ชจ ํ์ ์ผ๋ก ์กฐํํ๋ฉด ์์ ํ์ ๋ ํจ๊ป ์กฐํ๋๋ ๊ฒ์ด ๋ฐ๋ก ์ด ๋๋ฌธ์ ๋๋ค.DiscountPolicy.class๋ก ์กฐํ ์:TestConfig์์๋ RateDiscountPolicy ๋น๊ณผ FixDiscountPolicy ๋น์ด ๋ฑ๋ก๋์์ต๋๋ค.RateDiscountPolicy ํด๋์ค์ FixDiscountPolicy ํด๋์ค๋ ๋ชจ๋ DiscountPolicy ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ณ ์์ต๋๋ค (์์ค ์ฝ๋ ์์๋ ์ง์ ์ ์ผ๋ก ๊ตฌํ ์ฝ๋๊ฐ ๋ณด์ด์ง ์์ง๋ง, ๋งฅ๋ฝ์ ๊ทธ๋ ๋ค๊ณ ๊ฐ์ ํ ์ ์์ต๋๋ค. ์:์ DiscountPolicy ์ธํฐํ์ด์ค์์ RateDiscountPolicy ๊ตฌํ์ฒด).๋ฐ๋ผ์ ac.getBeansOfType(DiscountPolicy.class)๋ฅผ ํธ์ถํ๋ฉด, ์คํ๋ง์ DiscountPolicy ํ์ ๋๋ ๊ทธ ํ์ ํ์ (๊ตฌํ์ฒด)์ ๋น์ ์ฐพ์ต๋๋ค. RateDiscountPolicy์ FixDiscountPolicy๋ DiscountPolicy์ ๊ตฌํ์ฒด์ด๋ฏ๋ก, ์ด ๋ ๋น์ด ์กฐํ๋๋ ๊ฒ์ ๋๋ค. DiscountPolicy ์์ฒด๋ ์ถ์ํ๋ ์ธํฐํ์ด์ค์ผ ๋ฟ, ๊ทธ ์์ฒด๋ก ์ธ์คํด์คํ๋์ด ๋น์ผ๋ก ๋ฑ๋ก๋ ๊ฒ์ ์๋๋๋ค. ํ์ง๋ง ๊ทธ ๊ตฌํ์ฒด๋ค์ด DiscountPolicy ํ์ ์ผ๋ก "ํธํ"๋๊ธฐ ๋๋ฌธ์ ์กฐํ ๋์์ด ๋ฉ๋๋ค.Object.class๋ก ์กฐํ ์:์๋ฐ์ ๋ชจ๋ ํด๋์ค๋ Object ํด๋์ค๋ฅผ ์์๋ฐ์ต๋๋ค. Object๋ ๋ชจ๋ ์๋ฐ ๊ฐ์ฒด์ ์ต๊ณ ๋ถ๋ชจ์ ๋๋ค.์คํ๋ง ์ปจํ ์ด๋์ ๋ฑ๋ก๋ ๋ชจ๋ ๋น์ ์ด๋ค ํด๋์ค์ ์ธ์คํด์ค์ด๋ ๊ฒฐ๊ตญ Object ํ์ ์ ์์๋ฐ๊ณ ์์ต๋๋ค.๋ฐ๋ผ์ ac.getBeansOfType(Object.class)๋ฅผ ํธ์ถํ๋ฉด, ์คํ๋ง์ Object ํ์ ๋๋ ๊ทธ ํ์ ํ์ ์ ๋น์ ์ฐพ๊ฒ ๋๋๋ฐ, ์ด๋ ์คํ๋ง ์ปจํ ์ด๋์ ๋ฑ๋ก๋ ๋ชจ๋ ๋น์ ํด๋น๋ฉ๋๋ค.์์ฝํ์๋ฉด, DiscountPolicy๋ Object ํด๋์ค ์์ฒด๊ฐ ๋น์ผ๋ก ๋ฑ๋ก๋ ๊ฒ์ด ์๋๋ผ, ํด๋น ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ฑฐ๋ ํด๋น ํด๋์ค๋ฅผ ์์๋ฐ์ ์์ ํ์ (๊ตฌํ์ฒด)์ ๋น๋ค์ด ๋ฑ๋ก๋์ด ์๊ณ , ์คํ๋ง์ด ํ์ ์ ํตํด ๋น์ ์กฐํํ ๋ ์์ฒญ๋ ํ์ ๊ณผ ํธํ๋๋ ๋ชจ๋ ๋น์ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๋์์ด ๋ํ๋๋ ๊ฒ์ ๋๋ค.์ถ๊ฐ๋ก ์๋ฐ๋ instanceof, Class.isAssignableFrom ๋ฑ์ ๊ธฐ๋ฅ์ ํตํด์ ๋ค๋ฅธ ํ์ ์ด ๋ณธ์ธ์ ์์ ํ์ ์ธ์ง ์๋์ง ์ธ์งํ ์ ์์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 1
- 20
Q&A
๋ต๋ณ๋ถํ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์๋ ํ์ธ์. ์๋ค์ ๋๋ค์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์ ๐https://inf.run/SLoBz ๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 19
Q&A
์ํฐํฐ ์ง์ ์ฌ์ฉ - ์ธ๋ํค๊ฐ ์ง์ฐ๋ก๋ฉ
์๋ ํ์ธ์. Wendy Wendy๋๊ทธ๋ ์ง ์์ต๋๋ค. where ๊ฐ์ ํํฐ๋ง ์กฐ๊ฑด์ ์ฆ์๋ก๋ฉ์ ์ํฅ์ ์ฃผ์ง ์๊ณ , ์ค์ง ์กฐํ ๋์์ธ select ์ ์์๋ง ์ฆ์ ๋ก๋ฉ์ด ์ํฅ์ ๋ฐ์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 17
Q&A
ํด์ฆ ์ค๋ณต ์ ๋ต ๊ฐ๋ฅ ์ฌ๋ถ ์ง๋ฌธ ๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์. ์กฐ์ฌ์๋์๊ฐํ์ ๋ด์ฉ์ด ๋ง์ต๋๋ค.AI ํด์ฆ์ ๋ฌธ์ ๊ฐ ์๋ค์ ๐๊ด๋ จํด์ ์ธํ๋ฐ์ ์ ๋ฌ ๋๋ฆด๊ฒ์ ๐๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 30
Q&A
querydsl ๋น๋ ๋ฌธ์ ์ง๋ฌธ๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์. 6udguin๋์คํ๋ง ๋ถํธ 3.x๋ฅผ ์ฌ์ฉ์ค์ด์๊ตฐ์ ๐๊ฐ์ ๋ฉ๋ด์ผ์ ์๋ ๋ค์ ๋ด์ฉ์ ์ฐธ๊ณ ํด์ฃผ์ธ์.> ์ฐธ๊ณ : ์คํ๋ง ์ต์ ๋ฒ์ ์์๋ Querydsl ์ค์ ์ด ๋ฌ๋ผ์ง๋ค. Querydsl ์ค์ ์ด ์ ์๋๋ค๋ฉด ๋ค์์ ์ฐธ๊ณ ํ์. ์คํ๋ง ๋ถํธ 2.x, 3.x ๋ชจ๋ ์ฐธ๊ณ ํ ์ ์๋ค.> https://bit.ly/springboot3 ์ง์ ๋งํฌhttps://docs.google.com/document/d/1j0jcJ9EoXMGzwAA2H0b9TOvRtpwlxI5Dtn3sRtuXQas/edit?tab=t.0#heading=h.iayahq64el0u๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 39
Q&A
ItemUpdateForm์ ํ๋ quantity์ @NotNull์ด ์๋์ด์
์๋ ํ์ธ์. ๋ง๋ฌ๋ผ๋์ด ์์ ์์๋ ์๋์ ๊ฒฝ์ฐ ๋น ๊ฐ๋ ๋ฃ์ ์ ์๋๋ก ํ์ฉํด๋์์ต๋๋ค.ํน๋ณํ ์ด์ ๊ฐ ์๋ ๊ฒ์ ์๋๊ณ , ์ด ์์ ์์๋ ๋น์ฆ๋์ค ์ํฉ์ ๋ฐ๋ผ์ ์๋์ด 0์ผ ์๋ ์์ง๋ง, ์ด ๊ฒฝ์ฐ ์๋ ์์ฒด๋ฅผ ์์ง ์ค์ ํ์ง ์์๋ค๋ ์๋ฏธ๋ก ๋ณด์๋ฉด ๋ฉ๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 20