๐Ÿซ˜Bean์ด๋ž€? ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ

์ดํžยท2024๋…„ 5์›” 20์ผ
0

๐Ÿค”๊ธฐ์ดˆ ๊ณต๋ถ€

๋ชฉ๋ก ๋ณด๊ธฐ
1/8

๊ฐœ๋ฐœ์„ ๋ฐฐ์šฐ๋ฉด์„œ ์–ธ์  ๊ฐ€ ๋ถ€ํ„ฐ ๋“ฑ์žฅํ•˜๋Š” ๋‹จ์–ด 'Bean'
์ž์ฃผ ๋“ฑ์žฅํ•˜๋‹ค๋ณด๋‹ˆ ์–ด๋ ดํ’‹์ด ์•Œ๊ณ ์žˆ๋Š” ๊ฐœ๋…์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๊ฐœ๋…์„ ํ™•์‹คํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋„˜์–ด๊ฐ”๋”๋‹ˆ ๋“ฑ์žฅํ• ๋•Œ ๋งˆ๋‹ค ๋Œ€์ฒด ์ € ๋†ˆ์˜ ์ •์ฒด๋Š” ๋ฌด์—‡์ธ๊ฐ€ ์ ์  ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œ ์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ๊ทธ๋ฆฌํ•˜์—ฌ ํ™•์‹คํ•œ ์ดํ•ด๋ฅผ ํ•˜๊ธฐ์œ„ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๊ธฐ๋กœ ํ•œ๋‹ค.

Java Beans์™€ Spring Bean

bean์€ ์Šคํ”„๋ง์—์„œ๋งŒ ๋‚˜์˜ค๋Š”์ค„ ์•Œ์•˜๋Š”๋ฐ java beans๋ผ๋Š” ๋‹จ์–ด๊นŒ์ง€ ๋‚˜ํƒ€๋‚˜๋ฒ„๋ ธ๋‹ค.
๋‘๋‘ฅ...! ๋‘ ๋‹จ์–ด๋Š” ๊ฐ๊ฐ ๋ฌด์—‡์„ ๋งํ•˜๋Š” ๊ฑด์ง€ ์‚ดํŽด๋ณด์ž!

Java Beans

-> Java Beans๋Š” java๋กœ ์ž‘์„ฑ๋œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋งํ•˜๋ฉด ๋„ˆ๋ฌด ์–ด๋ ต๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด์„œ ํŠน์ • ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง„ Java ํด๋ž˜์Šค๋ฅผ ๋งํ•œ๋‹ค.
Java Beans์˜ ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์†์„ฑ(๋ฉค๋ฒ„ ๋ณ€์ˆ˜)์€ private์œผ๋กœ ์ž‘์„ฑ
  • getter / setter๋ฅผ ์ œ๊ณตํ•  ๊ฒƒ
  • ์ƒ์„ฑ์ž๊ฐ€ ์—†๊ฑฐ๋‚˜ ๋ฐ˜๋“œ์‹œ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š”(no-argument) ์ƒ์„ฑ์ž๊ฐ€ ์žˆ์„ ๊ฒƒ

-DTO๋‚˜ VOํด๋ž˜์Šค๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ด๊ฐ€ ์‰ฝ๋‹ค.
-์ฃผ๋กœ s๋ฅผ ๋ถ™์—ฌ beans๋ผ๊ณ  ํ•œ๋‹ค.
๊ทธ ์ด์œ ๋Š” Java Beans๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ •์˜ํ•˜๋Š” ๊ทœ์•ฝ์ด๋ฏ€๋กœ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ด๋Ÿฐ ๊ทœ์•ฝ์„ ๋”ฐ๋ฅด๋Š” ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•  ๋•Œ "Beans"๋ผ๋Š” ๋ณต์ˆ˜ํ˜•์„ ์‚ฌ์šฉํ•œ๋‹ค.

Spring Bean

-> Spring Bean์€ Spring IoC(Inversion of Control) ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ Spring ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด์ด๋ฉฐ, ์˜์กด์„ฑ ์ฃผ์ž…์„ ํ†ตํ•ด ๊ฐ์ฒด ๊ฐ„์˜ ์˜์กด ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
์„ค์ • ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

xml์„ค์ • ํŒŒ์ผ์— ์ž‘์„ฑ
@Component ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์„ค์ •
*@Bean ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์„ค์ •

Spring Bean์˜ ์„ค์ • ๋ฐฉ๋ฒ•

1. xml์„ค์ • ํŒŒ์ผ์— bean์„ ์ •์˜

  <!-- Bean ์ •์˜ ์˜ˆ์‹œ-->
    <bean id="myBean" class="com.example.MyBean">
        <property name="propertyName" value="propertyValue" />
    </bean> 

2. @Component ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์„ค์ •

์–ด๋…ธํ…Œ์ด์…˜์„ ํด๋ž˜์Šค์— ์‚ฌ์šฉ

@Component
public class MyBean {
    private String propertyName; 
    ...}

3. @Bean ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์„ค์ •

๋ฉ”์†Œ๋“œ์— ์‚ฌ์šฉ๋˜๋ฉฐ ์ด ๋ฉ”์„œ๋“œ๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ Spring ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•œ๋‹ค. ์ฃผ๋กœ @Configurationํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.

@Configuration
public class AppConfig {
    @Bean
    public MyBean myBean() {
        return new MyBean();
    }
}

+++
@Component ์–ด๋…ธํ…Œ์ด์…˜์ด ์žˆ๋Š” ํด๋ž˜์Šค ๋‚ด์—์„œ๋„ @Bean์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, @Configuration๊ณผ๋Š” ์ฐจ์ด์ ์ด ์žˆ๋‹ค. @Configuration ํด๋ž˜์Šค๋Š” ์ „์ฒด ํด๋ž˜์Šค๊ฐ€ ํ”„๋ก์‹œ๋กœ ๊ฐ์‹ธ์ ธ์„œ ๋นˆ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœํ•  ๋•Œ ๊ฐ™์€ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐ˜๋ฉด์— @Component๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์ด์™€ ๊ฐ™์€ ํ”„๋ก์‹œ๊ฐ€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋™์ผํ•œ @Bean ๋ฉ”์„œ๋“œ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœํ•  ๋•Œ ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

profile
๋ฉ๋ฐœ์ž์—์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๋Š” ๊ธธ

0๊ฐœ์˜ ๋Œ“๊ธ€