lbd49464369
@lbd49464369
Students
-
Reviews
-
Course Rating
-
Posts
Q&A
์๋ธ๋ฆฟ ์์ฑ ์์ ๊ณผ ์ญํ ๊ด๋ จ ์ง๋ฌธ์ ๋๋ค!
์๋ ํ์ธ์. ์ง๋๊ฐ๋ค๊ฐ ์ ๋ ๊ณ ๋ฏผํ๋ ๋ถ๋ถ์ด๋ผ ์๊ฐ์ ๊ณต์ ํด๋ณด๊ณ ์ถ์ต๋๋ค! 2. ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์์ ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ๋ฐ์ HTTP ์๋ต ๋ฉ์์ง๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์์ต๋๋ค. ์ฆ, ์๋ธ๋ฆฟ์ ๊ฐ๋ฐ์๊ฐ ๋ง๋ ๋ด์ฉ์ ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ก ๋ง๋ค๊ณ ๊ฐ์ฅ ์๋จ์์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๊ฐ ์ค์ ๋ธ๋ผ์ฐ์ ์๊ฒ ์ ์กํ HTTP ์๋ต ๋ฉ์์ง๋ฅผ ๋ง๋ค์ด ์๋ตํ๋๊ฒ ์๋๊ฐ ์๊ฐํ์ด์ ์ ์ ์๊ฒฌ์ด์์ต๋๋น ps ์ ์ ๋น์ทํ ๊ณ ๋ฏผ๋ค์ ํ์ค ๊ฒ ๊ฐ์์ ๊ฐ์ด ์คํฐ๋ํ๋ฉด ์ด๋จ๊น ํ์ฌ ์ธํ๋ฐ ์คํฐ๋ ๊ณต๊ณ ๊ณต์ ๋๋ฆฝ๋๋ค~ ๊ด์ฌ ์์ผ์๋ฉด ์ฐ๋ฝ์ฃผ์ธ์!!๐
- 5
- 2
- 2.1K
Q&A
@Transactional
๊ฐ์ฌํฉ๋๋ค!!!
- 1
- 2
- 375
Q&A
์ํฐํฐ์ค๊ณ์ง๋ฌธ์ ๋๋ค.
๋ต๋ณ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค!!!์๋ฌธ์ด 2๊ฐ์ง ์์ต๋๋ค 1. ํ์ฌ ์๋ฐฉํฅ์ผ๋ก ๋์ฒดํ ๊ฒ์ด ์ฌ๋ฐ๋ฅธ ๊ฒ์ธ๊ฐ์? ์๋ฐฉํฅ์ผ๋ก ํ์ฌ๋ playlist ์ค์ฌ์ผ๋ก ํ์ฌ, ์ธ๋ํค ์ฐธ์กฐ๋ฅผ ์ค์ ํ ๊ฒ์ด ์ฌ๋ฐ๋ฅด๋ค๊ณ ์๊ฐํ๊ฑฐ๋ ์. 1 : N์ ํ ์ด๋ธ์ ์ธ๋ํค ์ฐธ์กฐ๊ฐ 1์ ์๊ธฐ ๋๋ฌธ์ ํท๊ฐ๋ฆฌ๊ธฐ ๋๋ฌธ์ด์ฃ 2. ๊ฐ์ฒด๋ ๋ฅ๋์ ์ด์ด์ผ ํ๋ฉฐ, playlist ๊ธฐ๋ฅ์ playlist๋ฅผ ์ค์ฌ์ผ๋ก ํ๋ผ๊ณ ํ์ จ๋๋ฐ ์ด ๋ง์์ ์์ํ๊ฒ ๊ธฐ๋ฅ์ ์ธ ๋ฉด์์ ๋ณด์์ ๋ member, playlist, video์ ๊ธฐ๋ฅ์ ๊ฐ๊ฐ ์๊ธฐ ์ค์ฌ์ ์ผ๋ก ๊ฐ๋ฐํ๋ผ๋ ๋ง์์ด์ ๊ฑฐ์ฃ ? ํ์์กฐํ์ ๊ธฐ๋ฅ์ด๋ผ๋ฉด member๊ฐ ์ฐธ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ด ์ข์ ๊ฒ์ด๊ฒ ๊ตฌ์. ํ์ง๋ง ์ ๋ ํ์์กฐํ ํ ์ผ์ด ์์ผ๋ ๊ทธ๋ด ํ์๊ฐ ์๊ตฌ์. ๋ค๋ง playlist๋ ํ์์ ๊ธฐ๋ฅ์ด ์๋ playlist์ ๊ธฐ๋ฅ์ด๊ธฐ ๋๋ฌธ์ playlist๊ฐ ์ค์ฌ์ด ๋๋ ๊ฒ ์ด๊ตฌ์ ์!! ๊ทธ๋ฆฌ๊ณ ํน์ ์ํฐํฐ ์ค๊ณ๋ ํ ์ด๋ธ ์ค๊ณ ๊ฐ์๊ฑฐ ํ์ค ๋ ๊ทธ๋ฆผ์ ์ด๋ค ํด์ ์ฌ์ฉํ์๋์?
- 1
- 3
- 502
Q&A
@ModelAttribute
๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค. ์ถ๊ฐ ์ง๋ฌธ์ด ์์ต๋๋ค. ์๋ ๋๊ฐ์ง ์ผ์ด์ค๋ก ๋ชจ๋ ํ์ ๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ฐ ์ด ๋ถ๋ถ ์ค๋ช ์ ์กฐ๊ธ ๊ธธ์ด์ง๋ ๋ถ๋ถ์ผ๊น์? MVC๊ฐ์์์ ๋ค๋ค์ฃผ์ค๊น์? public String updateItem(BookForm form) { public String updateItem(@ModelAttribute("boo") BookForm form) {
- 0
- 3
- 476
Q&A
๋จ์ ํ ์คํธ, ํตํฉ ํ ์คํธ์ ๋ํ ์ง๋ฌธ์ ๋๋ค.
์ถ๊ฐ ์ง๋ฌธ์ ๋๋ค. ํ ์คํธ๋ ๋ฉ์๋ ๋จ์๋ณด๋ค๋ ์๊ตฌ์ฌํญ? ๋ณ๋ก ํ๋๊ฒ ์ข๋ค๋ ๋ง๋ ๋ค์๋๋ฐ ๋๋ฉ์ธ ๋ก์ง ํ ์คํธ ์์๋ ๋ฉ์๋ ๋ณ๋ก ํ๋๊ฒ ์ข์๊ฑด๊ฐ์?
- 6
- 3
- 1.4K
Q&A
Jpql์ง๋ฌธ
๋ต๋ณ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค!!! ์ด๋ ๊ฒ ๊ธธ๊ฒ ์จ์ฃผ์๋ค๋ ๊ทฃ๊ตณ!! ํ๊ฐ์ง ์ดํด๊ฐ ์๊ฐ๋ ๋ถ๋ถ์ด ์์ด์ ํ ์คํธ ์ฝ๋๋ก ๊ฒ์ฆํ๋ค๊ณ ํ์ จ๋๋ฐ ์ด ๋ถ๋ถ์ ํด๋น ๊ฐ์ ๋ชฉ๋ก์๋ ์๋ ๊ฒ ๊ฐ์๋ฐ ์ด๋ ํ์ฉ1ํธ์ ๊ณต๋ถํ๋ฉด์ ์์ฐ์ค๋ ์ดํด๊ฐ ๋๋ ๋ถ๋ถ์ผ๊น์?? ์คํ๋ง ํต์ฌ์๋ฆฌ๋ ๋ดค๋๋ฐ ๊ฑฐ๊ธฐ์๋ DBํ ์คํธ๋ฅผ ์์ฃผ๊ฐ ์๋๋ผ์ ํ ์คํธ ์ฝ๋๋ก ๊ฒ์ฆํ๊ธฐ ๋๋ฌธ์ 1๋ฒ, 2๋ฒ ์ง๋ฌธ์ ๋จ์ ์ด ํด๊ฒฐ ๋๋ค๋๊ฒ ์ดํด๊ฐ ๋ ๊น๋ง๊น ํ๋ค์ ใ .ใ ๊ฐ์ฌํฉ๋๋ค!!
- 16
- 3
- 498
Q&A
TestBean ํด๋์ค์ ์๋ ๋น๋ฑ๋ก ์ด์
์ดํด๊ฐ ๋์์ต๋๋ค!!! ๊ฐ์ฌํฉ๋๋ค. ํผ์ ์ ๋ฆฌ ๋ค์ ํด๋ณด๋ฉด์ ํ์คํ ์ดํดํ๋ฉด ๋ ๊ฒ ๊ฐ์์!! ๊ฐ์ฌํฉ๋๋ค!!
- 8
- 11
- 631
Q&A
TestBean ํด๋์ค์ ์๋ ๋น๋ฑ๋ก ์ด์
๋ต๋ณ ๊ฐ์ฌํฉ๋๋น ์๊พธ ๋๋์ดํ ์ง๋ฌธ์ ๋๋ฆฌ๋ ๊ฒ ๊ฐ์ ์ฃ์กํฉ๋๋ค ใ .ใ ์ดํดํ๊ฒ ๋ง๋์ง ํ์ธ ๋ถํ๋๋ฆฝ๋๋ค!!! AnnotationConfigApplicationContext๋น์ ์ฉ๋๋ ์ด๋ฆ ๊ทธ๋๋ก ์ด๋ ธํ ์ด์ ์ผ๋ก ์ค์ ๋ ํด๋์ค๋ฅผ ์ฝ์ด ์ปจํ ์ด๋๋ฅผ ์์ฑํ๊ณ ์ปจํ ์ด๋์ ๋น์ผ๋ก ๋ฑ๋กํ๋ ์ญํ ์ ํ๋ ๊ฒ์ด๊ณ , TestBean์ @Configuration์ด ๋ฌ๋ ค์์ง ์์๋ ๋์ผํ๊ฒ ๋น์ผ๋ก ๋ฑ๋ก์ ํด์ค๋๋ค. ๋ค๋ง @Bean์ด ํด๋์ค ๋ด์ ์ ์ ๋์ด ์๋ค๋ฉด ๊ฐ์ด ๋น์ผ๋ก ๋ฑ๋ก์ ํด์ฃผ๋ ๊ฒ์ด๊ตฌ์. ๊ฒฐ๊ตญ ์๋ช ์ฃผ๊ธฐ?? ๋ผ๊ณ ํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง, ์๋ช ์ฃผ๊ธฐ๋ฝ๊ณ ํ๋ค๋ฉด ํฌ๊ฒ 3๊ฐ์ง๋ก **์ปจํ ์ด๋ ์์ฑ** -> **๋น๋ฑ๋ก** -> **์์กด๊ด๊ณ์ฃผ์ ** ์ผ๋ก ์๊ฐํฉ๋๋ค. AnnotationConfigApplicationContext๋ BeanFactory์ ํ์ ๋ ๋ฒจ์ด๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ตญ ์ปจํ ์ด๋์ด๊ณ , ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ new AnnotationConfigApplicationContext(TestBean.class)๋ฅผ ํ์ ๋ TestBean์ @Configuration์ด ์์ง๋ง, ์ปจํ ์ด๋๋ฅผ ๋จผ์ ์์ฑ ํ TestBean์ ๋ฑ๋ก์ ํ ์ ์์ต๋๋ค. @Component๋ 3๊ฐ์ง ์๋ช ์ฃผ๊ธฐ๋ฅผ ์์ฝ๊ฒ ํ ์ ์๊ฒ ํด์ฃผ๋ ๊ฒ์ด๊ตฌ์. ๋ค๋ง, @Configuration์ด ์์ ๋์ ๋จ์ ์, ์ฑ๊ธํค์ด ๋ณด์ฅ๋์ง ์๋๋ค๋ ๊ฒ ์ด๊ตฌ์. ์๋ฐ ์๋ํ๋ฉด, ๊ฒฐ๊ตญ ์๋ฐ์ฝ๋์ด๊ธฐ ๋๋ฌธ์ ์๋์ ๊ฐ์ ๋ memberService()์ ์๋ return new MemberMemoryRepository(); 1๋ฒ, memberRepository()์ ์๋ return new MemberMemoryRepository(); 1๋ฒ ์ด 2๋ฒ์ด ์์ฑ ๋๊ธฐ ๋๋ฌธ์ memberService()์ ๊ฐ๊ณผ, memberRopository()์ ๊ฐ์ ์ฑ๊ธํค์ด ์๋๊ฒ ๋๋๋ค. public class AppConfig { @Bean public MemberService memberService() { System.out.println("AppConfig.memberService"); return new MemberServiceImpl(memberRepository()); } @Bean public MemberRepository memberRepository() { System.out.println("AppConfig.memberRepository"); } } ์ถ๊ฐ๋ก ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class);ac.getBean(...); ์ ํ๋ ํ์๋ฅผ ํด์ฃผ๋ ๊ฒ์ด @Autowired ์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค!!! ์น์ฒ ํ ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค!!
- 8
- 11
- 631
Q&A
TestBean ํด๋์ค์ ์๋ ๋น๋ฑ๋ก ์ด์
๊ฒฐ๊ตญ new AnnotationConfigApplicationContext(TestBean.class); ์์ ์ฝ๋๊ฐ **@Configuration**๊ณผ **@Bean**์ผ๋ก ๋ฑ๋ก ๋์ด ์์ผ๋ฉด ๋ฑ๋ก๋ ๋น ์ค์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ฒ ๋๋ ๊ฒ ์ด๊ณ , ์๋ค๋ฉด ์์ ์ฝ๋์์ ๋น์ผ๋ก ๋ฑ๋กํ๊ฒ ๋๋ ๊ฒ์ด ๋ง๋ ๊ฑด๊ฐ์?
- 8
- 11
- 631
Q&A
TestBean ํด๋์ค์ ์๋ ๋น๋ฑ๋ก ์ด์
๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค!!! ์ถ๊ฐ ์ง๋ฌธ์ด ์์ต๋๋ค. ๋จผ์ ์์ ๋ ์๋์ ๊ฐ์ ์์ ์ ๋๋ค. 1. TestBean์๋ @Configuration์ด ์๊ณ , @Bean๋ ์์ต๋๋ค. ํด๋น ์์ ๋ ์ฃผ์ ํ ์คํ๋ง ๋น์ด ์์ ๋ ํต๊ณผ ์ํค๊ธฐ ์ํ ์์ ์ ๋๋ค. ํ์ง๋ง ์ด๋ฐ ์ํฉ์ TestBean์ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๊ธฐ ์ํด new AnnotationConfigApplicationContext(TestBean.class); ์์ ์ฝ๋๋ก ๋น ๋ฑ๋ก์ ํ ๊ฒ์ด๋ผ๊ณ ์ดํด ๋์์ต๋๋ค. ์ฆ, TestBean ํด๋์ค์์ ์๋ฌด๋ฐ ์ ๋ณด๋ ์์ง๋ง ํด๋น ์ฝ๋๋ก ์ธํด ํด๋น ํด๋์ค๋ฅผ ๋น์ผ๋ก ๋ฑ๋กํ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. 2. ๋ง์ฝ TestBean์ @Configuration์ด ๋ฌ๋ ธ๊ณ , @Bean๋ ์กด์ฌ ํ๊ฑฐ๋ @Component์ด ๋ฌ๋ ธ์ ๋๋ ์ปจํ ์ด๋๊ฐ ์์ฑ๋ ๋!!! ๋น์ผ๋ก ๋ฑ๋กํ๊ณ , new AnnotationConfigApplicationContext(TestBean.class); ์ฌ๊ธฐ์๋ ๋ฑ๋ก๋ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ์ญํ ๋ง ํ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋๋ฐ ๋ง์๊น์? ์ฆ, 1๋ฒ์ผ ๋์ ์ญํ ์ ๋ฑ๋ก๋ ํ๊ณ ์ค์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ธฐ๋ ํ๋ฉฐ, 2๋ฒ ์ผ ๋๋ ์ค์ ์ ๋ณด๋ง ๊ฐ์ ธ์ค๋ ๊ฒ์ผ๋ก ์ดํด ๋์์ต๋๋ค. ์!! ํน์ ์คํด ํ์๊ณ , ๋์ฑ ์์ธํ ๋ต๋ณ์ ์ฃผ์ค๊น๋ด ๋จ๊ฒจ์ @Bean์ด ์กด์ฌํ๋ ํด๋์ค์ @Configuration์ด ์์ ๋์ ์์ ๋์ ์ฐจ์ด๋ ๊ฐ์ฌ๋๊ป์ ๋ต๋ณ ํด์ฃผ์ ์ ์๊ณ ์์ต๋๋ค ์์ด๋ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก์ ๋์ง๋ง, ์กด์ฌํ ๋๋ ์ฑ๊ธํค์ด ๋ณด์ฅ๋์ง๋ง, ์์ ๋๋ ๋ณด์ฅ๋์ง ์๋๋ค!! public class AutowiredTest { @Test public void autowiredOption() { ApplicationContext ac = new AnnotationConfigApplicationContext(TestBean.class); TestBean bean = ac.getBean(TestBean.class); System.out.println("bean = " + bean); } static class TestBean { //ํธ์ถ ์๋จ @Autowired(required = false) public void setNoBean1(Member member) { System.out.println("setNoBean1 = " + member); } //null ํธ์ถ @Autowired public void setNoBean2(@Nullable Member member) { System.out.println("setNoBean2 = " + member); } //Optional.empty ํธ์ถ @Autowired(required = false) public void setNoBean3(Optional member) { System.out.println("setNoBean3 = " + member); } } }
- 8
- 11
- 631




