์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ž€?

2023. 9. 2. 18:02ยท ๐’๐ฉ๐ซ๐ข๐ง๐ /๐๐š๐ฌ๐ข๐œ
๋ชฉ์ฐจ
  1. 1. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ž€?
  2. 2. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์„ค์ • ์ •๋ณด ๊ตฌ์„ฑํ•˜๊ธฐ
  3. (1) ์• ๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜ ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์„ค์ •ํ•˜๊ธฐ
  4. (2) XML๋กœ ์„ค์ •ํ•˜๊ธฐ
  5. 3. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑํ•˜๊ธฐ
  6. 4. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋นˆ ์กฐํšŒํ•˜๊ธฐ

์ธํ”„๋Ÿฐ ๊น€์˜ํ•œ๋‹˜์˜ ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ ๊ฐ•์˜ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.


์ด์ „ ๊ธ€์—์„œ AppConfig์ฒ˜๋Ÿผ DI์™€ IoC๋ฅผ ํ•ด์ฃผ๋Š” ๊ฒƒ์„ DI ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค๋Š” ์ด์•ผ๊ธฐ๋ฅผ ํ–ˆ์—ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ์Šคํ”„๋ง์—์„œ DI์™€ IoC๋ฅผ ์ œ๊ณตํ•˜๋Š” ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

 

1. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ž€?

์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ์ปจํ…Œ์ด๋„ˆ์— ๋“ฑ๋ก๋œ ๊ฐ์ฒด๋“ค์˜ ์ƒ๋ช… ์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ๊ฐ์ฒด๋“ค์—๊ฒŒ ์ถ”๊ฐ€์ ์ธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋ก๋œ ๊ฐ์ฒด๋“ค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์Šคํ”„๋ง ๋นˆ ์‚ฌ์ด์— ์˜์กด๊ด€๊ณ„๋ฅผ ์ฃผ์ž…ํ•˜๋Š” ๊ฒŒ ๋ฐ”๋กœ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์˜ ์—ญํ• ์ด๋‹ค. ์ด์ „ ๊ธ€์—์„œ ๋ณด์•˜๋˜ AppConfig์˜ ์—ญํ• ์„ ๋‹ด๋‹นํ•œ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ๊ธฐ์กด์˜ AppConfig์™€๋Š” ๋ญ๊ฐ€ ๋‹ค๋ฅด๊ธธ๋ž˜ ๊ตณ์ด ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์“ฐ๋Š” ๊ฑธ๊นŒ?

 


2. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์„ค์ • ์ •๋ณด ๊ตฌ์„ฑํ•˜๊ธฐ

๋ฌผ๋ก  ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ํ•ด์„œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฌด์Šจ ํด๋ž˜์Šค์— ๋ฌด์Šจ ๊ตฌํ˜„์ฒด๊ฐ€ ํ•„์š”ํ•œ์ง€์— ๋Œ€ํ•ด ์•Œ๊ณ ์žˆ๋Š” ๊ฑด ์•„๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ• ์ง€, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ํด๋ผ์ด์–ธํŠธ์— ์–ด๋–ค ๊ตฌํ˜„์ฒด๋ฅผ ๋„ฃ์–ด์ค„์ง€์— ๋Œ€ํ•ด์„œ, ์ฆ‰ ์„ค์ • ์ •๋ณด๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์งœ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ์•Œ๋ ค์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋‹ค์–‘ํ•œ ์„ค์ • ํ˜•์‹์„ ์ง€์›ํ•œ๋‹ค.

 

(1) ์• ๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜ ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์„ค์ •ํ•˜๊ธฐ

๋จผ์ € ์„ค์ • ์ •๋ณด๋ฅผ ํด๋ž˜์Šค์— ๋‹ด์•„ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

 

@Configuration
public class AppConfig {

    @Bean
    public OrderService orderService() {
        return new OrderServiceImpl(discountPolicy());
    }

    @Bean
    public DiscountPolicy discountPolicy() {
        return new FixDiscountPolicy();
    }
}

 

