Spring
- ์คํ๋ง์ IoC์ AOP๋ฅผ ์ง์ํ๋ ๊ฒฝ๋ ์ปจํ
์ด๋ ํ๋ ์์ํฌ.
- ๊ฐ์ธ์ ์ผ๋ก ์คํ๋ง์ ์ ์ข์ํ์ง๋ง ์คํ๋ง์ ์ฃผ์ ๊ฐ๋
๋ค์ด ๋ค๋ฅธ ํ๋ ์์ํฌ์ ๋ง์ ์ํฅ์ ์ค ๊ฒ ๊ฐ๋ค.
- ์ง๊ธ ์
๋ฌด์์๋ ์ฐ๊ณ ์๋ค. ์ฌ์ฉ๋ฒ์ ์๊ฒ ๋๋ฐ, ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์ ๋ชจ๋ฅด๊ฒ ๋ค.
Spring vs Spring Boot
- ์คํ๋ง์ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฝ๊ฒ ๋ง๋ค๊ธฐ ์ํ ํ๋ ์์ํฌ.
- ์คํ๋ง ๋ถํธ๋ ์คํ๋ง์ ๊ฐ์ข
์ค์ ์ ์๋ํํ ํ๋ ์์ํฌ:
- ์๋ฒ ๋๋ ํฐ์บฃ - ํฐ์บฃ์ด ๋ด์ฅ๋์ด ์์ด ๋ณ๋์ ์น ์๋ฒ ๊ตฌ์ถ์ด ๋ถํ์ํ๋ค.
- ๋ํ๋์ ์๋ํ - ๋ํ๋์์ ๋ฒ์ ์ถฉ๋์ ์ ๊ฒฝ์ธ ํ์๊ฐ ์๋ค.
- jar - war ํ์ผ๋ก ๋น๋๋๋ ์คํ๋ง๊ณผ ๋ฌ๋ฆฌ jar ํ์ผ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฐฐํฌ๊ฐ ์ฝ๋ค.
IoC(Invertion of Control) Container
- ์ปจํ
์ด๋๋ ์ค์ ์ ๋ฐ๋ผ ์ค๋ธ์ ํธ๋ฅผ ๊ด๋ฆฌํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์
์ ์ ๊ณตํ๋ค.
- IoC๋ ๊ฐ์ฒด๊ฐ ์์ ์ ๋ํ๋์๋ฅผ ์ ์ํ๋ ๊ณผ์ :
- ์ด๋ ๋ํ๋์๋ฅผ ๊ฐ์ฒด๊ฐ ์๋ ์ปจํ
์ด๋๊ฐ ๋ด๋นํ๋ฉฐ ์ญ์ ์ด ์ผ์ด๋๋ค.
- ๋งํด ํ์ธ๋ฌ๋ IoC๋ฅผ DI๋ผ๊ณ ๋ถ๋ฌ์ผ ํ๋ค๊ณ ์ฃผ์ฅํ๋ค.
org.springframework.context.ApplicationContext
์ธํฐํ์ด์ค๊ฐ ์คํ๋ง IoC ์ปจํ
์ด๋๋ฅผ ํํํ๋ค.
- ์ปจํ
์ด๋๋ XML, ์๋ฐ ์ด๋
ธํ
์ด์
, ๋๋ ์๋ฐ ์ฝ๋๋ก ํํ๋ ์ค์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฝ๋๋ค:
- ์ ํต์ ์ผ๋ก๋ XML์ ์ฌ์ฉํ๋ค -
<beans ...> ... </beans>
- ์ง๊ธ์ ๋๋ถ๋ถ ์๋ฐ ๊ธฐ๋ฐ์ ์ฌ์ฉํ๋ค -
@Configuration
, @Bean
, @Import
, @DependsOn
- high-level์์ ๋ณด๋ฉด ์ปจํ
์ด๋๋ ์ค์ ๋ฉํ๋ฐ์ดํฐ์ POJO๋ฅผ ์ฝ๊ณ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ๊ณตํ๋ ์ญํ ์ ํ๋ค:

Bean
Dependency Injection
- ์ ํ๋ฆฌ์ผ์ด์
์ด ์ปค์ง์๋ก ๊ฐ์ฒด๊ฐ์ ์์กด์ฑ์ด ๋ณต์กํด์ง๋ค:
- ์์กด์ฑ์ด ๋์ด๋๋ฉด ์ ๋ ํ
์คํธ๋ ์ด๋ ต๊ณ , ์ฝ๋์ ๋ณ๊ฒฝ๋ ์ด๋ ค์์ง๋ค.
- ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์
์ ์คํ๋ง ํ๋ ์์ํฌ์ ์ํด ๊ฐ์ฒด ์์กด์ฑ์ด ์ฃผ์
๋๋ค:
- ํ๋ ์์ํฌ์ ์ํด ์์กด์ฑ์ด ์ฃผ์
๋๋ฏ๋ก ๊ฐ์ฒด๊ฐ์ ๊ฒฐํฉ์ด ์ค์ด๋ ๋ค.
Without DI
public class Client {
private ExampleService service;
Client() {
service = new ExampleService();
}
public String greet() {
return "Hello " + service.getName();
}
}
With DI
Constructor-based Injection
Client(Service service) {
this.service = service;
}
class Client(private val service: Service) {
}
- ์คํ๋ง 4.3 ๋ฒ์ ๋ถํฐ ์์ฑ์๊ฐ ํ๋์ผ๋๋
@Autowired
์ด๋
ธํ
์ด์
์ ๋ถ์ด์ง ์์๋ ๋๋ค:
- ์ฝํ๋ฆฐ์ ํ ํด๋์ค์ ํ๋์ ์์ฑ์๋ง ์ ์ํ ์ ์์ผ๋ฏ๋ก ํญ์ ๋ถ์ด์ง ์๋๋ค๊ณ ์๊ฐํด๋ ๋๋ค.
Setter-based Injection
@Autowired
public void setService(Service service) {
this.service = service;
}
class Client {
@Autowired
lateinit var service: Service
}
@Autowired
์ด๋
ธํ
์ด์
์ ์ด์ฉํด ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ค์ ํ๋ค:
- ์ด๋๋ ์ด๋
ธํ
์ด์
์ ์๋ตํ ์ ์๋ค.
- ์ด๋
ธํ
์ด์
์ด ์๋๋ผ XML๋ก ์ ์ํ ์๋ ์๋ค.
- ๊ถ์ฅํ๋ ๋ฐฉ์์ ์๋๋ค.
AOP (Aspect-Oriented Programming)
- ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ.
- ํต์ฌ ๊ด์ฌ์ฌ์ ๋ถ๊ฐ ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํด ๋ชจ๋ํํ๋ ๋ฐฉ๋ฒ๋ก .
- ์คํ๋ง์ ๊ธฐ๋ฐ ์ฒ ํ์ AOP. ๋ง์ low-level API๋ฅผ ์ ๊ณตํ๋ค.
์ฐธ๊ณ ์๋ฃ
์ด ๋ฌธ์๋ฅผ ์ธ์ฉํ ๋ฌธ์