์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ๊ธฐ์ด100์
- ์๊ณ ๋ฆฌ์ฆ
- ๊ฐ์ฌ์ค
- java
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ํ์ด์ฌ
- mariadb
- JPA
- Postman
- Git
- Spring
- thymeleaf
- Python
- Spring Boot
- GitHub
- ๋กฌ๋ณต
- springboot
- MySQL
- spring security
- ํด๋ฆฐ ์ฝ๋
- Gradle
- ํด๋ฆฐ์ฝ๋
- H2 ์ค์น
- Vue.js
- ์คํ๋ง
- golang
- ์ฝ๋์
- Codeup
- go
- ์ค๋ธ์
- Today
- Total
nyximos.log
[Spring] ๋ค์ํ ์์กด๊ด๊ณ ์ฃผ์ ๋ฐฉ๋ฒ ๋ณธ๋ฌธ
๐คนโ๏ธ ๋ค์ํ ์์กด๊ด๊ณ ์ฃผ์ ๋ฐฉ๋ฒ
์์กด๊ด๊ณ ์ฃผ์ ์ 4๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
- ์์ฑ์ ์ฃผ์
- ์์ ์ ์ฃผ์ (setter ์ฃผ์ )
- ํ๋ ์ฃผ์
- ์ผ๋ฐ ๋ฉ์๋ ์ฃผ์
1. ์์ฑ์ ์ฃผ์
์ด๋ฆ ๊ทธ๋๋ก ์์ฑ์๋ฅผ ํตํด ์์กด๊ด๊ณ ์ฃผ์
์์ฑ์ ํธ์ถ์์ ์ ํ๋ฒ๋ง ํธ์ถ๋๋ ๊ฒ์ด ๋ณด์ฅ๋๋ค.
๋ถ๋ณ, ํ์ ์์กด๊ด๊ณ์ ์ฌ์ฉ๋๋ค.
๐ฎโ ์์ฑ์๊ฐ ๋ฑ 1๊ฐ ์์ผ๋ฉด @Autowired๋ฅผ ์๋ตํด๋ ์๋ ์ฃผ์ ๋๋ค. (์คํ๋ง ๋น์๋ง ํด๋น)
2. ์์ ์ ์ฃผ์ (setter ์ฃผ์ )
ํ๋ ๊ฐ์ ๋ณ๊ฒฝํ๋ ์์ ์ ๋ฉ์๋๋ฅผ ํตํด ์์กด๊ด๊ณ ์ฃผ์
์ ํ, ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ์ด ์๋ ์์กด๊ด๊ณ์ ์ฌ์ฉ๋๋ค.
์๋ฐ๋น ํ๋กํผํฐ ๊ท์ฝ์ ์์ ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๐ ์๋ฐ๋น JavaBean
JavaBeans Convention์ ๋ฐ๋ผ ์์ฑ๋ ์๋ฐ ํด๋์ค๐โ๏ธ ์ปดํฌ๋ํธ ๐ โ๏ธ
๐ ์๋ฐ๋น ํ๋กํผํฐ JavaBean Property
JavaBean์ ์ ์ฅ๋์๋ ๊ฐ
๐ ์๋ฐ๋น ํ๋กํผํฐ ๊ท์ฝ
ํ๋์ ๊ฐ์ ์ง์ ๋ณ๊ฒฝํ์ง ์๊ณ getter, setter ๋ฉ์๋๋ฅผ ์ด์ฉํด์ ๊ฐ์ ์์ ํ๊ฑฐ๋ ์ฝ๋ ๊ท์น
naming convention์ ์งํค์! → get/set+๋ฉค๋ฒ๋ณ์(๋๋ฌธ์๋ก ์์)
๋ค๋ฅธ ๊ท์ฝ๋ ์์๋ณด์
๐JavaBean Convention
1) ์๋ฐ๋น ํด๋์ค์๋ ๊ธฐ๋ณธ์์ฑ์๊ฐ ์์ด์ผ ํ๋ค.
2) ์๋ฐ๋น ํด๋์ค๋ ๊ธฐ๋ณธ ํจํค์ง๊ฐ ์๋ ํน์ ์ง์ ํ ํจํค์ง์ ์ ์ฅ๋์ด์ผ ํ๋ค.
3) ๋ฉค๋ฒ ๋ณ์์ ์ง์ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋ง์! ๋ฐ๋ผ์ ๋ฉค๋ฒ ๋ณ์์ ์ ๊ทผ์ ์ด์๋ private๋ก ์ ์ธํ๋ค.
4) ๋ฉค๋ฒ ๋ณ์์ ์ ๊ทผํ๊ธฐ ์ํด getter, setter ๋ฉ์๋๋ฅผ public์ผ๋ก ์ง์ ํ๋ค.
5) ์ง๋ ฌํ(Serializable )๊ฐ ๊ฐ๋ฅํด์ผ ํ๋ค.(์ ํ)→ ๋น์ ์ํ๋ฅผ ์์ ์ ์ผ๋ก ์ ์ฅ, ๋ณต์ํ๋ค.
๐ค์ง๋ ฌํ๋? ๊ฐ์ฒด๋ฅผ ์ ์ถ๋ ฅ์ ์ฌ์ฉํ ์ ์๋๋ก ๊ฐ์ฒด ๋ฉค๋ฒ๋ค์ ๋ฐ์ดํธ ํํ๋ก ๋ณํ์ํค๋ ๊ฒ
3. ํ๋ ์ฃผ์
ํ๋์ ๋ฐ~๋ก ์ฃผ์
์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ ์ข์ง๋ง ํ ์คํธํ๊ธฐ ํ๋ค๋ค. ์ธ๋ถ์์ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ์ง ๋ง์
์ด๋ฐ ์ํฉ์์๋ง ์ฌ์ฉํ์!
1) ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ ์ฝ๋์ ๊ด๊ณ์๋ ํ ์คํธ ์ฝ๋
2) ์คํ๋ง ์ค์ ์ ๋ชฉ์ ์ผ๋ก ํ๋ @Configuration ๊ฐ์ ๊ณณ
4. ์ผ๋ฐ ๋ฉ์๋ ์ฃผ์
์ผ๋ฐ ๋ฉ์๋๋ฅผ ํตํด ์ฃผ์
ํ๋ฒ์ ์ฌ๋ฌ ํ๋๋ฅผ ์ฃผ์ ๋ฐ์ ์ ์์ง๋ง ์ ์ฌ์ฉ ์ํ๋ค ๊ณ ํ๋ค ~
๐ฉ๐ค ์ต์ ์ฒ๋ฆฌ
์คํ๋ง ๋น์ด ์์ด๋ ๋์๊ฐ๊ฒ ํด์ผํ ๋๊ฐ ์๋๋ฐ
@Autowired์ required ์ต์ ์ ๊ธฐ๋ณธ๊ฐ์ด true๋ผ์ ์ฃผ์ ํ ๋์์ด ์์ด ์ค๋ฅ๊ฐ ๋ ๋๊ฐ ์๋ค.
์๋ ์ฃผ์ ๋์์ ์ต์ ์ผ๋ก ์ฒ๋ฆฌํ๋๋ฐฉ๋ฒ์ ์์๋ณด์
์๋ ์ฃผ์ ํ ๋์์ด ์์ผ๋ฉด ~~
- @Autowired(required=false) : ์์ ์ ๋ฉ์๋ ์์ฒด๊ฐ ์ค๋ฅ๊ฐ ๋์ง ์๋๋ค.
- org.springframework.lang.@Nullable : null์ด ์ ๋ ฅ๋๋ค.
- Optional<> : Optional.empty๊ฐ ์ ๋ ฅ๋๋ค.
๐ฉ๐ฌ ์์ฑ์ ์ฃผ์ ์ ํ
๊ณผ๊ฑฐ์๋ ์์ ์ ์ฃผ์ ๊ณผ ํ๋ ์ฃผ์ ์ ๋ง์ด ์ฌ์ฉํ๋ค๊ณ ํ๋ค.
์ต๊ทผ์๋ DI ํ๋ ์์ํฌ ๋๋ถ๋ถ์ด ์์ฑ์ ์ฃผ์ ์ ๊ถ์ฅํ๋ค๊ณ ํ๋๋ฐ
์ด์ ๋ ๋ถ๋ณ, ๋๋ฝ, final ํค์๋ ๋๋ฌธ์ด๋ค.
1. ๋ถ๋ณ
๋๋ถ๋ถ์ ์์กด๊ด๊ณ ์ฃผ์ ์ ํ๋ฒํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ข ๋ฃ์์ ๊น์ง ์์กด๊ด๊ณ๋ฅผ ๋ณ๊ฒฝํ ์ผ์ด ์๋ค. ๋๋ถ๋ถ ๋ณํ๋ฉด ์๋๋ค.
์์ ์ ์ฃผ์ ์ ์ฌ์ฉํ๋ฉด setXX ๋ฉ์๋๋ฅผ public์ผ๋ก ์ด์ด๋์.
์์ฑ์์ฃผ์ ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ํ๋ฒ๋ง ํธ์ถ๋๋ฏ๋ก ๋ถ๋ณํ๊ฒ ์ค๊ณํ ์ ์๋ค.
2. ๋๋ฝ
ํ๋ ์์ํฌ ์์ด ์์ํ ์๋ฐ ์ฝ๋๋ฅผ ๋จ์ ํ ์คํธ ํ ๋, ์์ ์ ์์กด๊ด๊ณ์ธ ๊ฒฝ์ฐ
@Autowired๊ฐ ํ๋ ์์ํฌ ์์์ ๋์ํ ๋ ์์กด๊ด๊ณ ์์ผ๋ฉด ์ค๋ฅ๋ฐ์ํ๋ค.
(์ง๊ธ์ ํ๋ ์์ํฌ ์์ด ์์ํ ์๋ฐ ์ฝ๋๋ก๋ง ๋จ์ ํ ์คํธ ์ํํ๋ค.)
์์กด๊ด๊ณ๊ฐ ์์ผ๋ฉด Null Point Exception์ด ๋ฐ์ํ๋๋ฐ
์์ฑ์ ์ฃผ์ ์ ์ฌ์ฉํ๋ฉด ์ฃผ์ ๋ฐ์ดํฐ๋ฅผ ๋๋ฝํ์๋ ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
์ ์ผ ์ข์ ์ค๋ฅ๋ ์ปดํ์ผ ์ค๋ฅ~ ๐งโ๏ธ
3. final
์์ฑ์ ์ฃผ์ ์ฌ์ฉ์ ํ๋์ final ํค์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ฐ.
๊ทธ๋์ ์ปดํ์ผ ์์ ์ ์์ฑ์์์ ๊ฐ์ด ์ค์ ๋์ง ์๋ ์ค๋ฅ๋ฅผ ๋ง์์ค๋ค.
java: variable discountPolicy might not have been initialized
๐ฏ ์์ฑ์ ์ดํ์ ๋๋จธ์ง ์ฃผ์ ๋ฐฉ์์ด ํธ์ถ๋๊ธฐ ๋๋ฌธ์, ์์ฑ์ ์ฃผ์ ๋ง final ํค์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค๊ณ ํ๋ค!
๐ถ ๋กฌ๋ณต๊ณผ ์ต์ ํธ๋๋
๋ง์ ๊ฐ๋ฐํ๋ฉด ๋๋ถ๋ถ ๋ถ๋ณ์ด๋ผ์ ์์ฑ์์ final์ ์ฌ์ฉํ๊ฒ ๋๋ค๊ณ ํ๋ค.
์ด๊ฑธ ํธํ๊ฒ ํด์ฃผ๋๊ฒ ๋กฌ๋ณต ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค.
๋กฌ๋ณต์์ ์ ๊ณตํ๋ @RequiredArgsConstructor๋ฅผ ์ฌ์ฉํ๋ฉด
final ํ๋๋ฅผ ๋ชจ์์ ์์ฑ์๋ฅผ ์๋์ผ๋ก ๋ง๋ค์ด์ค๋ค๊ณ ํ๋ค.๐
๐คฏ ์กฐํ ๋น์ด 2๊ฐ ์ด์
@Autowired๋ ํ์ Type์ผ๋ก ์กฐํํ๋ค.
ํ์ ์ผ๋ก ์กฐํํ๋ฉด ์ ํ๋ ๋น์ด 2๊ฐ ์ด์์ผ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
NoUniqueBeanDefinitionException ์ค๋ฅ!
NoUniqueBeanDefinitionException: No qualifying bean of type
'hello.core.discount.DiscountPolicy' available: expected single matching bean
but found 2: fixDiscountPolicy,rateDiscountPolicy
ํ์ ํ์ ์ผ๋ก ์ง์ ํ ์ DIP๋ฅผ ์๋ฐฐํ๊ณ ์ ์ฐ์ฑ์ด ๋จ์ด์ง๋ค.
๋๊ฐ์ ํ์ ์ ์คํ๋ง ๋น์ด 2๊ฐ ์์ ๋๋ ํด๊ฒฐ์ด ์๋๋ค.
ํด๊ฒฐ๋ฐฉ๋ฒ์ ์ธ๊ฐ์ง๊ฐ ์๋ค.
- @Autowired ํ๋ ๋ช ๋งค์นญ
- @Qualifier → @Qualifier๋ผ๋ฆฌ ๋งค์นญ ๋น ์ด๋ฆ ๋งค์นญ
- @Primary ์ฌ์ฉ
1. @Autowired ํ๋๋ช
1) ํ์ ๋งค์นญ
2) ํ์ ๋งค์นญ์ ๊ฒฐ๊ณผ๊ฐ ์ฌ๋ฌ๊ฐ์ผ๋ ํ๋๋ช , ํ๋ผ๋ฏธํฐ๋ช ์ผ๋ก ๋น ์ด๋ฆ ๋งค์นญ
2. @Qualifier
๋น์ด๋ฆ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์๋๋ผ ์ถ๊ฐ ๊ตฌ๋ถ์๋ฅผ ๋ถ์ฌ์ค๋ค.
1) ๋น ๋ฑ๋กํ ๋ @Qualifier๋ฅผ ๋ถ์ฌ์ค๋ค.
2) ์ฃผ์ ํ ๋ @Qualifier("๋ฑ๋กํ ์ด๋ฆ")์ ์ ์ด์ค๋ค.
3) @Qualifier ๋ผ๋ฆฌ ๋งค์นญ
4) ๋น ์ด๋ฆ ๋งค์นญ
5) NoSuchBeanDefinitionException ๋ฐ์
3. @Primary
@Autowired ์์ ์ฌ๋ฌ๋น์ด ๋งค์นญ๋๋ฉด @Primary๊ฐ ์ฐ์ ๊ถ์ ๊ฐ์ง๋ค.
@Primary๋ ๊ธฐ๋ณธ๊ฐ์ฒ๋ผ ๋์๋๋ฏ๋ก @Qualifier๊ฐ ๋ ์ฐ์ ๊ถ์ด ๋๋ค.
๐ฉ๐ญ ์ ๋ ธํ ์ด์ ์ง์ ๋ง๋ค๊ธฐ
์๋ฌด๋ ๊ฒ๋ ์ฐ์ง๋ง๊ณ ๊ณตํต์ผ๋ก ๋์ํ๋ ๊ฒ์ด ๋ญ์ง ๊ผญ ํ์ํ์ง ์ ์๊ฐํด๋ณด๊ณ ๋ง๋ค์ด์ ์ฌ์ฉํ์.
@interface ์ ๋ํ
์ด์
๋ช
{
ํ์
์์์ด๋ฆ(); // ์ ๋ํ
์ด์
์ ์์ ์ ์ธ
...
}
- ํ์ ์ @interface๋ก ์ ์
- ํ๋ผ๋ฏธํฐ ๋ฉค๋ฒ๋ค์ ์ ๊ทผ ์ ์ด์๋ public์ด๋ default๋ก ์ง์
- annotation ์ถ๊ฐ
- ์์ ์ถ๊ฐ
๐ Annotation ์์์ ๊ท์น
- ์์์ ํ์ ์ ๊ธฐ๋ณธํ, String, enum, annotation, Class๋ง ํ์ฉ๋๋ค.
- () ์์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ธํ ์ ์๋ค.
- ์์ธ๋ฅผ ์ ์ธํ ์ ์๋ค.
- ์์๋ฅผ ํ์ ๋งค๊ฐ๋ณ์๋ก ์ ์ํ ์ ์๋ค.
๐ Annotation
JDK1.5๋ฒ์ ์ด์์์ ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
์๋ฐ ์์ค ์ฝ๋์ ์ถ๊ฐํ์ฌ ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๋ฉํ๋ฐ์ดํฐ์ด๋ค.
built-in annotation๊ณผ meta annotation์ผ๋ก ๋๋๋ค.
built-in annotation
Java ์ฝ๋์์ ์ ์ฉ๋๋ Annotation
- @Overried : ์ปดํ์ผ๋ฌ์๊ฒ ์ค๋ฒ๋ผ์ด๋ฉํ๋ ๊ฒ์ด๋ผ๊ณ ์๋ฆฐ๋ค.
- @Deprecated : ์์ผ๋ก ์ฌ์ฉํ์ง ์์ ๊ฒ์ ๊ถ์ฅํ๋ ๋์์๊ฒ ๋ถ์ธ๋ค.
- @SupperssWarnings : ์ปดํ์ผ๋ฌ์ ํน์ ๊ฒฝ๊ณ ๋ฉ์์ง๊ฐ ๋ํ๋์ง ์๊ฒ ํด์ค๋ค.
meta annotation
๋ค๋ฅธ Annotation์ ์ ์ํ๊ธฐ ์ํ Annotation
- @Target : annotation์ด ์ ์ฉ๊ฐ๋ฅํ ๋์์ ์ง์
- @Retention : annotation์ด ์ ์ง๋๋ ๋ฒ์ ์ง์
- @Documented : annotation ์ ๋ณด๊ฐ javadoc์ผ๋ก ์์ฑ๋ ๋ฌธ์์ ํฌํจ๋๊ฒ ํ๋ค.
- @Inherited : annotation์ด ์์ ํด๋์ค์ ์์๋๋๋ก ํ๋ค.
- @Repeatable : annotation์ ๋ฐ๋ณตํด์ ์ ์ฉํ ์ ์๊ฒ ํ๋ค.
๐ฉ๐ณ ์กฐํํ ๋น์ด ๋ชจ๋ ํ์ํ ๋, List, Map
์คํ๋ง ๋น์ด ๋ค ํ์ํ ๋๊ฐ ์๋ค.
๊ทธ๋ด๋๋ Map์ผ๋ก ๋ชจ๋ ์ฃผ์ ๋ฐ๊ณ . ๋ฉ์๋๋ฅผ ์ ์ํ์ฌ map์์ ์คํ๋ง ๋น์ ์ฐพ์ ์คํํ๋ค.
public int discount(Member member, int price, String discountCode) {
DiscountPolicy discountPolicy = policyMap.get(discountCode);
System.out.println("discountCode = " + discountCode);
System.out.println("discountPolicy = " + discountPolicy);
return discountPolicy.discount(member, price);
}
Map<String, DiscountPolicy> : map์ ํค์ ์คํ๋ง ๋น์ ์ด๋ฆ์ ๋ฃ์ด์ฃผ๊ณ ๊ฐ์๋ DiscountPolicy ํ์ ์ผ๋ก ์กฐํํ ๋ชจ๋ ์คํ๋ง ๋น์ ๋ด์์ค๋ค.
List<DiscountPolicy> : DiscountPolicy ํ์ ์ผ๋ก ์กฐํํ ๋ชจ๋ ์คํ๋ง๋น์ ๋ด์์ค๋ค.
ํด๋นํ๋ ํ์ ์ ์คํ๋ง ๋น์ด ์์ผ๋ฉด ๋น ์ปฌ๋ ์ ์ด๋ Map์ ์ฃผ์ ํ๋ค.
์คํ๋ง ์ปจํ
์ด๋๋ฅผ ์์ฑํ๋ฉด์ ์คํ๋ง ๋น ๋ฑ๋กํ๊ธฐ
ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class);
์คํ๋ง ์ปจํ ์ด๋๋ ์์ฑ์์ ํด๋์ค ์ ๋ณด๋ฅผ ๋ฐ๋๋ค.
ํด๋์ค ์ ๋ณด๋ฅผ ๋๊ธฐ๋ฉด ํด๋น ํด๋์ค๊ฐ ์คํ๋ง ๋น์ผ๋ก ์๋ ๋ฑ๋ก๋๋ค.
1) new AnnotationConfigApplicationContext()๋ฅผ ํตํด ์คํ๋ง ์ปจํ ์ด๋ ์์ฑ!
2) AutoAppConfig.class, DiscountService.class ๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋๊ธฐ๋ฉด์ ํด๋น ํด๋์ค ์๋์ผ๋ก ์คํ๋ง ๋น ๋ฑ๋ก
๐ฆนโ๏ธ ์๋, ์๋์ ์ฌ๋ฐ๋ฅธ ์ค๋ฌด ์ด์ ๊ธฐ์ค
- ์๋ ๋น ๋ฑ๋ก์ ์ฌ์ฉํด๋ OCP, DIP๋ฅผ ์งํฌ ์ ์์ผ๋ ์๋ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ์!
- ์ง์ ๋ฑ๋กํ๋ ๊ธฐ์ ์ง์ ๊ฐ์ฒด๋ ์๋์ผ๋ก ๋ฑ๋กํ์!
- ๋คํ์ฑ์ ์ ๊ทน ํ์ฉํ๋ ๋น์ฆ๋์ค ๋ก์ง์ ์๋ ๋ฑ๋ก์ ๊ณ ๋ คํ์!
→ ์๋์ผ๋ก ํ ๊ฑฐ๋ฉด ํน์ ํจํค์ง์ ๋ฌถ๊ธฐ
์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฌด ๋ก์ง๊ณผ ๊ธฐ์ ์ง์ ๋ก์ง์ผ๋ก ๋๋ ์ ์๋ค.
1) ์ ๋ฌด ๋ก์ง ๋น
controller(์น ์ง์), service(ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง), repository(๋ฐ์ดํฐ ๊ณ์ธต์ ๋ก์ง์ ์ฒ๋ฆฌ)
๋ณดํต ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ์ ๊ฐ๋ฐํ ๋ ์ถ๊ฐ๋๊ฑฐ๋ ๋ณ๊ฒฝ๋จ
์ ์ฌํ ํจํด์ด ์์ผ๋ ์๋ ๊ธฐ๋ฅ์ ์ ๊ทน ์ฌ์ฉํ์ → ๋ฌธ์ ํ์ ์ฌ์
2) ๊ธฐ์ ์ง์ ๋น
๊ธฐ์ ์ ์ธ ๋ฌธ์ , ๊ณตํต ๊ด์ฌ์ฌ(AOP) ์ฒ๋ฆฌ ์์ ์ฃผ๋ก ์ฌ์ฉ
๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ฐ๊ฒฐ, ๊ณตํต ๋ก๊ทธ ์ฒ๋ฆฌ ๋ฑ ์ ๋ฌด๋ก์ง์ ์ง์ํ๊ธฐ ์ํ ํ๋ถ ๊ธฐ์ ์ด๋ ๊ณตํต ๊ธฐ์
์ ๋ฌด ๋ก์ง์ ๋นํด ์๊ฐ ์ ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ๊ฑธ์ณ ๊ด๋ฒ์ํ๊ฒ ์ํฅ์ ๋ผ์น๋ค.
→ ์๋ ๋น์ผ๋ก ๋ฑ๋กํ์ฌ ์ค์ ์ ๋ณด์ ๋ช ํํ๊ฒ ๋ํ๋๊ฒ ํ์
์ฐธ์กฐ
๋จ๊ถ์ฑ, ์๋ฐ์ ์ ์ ๊ธฐ์ดํธ, ๋์ฐ์ถํ, 2019
๊น์ํ, ์คํ๋ง ํต์ฌ ์๋ฆฌ - ๊ธฐ๋ณธํธ https://inf.run/ryWP
์๋ฐ๋น - https://en.wikipedia.org/wiki/JavaBeans
์๋ฐ๋น ๊ท์ฝ - https://dololak.tistory.com/133
Annotation - https://mangkyu.tistory.com/130
'Programming > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] ๋น ์ค์ฝํ (0) | 2022.01.27 |
---|---|
[Spring] ๋น ์๋ช ์ฃผ๊ธฐ ์ฝ๋ฐฑ (0) | 2022.01.18 |
[Spring] ์ฑ๊ธํค ์ปจํ ์ด๋๋? (1) | 2022.01.13 |
[Spring] ์ปดํฌ๋ํธ ์ค์บ๊ณผ @Autowired (2) | 2022.01.12 |
[Spring] @Configuration, @Bean, ์คํ๋ง ์ปจํ ์ด๋ (2) | 2022.01.12 |