์ด์ „์˜ AppConfig์— ๋ช‡๊ฐ€์ง€ ์• ๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•œ ์ƒํƒœ์ด๋‹ค.

์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” @Configuration์ด ๋ถ™์€ ํด๋ž˜์Šค๋ฅผ ์„ค์ • ์ •๋ณด๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์„ค์ • ์ •๋ณด ํด๋ž˜์Šค์—์„œ@Bean ์• ๋…ธํ…Œ์ด์…˜์ด ๋‹ฌ๋ฆฐ ๋ฉ”์„œ๋“œ๋ฅผ ๋ชจ๋‘ ํ˜ธ์ถœํ•œ ๋’ค, ๋ฐ˜ํ™˜๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ์ปจํ…Œ์ด๋„ˆ ์•ˆ์— ๋“ฑ๋กํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ๋“ฑ๋ก๋œ ๊ฐ์ฒด๋“ค์„ ์Šคํ”„๋ง ๋นˆ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

์Šคํ”„๋ง ๋นˆ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ @Bean์ด ๋ถ™์€ ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„์„ ์ž์‹ ์˜ ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์˜ˆ๋กœ ๋“ค์–ด๋ณด์ž๋ฉด, discountPolicy๋ผ๋Š” ์ด๋ฆ„์˜ ๋นˆ์€ FixDiscountPolicy ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค.

 

(2) XML๋กœ ์„ค์ •ํ•˜๊ธฐ

์ตœ๊ทผ์—๋Š” ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ, ๋ ˆ๊ฑฐ์‹œ ํ”„๋กœ์ ํŠธ๋“ค์€ ์—ฌ์ „ํžˆ ์„ค์ • ์ •๋ณด๊ฐ€ XML๋กœ ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•Œ์•„๋Š” ๋‘์ž.

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="orderService" class="hello.core.order.OrderServiceImpl">
        <constructor-arg name="discountPolicy" ref="discountPolicy"/>
    </bean>

    <bean id="discountPolicy" class="hello.core.discount.RateDiscountPolicy"/>
</beans> 

 

XML๋กœ ์„ค์ •ํ•  ๋•Œ๋Š” <constructor-arg>ํƒœ๊ทธ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ์ž์— ํ•„์š”ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋„˜๊ฒจ์ฃผ๋ฉด ๋œ๋‹ค. ref="discountPolicy"์—์„œ๋Š” id๊ฐ€ discountPolicy์ธ ๋นˆ์„ ์ฐพ์•„ ์ฃผ์ž…ํ•ด์ค€๋‹ค.

 


3. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑํ•˜๊ธฐ

์ด์ œ ์„ค์ • ์ •๋ณด๋ฅผ ๋„˜๊ฒจ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ด๋ณด์ž.
์• ๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜ ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋” ์ž์ฃผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ์ž๋ฐ” ์ฝ”๋“œ ์„ค์ •์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ดํŽด๋ณด๊ฒ ๋‹ค.

 

// ์• ๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜ ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์„ค์ •ํ–ˆ์„ ๋•Œ 
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);

// xml ํŒŒ์ผ๋กœ ์„ค์ •ํ–ˆ์„ ๋•Œ
ApplicationContext applicationContext = new GenericXmlApplicationContext(appConfig.xml);

 

 

new AnnotationConfigApplicationContext(AppConfig.class);๋ฅผ ํ†ตํ•ด ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ApplicationContext๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

 

ApplicationContext๋Š” ์ธํ„ฐํŽ˜์ด์Šค, AnnotationConfigApplicationContext๋Š” ๊ตฌํ˜„ ํด๋ž˜์Šค๋กœ, ๊ตฌํ˜„ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž์— ์„ค์ • ํด๋ž˜์Šค๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜๊ฒจ์ฃผ๋ฉด ์„ค์ • ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

 

