spring43 Spring - ๋กฌ๋ณต(lombok) ๋กฌ๋ณต : ์๋ฐ ๊ฐ๋ฐ์๋ค์ ์ํ ์คํ ์์ค ํ๋ก์ ํธ ๊ฐ๋ฐ์๊ฐ ๋ฐ๋ณต์ ์ด๊ณ ์ง๋ฃจํ ์์ ์ ์ค์ด๊ณ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ด๊ธฐ ์ํด ๊ฐ๋ฐ๋จ ์ฃผ๋ก ์๋ฐ์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ์ฌ์ฉ๋๋ฉฐ, ๊ฐ๋ฐ์๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์์ฑํด์ผ ํ ์ฝ๋๋ฅผ ์๋์ผ๋ก ์์ฑํจ. ๋กฌ๋ณต์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๋ getter ๋ฐ setter ๋ฉ์๋, ์์ฑ์, equals ๋ฐ hashCode ๋ฉ์๋ ๋ฑ๊ณผ ๊ฐ์ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋(์ผ๋ฐ์ ์ผ๋ก ๋ฐ๋ณต ์์ฑ๋๋ ์ฝ๋)๋ฅผ ์ง์ ์์ฑํ์ง ์์๋ ๋จ. ๋กฌ๋ณต์ ์ฃผ์์ ํตํด ์ด๋ ธํ ์ด์ (annotation)์ ์ ๊ณตํ๊ณ , ์ปดํ์ผ ์์ ์ ๋กฌ๋ณต์ด ์ด ์ด๋ ธํ ์ด์ ์ ๋ถ์ํ์ฌ ์๋์ผ๋ก ํ์ํ ์ฝ๋๋ฅผ ์์ฑํจ. ์ด๋ฅผ ํตํด ๋กฌ๋ณต์ ๊ฐ๋ฐ์์ ์์ฐ์ฑ์ ํฅ์์ํค๊ณ , ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์ฌ์ค. ์ฝ๋๋ฅผ ๋ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์์ผ๋ฉฐ, ์์ฑํด์ผ ํ ๋ฐ๋ณต์ ์ธ .. 2023. 7. 14. Spring - ์์ฑ์ ์ฃผ์ ์ ์ ํ ์ต๊ทผ์๋ ์คํ๋ง์ ํฌํจํ DI ํ๋ ์์ํฌ ๋๋ถ๋ถ์ด ์์ฑ์ ์ฃผ์ ์ ๊ถ์ฅํ๋ค. ์์ฑ์ ์ฃผ์ ์ ํน์ง๊ณผ ์ฅ์ !! ๋ถ๋ณ ๋๋ถ๋ถ์ ์์กด๊ด๊ณ ์ฃผ์ ์ ํ๋ฒ ์ผ์ด๋๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ข ๋ฃ์์ ๊น์ง ์์กด๊ด๊ณ๋ฅผ ๋ณ๊ฒฝํ ์ผ์ด ์๋ค. ์คํ๋ ค ๋๋ถ๋ถ์ ์์กด๊ด๊ณ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ข ๋ฃ ์ ๊น์ง ๋ณํ๋ฉด ์๋๋ค.(๋ถ๋ณํด์ผ ํ๋ค.) ์์ ์ ์ฃผ์ ์ ์ฌ์ฉํ๋ฉด, setXxx ๋ฉ์๋๋ฅผ public์ผ๋ก ์ด์ด๋์ด์ผ ํ๋ค. ๋๊ตฐ๊ฐ ์ค์๋ก ๋ณ๊ฒฝํ ์ ๋ ์๊ณ , ๋ณ๊ฒฝํ๋ฉด ์๋๋ ๋ฉ์๋๋ฅผ ์ด์ด๋๋ ๊ฒ์ ์ข์ ์ค๊ณ ๋ฐฉ๋ฒ์ด ์๋๋ค. ์์ฑ์ ์ฃผ์ ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ๋ฑ 1๋ฒ๋ง ํธ์ถ๋๋ฏ๋ก ์ดํ์ ํธ์ถ๋๋ ์ผ์ด ์๋ค. ๋ฐ๋ผ์ ๋ถ๋ณํ๊ฒ ์ค๊ณํ ์ ์๋ค. ๋๋ฝ ํ๋ ์์ํฌ ์์ด ์์ ์๋ฐ ์ฝ๋๋ก ๋จ์ ํ ์คํธ ํ๋ ๊ฒฝ์ฐ, ์์ ์ ์์กด๊ด๊ณ๋ฅผ ์ด์ฉํ๋ฉด NPE(Null Point E.. 2023. 7. 14. Spring - ์ต์ ์ฒ๋ฆฌ ์ฃผ์ ํ ์คํ๋ง ๋น์ด ์์ด๋ ๋์ํด์ผ ํ ๋๊ฐ ์๋ค. ๊ทธ๋ฐ๋ฐ @Autowired ๋ง ์ฌ์ฉํ๋ฉด required ์ต์ ์ ๊ธฐ๋ณธ๊ฐ์ด true ๋ก ๋์ด ์์ด์ ์๋ ์ฃผ์ ๋์์ด ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ์๋ ์ฃผ์ ๋์์ ์ต์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค. @Autowired(required=false) : ์๋ ์ฃผ์ ํ ๋์์ด ์์ผ๋ฉด ์์ ์ ๋ฉ์๋ ์์ฒด๊ฐ ํธ์ถ ์๋จ org.springframework.lang.@Nullable : ์๋ ์ฃผ์ ํ ๋์์ด ์์ผ๋ฉด null์ด ์ ๋ ฅ๋๋ค. Optional : ์๋ ์ฃผ์ ํ ๋์์ด ์์ผ๋ฉด Optional.empty ๊ฐ ์ ๋ ฅ๋๋ค. setNoBean1() ์ @Autowired(required=false) ์ด๋ฏ๋ก ํธ์ถ ์์ฒด๊ฐ ์๋๋ค. ์ฐธ๊ณ : @Nullable, Optional์ ์ค.. 2023. 7. 14. Spring - ๋ค์ํ ์์กด๊ด๊ณ ์ฃผ์ ๋ฐฉ๋ฒ 1. ์์ฑ์ ์ฃผ์ ์ด๋ฆ ๊ทธ๋๋ก ์์ฑ์๋ฅผ ํตํด์ ์์กด ๊ด๊ณ๋ฅผ ์ฃผ์ ๋ฐ๋ ๋ฐฉ๋ฒ ํน์ง ์์ฑ์ ํธ์ถ์์ ์ ๋ฑ 1๋ฒ๋ง ํธ์ถ๋๋ ๊ฒ์ด ๋ณด์ฅ๋๋ค. ๋ถ๋ณ, ํ์ ์์กด๊ด๊ณ์ ์ฌ์ฉ @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; t.. 2023. 7. 12. Spring - ์ปดํฌ๋ํธ ์ค์บ ์ปดํฌ๋ํธ ์ค์บ์ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ @ComponentScan ์ ์ค์ ์ ๋ณด์ ๋ถ์ฌ์ฃผ๋ฉด ๋๋ค. ๊ธฐ์กด์ AppConfig์๋ ๋ค๋ฅด๊ฒ @Bean์ผ๋ก ๋ฑ๋กํ ํด๋์ค๊ฐ ํ๋๋ ์๋ค! ์ ์คํ๋ง ๋น ์ ์ฅ์์์ ๋น ๊ฐ์ฒด๋ฅผ ๋ณด๋ฉด ์ฑ๊ธํค ์ปจํ ์ด๋์ ์ญํ ์ @Component ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ํด์ค๋ค๋๊ฒ์ ์ ์ ์๋ค. @ComponentScan์์ ํ์ํ ํจํค์ง์ ์์ ์์น๋ฅผ ์ง์ ํ ์ ์๋ค. @ComponentScan( basePackages = "hello.core", } basePackages : ํ์ํ ํจํค์ง์ ์์ ์์น๋ฅผ ์ง์ ํ๋ค. ์ด ํจํค์ง๋ฅผ ํฌํจํด์ ํ์ ํจํค์ง๋ฅผ ๋ชจ๋ ํ์ํ๋ค. basePackages = {"hello.core", "hello.service"} ์ด๋ ๊ฒ ์ฌ๋ฌ ์์ ์์น๋ฅผ ์ง์ ํ ์๋ ์๋ค. ba.. 2023. 7. 11. Spring - ์ฑ๊ธํค ํจํด๊ณผ ์ฑ๊ธํค ์ปจํ ์ด๋ ์ฑ๊ธํค ํจํด ํด๋์ค์ ์ธ์คํด์ค๊ฐ ๋ฑ 1๊ฐ๋ง ์์ฑ๋๋ ๊ฒ์ ๋ณด์ฅํ๋ ๋์์ธ ํจํด์ด๋ค. ๊ทธ๋์ ๊ฐ์ฒด ์ธ์คํด์ค๋ฅผ 2๊ฐ ์ด์ ์์ฑํ์ง ๋ชปํ๋๋ก ๋ง์์ผ ํ๋ค. private ์์ฑ์๋ฅผ ์ฌ์ฉํด์ ์ธ๋ถ์์ ์์๋ก new ํค์๋๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋๋ก ๋ง์์ผ ํ๋ค. package hello.core.singleton; public class SingletonService { //1. static ์์ญ์ ๊ฐ์ฒด๋ฅผ ๋ฑ 1๊ฐ๋ง ์์ฑํด๋๋ค. private static final SingletonService instance = new SingletonService(); //2. public์ผ๋ก ์ด์ด์ ๊ฐ์ฒด ์ธ์คํด์ค๊ฐ ํ์ํ๋ฉด ์ด static ๋ฉ์๋๋ฅผ ํตํด์๋ง ์กฐํํ๋๋ก ํ์ฉํ ๋ค. public static SingletonServi.. 2023. 7. 10. ์ด์ 1 2 3 4 5 6 ยทยทยท 8 ๋ค์