@SpringBootApplication
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
ํด๋น ์ฝ๋๊ฐ ์๋ ํ์ผ์ ์๋ฐ์ main() ๋ฉ์๋์ ๊ฐ์ ์ญํ ์ ํ๋ค.
@SpringBootApplication ์ ๋ํ ์ด์ ์ ์คํ๋ง๋ถํธ์ ํ์ํ ๊ธฐ๋ณธ ์ค์ ์ ํด์ค๋ค. "SpringApplication.run( )" ๋ฉ์๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ์์ผ ์ค๋ค.
// SpringBootApplication.java
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
@AliasFor(
annotation = EnableAutoConfiguration.class
)
Class<?>[] exclude() default {};
@AliasFor(
annotation = EnableAutoConfiguration.class
)
String[] excludeName() default {};
@AliasFor(
annotation = ComponentScan.class,
attribute = "basePackages"
)
String[] scanBasePackages() default {};
@AliasFor(
annotation = ComponentScan.class,
attribute = "basePackageClasses"
)
Class<?>[] scanBasePackageClasses() default {};
@AliasFor(
annotation = ComponentScan.class,
attribute = "nameGenerator"
)
Class<? extends BeanNameGenerator> nameGenerator() default BeanNameGenerator.class;
@AliasFor(
annotation = Configuration.class
)
boolean proxyBeanMethods() default true;
}
@SpringBootApplication ์ ๋ํ ์ด์ ์ ๊ตฌ์ฑ์๋ @SpringBootConfiguration, @ComponentScan, @EnableAutoConfiguration๋ฑ์ด ์๋ค. ์ด ์ธ๊ฐ์ง ์ ๋ํ ์ด์ ์ ์คํ๋ง ๋ถํธ์ ํน์ง์ ๋ํ๋ธ๋ค.
@SpringBootConfiguration
์คํ๋ง ๋ถํธ ๊ด๋ จ ์ค์ ์ ๋ํ๋ด๋ ์ ๋ํ ์ด์ ์ด๋ค.
@Configuration์ ์์ํด์ ๋ง๋ ์ ๋ํ ์ด์ ์ด๋ค.
@ComponentScan
์ฌ์ฉ์๊ฐ ๋ฑ๋กํ ๋น์ ์ฝ๊ณ ๋ฑ๋กํ๋ ์ ๋ํ ์ด์ ์ด๋ค.
@Component ์ ๋ํ ์ด์ ์ ๊ฐ์ง ํด๋์ค๋ค์ ์ฐพ์ ๋น์ผ๋ก ๋ฑ๋กํ๋ ์ญํ ์ ํ๋ค.
@Component ์ด์ธ์๋ ์ฉ๋์ ๋ง๋ ์ฌ๋ฌ ์ ๋ํ ์ด์ ๋ค์ด ์๋ค.
์ ๋ํ ์ด์ ๋ช | ์ค๋ช |
@Configuration | ์ค์ ํ์ผ ๋ฑ๋ก |
@Repository | ORM ๋งคํ |
@Controller, @RestController | ๋ผ์ฐํฐ |
@Service | ๋น์ฆ๋์ค ๋ก์ง |
@EnableAutoConfiguration
์คํ๋ง๋ถํธ์์ ์๋ ๊ตฌ์ฑ์ ํ์ฑํํ๋ ์ ๋ํ ์ด์ ์ด๋ค.
์คํ๋ง ๋ถํธ ์๋ฒ๊ฐ ์คํ๋ ๋ ์คํ๋ง ๋ถํธ์ ๋ฉํ ํ์ผ์ ์ฝ๊ณ ์ ์๋ ์ค์ ๋ค์ ์๋์ผ๋ก ๊ตฌ์ฑํ๋ ์ญํ ์ ์ํํ๋ค.
"spring.factoreis" ํ์ผ์ ํด๋์ค๋ค์ด ๋ชจ๋ @EnableAutoConfiguration์ ์ฌ์ฉํ ๋ ์๋ ์ค์ ๋๋ค.
๋น์ ๋ฑ๋ก ๊ณผ์
@RestController
public class TestController{
@GetMapping("/test")
public String test(){
return "Hello World!";
}
}
@RestController์ ๋ผ์ฐํฐ ์ญํ ์ ํ๋ ์ ํฐํ ์ด์ ์ด๋ค.
@RestController๋ @Controller ์ ๋ํ ์ด์ ์ @ResponseBody ์ ๋ํ ์ด์ ์ด ํฉ์ณ์ง ์ ๋ํ ์ด์ ์ด๋ค.
@Controller ์ ๋ํ ์ด์ ์ @Controller ์ ๋ํ ์ด์ ์ ๊ฐ์ง๊ณ ์์ด @ComponentScan์ ํตํด ๋น์ผ๋ก ๋ฑ๋ก๋ ์ ์๋ค.
@Configuration, @Repository, @Service ์ ๋ํ ์ด์ ๋ชจ๋ @Component ์ ๋ํ ์ด์ ์ ๊ฐ์ง๊ณ ์๋ค.
'๐งFramework > SprintBoot' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SpringBoot] ์คํ๋ง ๋ถํธ ํ ์คํธ ์ฝ๋ (0) | 2024.09.15 |
---|---|
[SpringBoot] ์คํ๋ง ๋ถํธ์ ๊ตฌ์กฐ (0) | 2024.09.15 |
[SpringBoot] ์คํ๋ง ๋ถํธ ์์๋ณด๊ธฐ - 1 (0) | 2024.09.14 |
[SpringBoot] ์คํ๋ง๊ณผ ์คํ๋ง ๋ถํธ (0) | 2024.09.14 |