์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—๋Š” ์Šคํ”„๋ง ๋นˆ ์ €์žฅ์†Œ๋ผ๋Š”๊ฒŒ ์กด์žฌํ•˜๋Š”๋ฐ, ์Šคํ”„๋ง ๋นˆ ์ €์žฅ์†Œ์—๋Š” Map<String, Object> ๊ฐ™์€ ๋А๋‚Œ์œผ๋กœ ๋นˆ ์ด๋ฆ„๊ณผ ๊ทธ์— ๋Œ€์‘๋˜๋Š” ๋นˆ ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” AppConfig.class์—์„œ @Bean์ด ๋‹ฌ๋ฆฐ ๋ฉ”์„œ๋“œ๋ฅผ ์ „๋ถ€ ํ˜ธ์ถœํ•˜์—ฌ ๋ฉ”์„œ๋“œ๋ช…์„ ๋นˆ ์ด๋ฆ„์œผ๋กœ, ๋ฐ˜ํ™˜ ๊ฐ์ฒด๋ฅผ ๋นˆ ๊ฐ์ฒด๋กœ ํ•˜์—ฌ ์ €์žฅ์†Œ์— ์Šคํ”„๋ง ๋นˆ์„ ๋“ฑ๋กํ•œ๋‹ค. ์ด ๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€, ๋นˆ ์ด๋ฆ„์€ ์ค‘๋ณต๋˜๋ฉด ์•ˆ๋œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ์„ค์ • ์ •๋ณด๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ์˜์กด๊ด€๊ณ„๋ฅผ ์ฃผ์ž…ํ•ด์ฃผ๋ฉด ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ์„ฑ์ด ์™„๋ฃŒ๋œ๋‹ค. AppConfig๋ฅผ ์˜ˆ๋กœ ๋“ค์ž๋ฉด, orderService์—๊ฒŒ discountPolicy๋ฅผ ์ฃผ์ž…ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

 


4. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋นˆ ์กฐํšŒํ•˜๊ธฐ

 

@Configuration
public class AppConfig {

    @Bean
    public OrderService orderService() {
        return new OrderServiceImpl(discountPolicy());
    }

    @Bean
    public DiscountPolicy discountPolicy() {
        return new FixDiscountPolicy();
    }
}

public class Main {
    public static void main(String args[]) {
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
        OrderService orderService = applicationContext.getBean("orderService");
        orderService.createOrder();
        ...
    }
}

 

์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ๋“ฑ๋ก๋œ ๋นˆ์€ applicationContext.getBean() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—์„œ ํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์ฐพ์•„์™€์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. getBean(๋นˆ์ด๋ฆ„, ํƒ€์ž…) ํ˜•์‹์œผ๋กœ ์ด๋ฆ„๊ณผ ํƒ€์ž…์„ ํ†ตํ•ด ์กฐํšŒํ•  ์ˆ˜๋„ ์žˆ๊ณ , getBean(ํƒ€์ž…) ์ฒ˜๋Ÿผ ํƒ€์ž…์œผ๋กœ๋งŒ ์กฐํšŒํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

๋‹จ, ํƒ€์ž…์œผ๋กœ ์กฐํšŒํ•˜๋Š” ๊ฒฝ์šฐ ๋ถ€๋ชจ ํƒ€์ž…์œผ๋กœ ์กฐํšŒํ•˜๋ฉด ๊ทธ ์ž์† ํƒ€์ž…๊นŒ์ง€ ์ „๋ถ€ ์กฐํšŒ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, DiscountPolicy ํƒ€์ž…์œผ๋กœ ์กฐํšŒํ•˜๋ฉด FixDiscountPolicy์™€ RateDiscountPolicy ํƒ€์ž…์˜ ๋นˆ๊นŒ์ง€ ์กฐํšŒ๋œ๋‹ค๋Š” ๋ง์ด๋‹ค. ๋งŒ์•ฝ ์กฐํšŒํ•  ๋นˆ์ด ์—†๊ฑฐ๋‚˜, ํƒ€์ž…์œผ๋กœ ์กฐํšŒํ–ˆ์„ ๋•Œ ๊ฐ™์€ ํƒ€์ž…์˜ ๋นˆ์ด 2๊ฐœ ์ด์ƒ์ด๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

 


