Bean์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
- ์ปดํฌ๋ํธ ์ค์บ๊ณผ ์๋ ์์กด๊ด๊ณ ์ค์
- @Component ์ด๋ ธํ ์ด์ ์ฌ์ฉ
- class ๊ธฐ๋ฐ์ผ๋ก ์คํ ์์ ์ ์ธ์คํด์ค ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
- @Controller, @Service, @Repository ๋ฑ ๋ชจ๋ @Component ๋ฅผ ํฌํจํ๊ณ ์์ผ๋ฉฐ ์คํ ์์ ์ ์๋์ผ๋ก ์์กด์ฑ์ ์ฃผ์ ํ๋ค.
- ์๋ฐ ์ฝ๋๋ก ์ง์ ์คํ๋ง๋น ๋ฑ๋ก
- @Bean ์ด๋ ธํ ์ด์ ์ฌ์ฉ
- method ๊ธฐ๋ฐ์ผ๋ก ๋ฉ์๋์์ ๋ฐํํ๋ ๊ฐ์ฒด๋ฅผ ์ธ์คํด์ค ๊ฐ์ฒด๋ก ์์ฑํ๋ค.
Spring ์์ ์ฌ์ฉ๋๋ JPA์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
JPA๋ ์๋ฐ์์ ์ฌ์ฉํ๋ ORM ํ์ค์ด๋ฉฐ, ์ธํฐํ์ด์ค์ ์งํฉ์ ๋๋ค.
๊ทธ์ค Spring Data JPA๋ JPA์ ๋ํ์ ์ธ ๊ตฌํ์ฒด ์ค Hibernate๋ฅผ ๊ฐ๋ฐ์๊ฐ ์ฝ๊ฒ ๋ชจ๋ํํ์ฌ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋๋ค.
@RequestParam๊ณผ @PathVariable์ ๊ณตํต์ ๊ณผ ์ฐจ์ด์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋ ์ด๋ ธํ ์ด์ ๋ชจ๋ URI๋ฅผ ํตํด ์ ๋ฌ๋ ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์์ค๋ ์ญํ ์ ํฉ๋๋ค.
@PathVariable์ ๊ฐ์ ํ๋๋ง ๋ฐ์ ์ฌ ์ ์๊ณ @RequestParam์ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ฌ ์ ์๋ค๋ ์ฐจ์ด์ ์ด ์์ต๋๋ค.
Spring IOC(์ ์ด์ ์ญ์ )์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
Spring IOC๋ ์ ์ด์ ์ญ์ ์ ์๋ฏธํ๋ฉฐ ๊ฐ๋ฐ์๊ฐ ํด์ผ ํ ์ผ์ Spring Framwork์์ ๋์ ํด์ค์ ์๋ฏธํฉ๋๋ค. ๊ฐ์ฒด ์์ฑ๊ณผ ์๋ช ์ฃผ๊ธฐ ๋ฐ ์์กด์ฑ์ ๊ฐ๋ฐ์ ๋์ Spring IOC Container๊ฐ ๊ด๋ฆฌํฉ๋๋ค.
Spring์์ ์์กด์ฑ์ ์ฃผ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
Spring์์ ์์กด์ฑ์ ์ฃผ์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์์ฑ์ ์ฃผ์ , ํ๋ ์ฃผ์ , ์ธํฐ ์ฃผ์ ์ด ์์ต๋๋ค.
ํ๋ ์ฃผ์ ์ @Autowired ์ด๋ ธํ ์ด์ ์ ํตํด ํ๋์ ์ง์ ์ฃผ์ ํ๋ ๋ฐฉ๋ฒ์ด๋ฉฐ, ์ธํฐ ์ฃผ์ ์ Setter ๋ฉ์๋๋ฅผ ํตํด ์์กด์ฑ์ ์ฃผ์ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์์ฑ์ ์ฃผ์ ๋ ๋ง ๊ทธ๋๋ก ์์ฑ์๋ฅผ ํตํด ์ฃผ์ ํ๋ ๋ฐฉ๋ฒ์ด๋ฉฐ, ์ด ๋ฐฉ๋ฒ์ด ํ ์คํธ์ ์ฉ์ดํ๊ณ ์ํ ์ฐธ์กฐ๋ฅผ ๋ฐฉ์งํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ถ์ฅ๋ฉ๋๋ค.
Spring Proxy(ํ๋ก์)์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
ํ๋ก์๋ โ๋๋ฆฌ์ธโ์ด๋ผ๋ ๋ป์ ๊ฐ์ง๋ฉฐ, ํด๋ผ์ด์ธํธ์ ์ค์ ๊ฐ์ฒด ์ฌ์ด์์ ์ค๊ฐ ์ญํ ์ ์ํํ๋ ๊ฐ์ฒด๋ฅผ ์๋ฏธํฉ๋๋ค. Spring AOP๊ฐ ํ๋ก์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ฉฐ, ์ฃผ๋ก ํธ๋์ญ์ ๊ธฐ๋ฅ์ด ํ๋ก์๋ฅผ ํตํด ๊ตฌํ๋ฉ๋๋ค.