์ปดํฌ๋ํธ ์ค์บ์ด๋?
์คํ๋ง ์ปดํฌ๋ํธ ์ค์บ์ ์คํ๋ง ์ปจํ ์ด๋๊ฐ ํน์ ํจํค์ง๋ฅผ ์ค์บํ์ฌ, @Component ์ด๋ ธํ ์ด์ ์ด ๋ถ์ ํด๋์ค๋ฅผ ์๋์ผ๋ก ๋น(Bean)์ผ๋ก ๋ฑ๋กํ๋ ๊ธฐ๋ฅ์ด๋ค. ์๋์ผ๋ก ๋น์ ๋ฑ๋กํ๋ ๋ฒ๊ฑฐ๋ก์์ ์ค์ด๊ณ , ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ผ ์ ์๋ค.
์ปดํฌ๋ํธ ์ค์บ์ ์ฅ์
- ์๋ํ : @Component ์ด๋ ธํ ์ด์ ์ ํตํด ์๋์ผ๋ก ๋น์ ๋ฑ๋ก ํ ์ ์๋ค.
- ๊ฐํธํจ, ์ ์ฐ์ฑ : ๋น ๋ฑ๋ก์ ์ํ ์ค์ ์ฝ๋๊ฐ ์ค์ด๋ค์ด ๊ฐํธํ๊ณ , ํน์ ํจํค์ง๋ฅผ ์ค์บํ์ฌ ํ์ํ ๋น์ ์๋์ผ๋ก ๋ฑ๋กํ๋ฏ๋ก, ๋ณ๊ฒฝ์ ์ ์ฐํ๊ฒ ๋์ ๊ฐ๋ฅ
์ปดํฌ๋ํธ ์ค์บ ์ค์ ๋ฐฉ๋ฒ
XML ์ค์
<context:component-scan base-package="com.example"/>
com.example ํจํค์ง์ ๊ทธ ์๋ ํจํค์ง์์ @Component ๊ฐ ๋ถ์ ํด๋์ค๋ฅผ ์ค์บํ์ฌ ๋น์ผ๋ก ๋ฑ๋กํ๋ค.
Java Config์ค์
@Configuration
@ComponentScan(basePackages = "com.example")
public class AppConfig {
}
xml์ฒ๋ผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋น์ ๋ฑ๋กํ๋ค.
์ปดํฌ๋ํธ ์ค์บ ์ด๋ ธํ ์ด์
@Component ์ด๋ ธํ ์ด์ ์ ์คํ๋ง ์ปดํฌ๋ํธ ์ค์บ ๊ณผ์ ์์ ์๋์ผ๋ก ๋น์ผ๋ก ๋ฑ๋ก๋ ํด๋์ค๋ฅผ ๋ํ๋ธ๋ค
@Component
public class MyService {
public void doSomething() {
System.out.println("Doing something...");
}
}
@Controller, @Service, @Repository
์คํ๋ง์ @Component ์ธ์๋ ํน์ ์ญํ ์ ๊ฐ์ง ํด๋์ค๋ฅผ ๋ช ์์ ์ผ๋ก ๋ํ๋ด๊ธฐ ์ํด @Controller, @Service, @Repository ์ด๋ ธํ ์ด์ ์ ์ ๊ณต. ์ด ์ด๋ ธํ ์ด์ ๋ค์ @Component์ ํน์ํ ํํ๋ก ๊ฐ์ฃผ
- @Controller: ์น ์ปจํธ๋กค๋ฌ ์ญํ ์ ํ๋ ํด๋์ค์ ์ฌ์ฉ๋จ
- @Service: ์๋น์ค ์ญํ ์ ํ๋ ํด๋์ค์ ์ฌ์ฉ๋จ.
- @Repository: ๋ฐ์ดํฐ ์ ๊ทผ ๊ฐ์ฒด(DAO) ์ญํ ์ ํ๋ ํด๋์ค์ ์ฌ์ฉ๋จ.
ํํฐ๋ฅผ ์ฌ์ฉํ ์ปดํฌ๋ํธ ์ค์บ
ํฌํจ ํํฐ
@Configuration
@ComponentScan(basePackages = "com.example", includeFilters = @ComponentScan.Filter(Service.class))
public class AppConfig {
}
์ ์ธ ํํฐ
@Configuration
@ComponentScan(basePackages = "com.example", excludeFilters = @ComponentScan.Filter(Controller.class))
public class AppConfig {
}
@ComponentScan์ ๋ค์ํ ์์ฑ
basePackages
@ComponentScan(basePackages = {"com.example", "com.another"})
basePackageClasses
@ComponentScan(basePackageClasses = MyClass.class)
์ปดํฌ๋ํธ ์ค์บ์ ์ฌ์ฉ ์
์๋น์ค ํด๋์ค ์ ์
@Service
public class MyService {
public void doSomething() {
System.out.println("Doing something...");
}
}
์ปจํธ๋กค๋ฌ ํด๋์ค ์ ์
@Controller
public class MyController {
private final MyService myService;
@Autowired
public MyController(MyService myService) {
this.myService = myService;
}
@RequestMapping("/do")
public String doSomething() {
myService.doSomething();
return "done";
}
}
์ค์ ํด๋์ค ์ ์
@Configuration
@ComponentScan(basePackages = "com.example")
public class AppConfig {
}
๋ฉ์ธ ํด๋์ค ์ ์
public class Main {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
MyController controller = context.getBean(MyController.class);
controller.doSomething();
}
}
์ ๋ฆฌ
- ์คํ๋ง ์ปดํฌ๋ํธ ์ค์บ์ @Component, @Controller, @Service, @Repository ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ๋น์ ๋ฑ๋กํ ์ ์๊ฒ ํจ
- XML ๋๋ Java Config ์ค์ ์ ํตํด ์ปดํฌ๋ํธ ์ค์บ์ ์ค์ ํ ์ ์๋ค.
- ํํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํฌํจํ๊ฑฐ๋ ์ ์ธํ ํด๋์ค๋ฅผ ์ค์ ํ ์ ์์ผ๋ฉฐ, ๋ค์ํ ์์ฑ์ ํตํด ์ค์บ ๋ฒ์๋ฅผ ์กฐ์ ํ ์ ์๋ค.
์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์๋์ผ๋ก ๋น์ ๋ฑ๋กํ๋ ๋ฒ๊ฑฐ๋ก์์ ์ค์ด๊ณ , ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ผ ์ ์์.
'๐์คํฐ๋ > ์คํ๋ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํ๋ง ์ปจํ ์ด๋์ ์์กด์ฑ ์ฃผ์ ๊ฐ๋ (0) | 2024.05.19 |
---|---|
์คํ๋ง AOP (0) | 2024.05.19 |
์คํ๋ง MVC ๊ธฐ๋ณธ ์ฌ์ฉ ๋ฐฉ๋ฒ๊ณผ ํต์ฌ ๊ฐ๋ (0) | 2024.05.19 |