์ฐธ๊ณ : https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/beans.html

'๐’๐ฉ๐ซ๐ข๐ง๐  > ๐๐š๐ฌ๐ข๐œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์ปดํฌ๋„ŒํŠธ ์Šค์บ”  (0) 2023.09.02
์Šคํ”„๋ง์—์„œ์˜ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด  (0) 2023.09.02
์ œ์–ด์˜ ์—ญ์ „(IoC)๊ณผ ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…(DI)์ด๋ž€?  (0) 2023.08.28
๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์˜ 5๊ฐ€์ง€ ์›์น™  (0) 2023.08.28
Spring๊ณผ ๊ฐ์ฒด์ง€ํ–ฅ์— ๋Œ€ํ•˜์—ฌ  (0) 2023.08.28
  1. 1. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ž€?
  2. 2. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์„ค์ • ์ •๋ณด ๊ตฌ์„ฑํ•˜๊ธฐ
  3. (1) ์• ๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜ ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์„ค์ •ํ•˜๊ธฐ
  4. (2) XML๋กœ ์„ค์ •ํ•˜๊ธฐ
  5. 3. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑํ•˜๊ธฐ
  6. 4. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋นˆ ์กฐํšŒํ•˜๊ธฐ
'๐’๐ฉ๐ซ๐ข๐ง๐ /๐๐š๐ฌ๐ข๐œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ์ปดํฌ๋„ŒํŠธ ์Šค์บ”
  • ์Šคํ”„๋ง์—์„œ์˜ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด
  • ์ œ์–ด์˜ ์—ญ์ „(IoC)๊ณผ ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…(DI)์ด๋ž€?
  • ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์˜ 5๊ฐ€์ง€ ์›์น™
gorapaduckoo
gorapaduckoo
gorapaduckoo
์ง„ํ™”์˜ ๋Œ
gorapaduckoo
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • ๐€๐ฅ๐ ๐จ๐ซ๐ข๐ญ๐ก๐ฆ
    • ๐‚๐’
      • ๐‰๐š๐ฏ๐š
      • ๐ƒ๐š๐ญ๐š๐›๐š๐ฌ๐ž
      • ๐๐ž๐ญ๐ฐ๐จ๐ซ๐ค
      • ๐„๐ญ๐œ.
    • ๐’๐ฉ๐ซ๐ข๐ง๐ 
      • ๐๐š๐ฌ๐ข๐œ
      • ๐Œ๐•๐‚ (๐Ÿ)
      • ๐’๐ž๐œ๐ฎ๐ซ๐ข๐ญ๐ฒ
    • ๐๐ซ๐จ๐ฃ๐ž๐œ๐ญ๐ฌ
      • ๐‘๐ž๐œ๐จ๐ฎ๐ซ๐ญ๐š
      • ๐’๐ข๐ฅ๐ญ๐š๐ซ๐š๐ž
    • ๐†๐ข๐ญ
    • ๐‘๐ž๐ฏ๐ข๐ž๐ฐ
    • ๐’๐ญ๐ฎ๐๐ฒ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • spring
  • ๊ตฌํ˜„
  • aop
  • ๋ธŒ๋ฃจํŠธํฌ์Šค
  • ๋„คํŠธ์›Œํฌ
  • web
  • Spring ๊ธฐ๋ณธํŽธ
  • DI
  • spring mvc
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ํŠธ๋ฆฌ
  • CS
  • ๋ฝ
  • http
  • ์—๋“œ๋ชฌ๋“œ-์นดํ”„
  • dp
  • DFS
  • ๋ฐฑ์ค€
  • ๋น„ํŠธ๋งˆ์Šคํ‚น
  • IOC
  • OOP
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • Union-FInd
  • mvc ํŒจํ„ด
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • BOJ

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.v4.2.2
gorapaduckoo
์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ž€?
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.