Spring Boot (Maven)

스프링부트 백그라운드6 ( 빈 생성방법 - 명시적생성(잘안씀) )

pjh8838 2024. 6. 8. 21:54
반응형

https://docs.spring.io/spring-boot/docs/2.7.18/reference/htmlsingle/#getting-started.first-application.code.spring-boot-application

 

Spring Boot Reference Documentation

This section goes into more detail about how you should use Spring Boot. It covers topics such as build systems, auto-configuration, and how to run your applications. We also cover some Spring Boot best practices. Although there is nothing particularly spe

docs.spring.io

 

 

XXXXApplication.java    ( 파일이름 )

 

@SpringBootApplication
    public class Application{

        public static void main(String[] args) {
           SpringApplication.run(DemoApplication.class, args);
        }
}

  - 위 코드는 spring boot에서는 필수코드임.
  - 시작점 역할 담당.

 


 

@SpringBootApplication 어노테이션 필수로 지정.
    다음 3가지 어노테이션을 포함한다.

    @SpringBootConfiguration
      - 개발자가 필요에 의해서 추가적인 Configuration 설정할 수 있도록 지원.
        (추가적인 설정방법: 클래스 작성하고 @Configuration 지정 )
      - 대표적으로 Spring Security 임.


    @EnableAutoConfiguration
      - pom.xml에 stater같은 의존성을 설정하면 거의 자동으로 필요한 설정을 해줌.
        즉 자동 구성 메커니즘 활성화.


    @ComponentScan
      - 자동으로 빈생성하는 방법으로 기본적으로 패키지 단위로 설정해서 
        자동으로 생성하도록 가이드함.

 


 

빈 생성 방법

항상 Application.java의 패키지와 같거나 서브 패키지로
    빈을 작성하자. (***********************************)

 

 

1) 명시적으로 생성
     - @Configuration + @Bean 이용
     ==> @Configuration 을 통해서 @Bean으로 지정한 빈을 생성했음.
     ==> @Bean 은 메서드 레벨만 가능.
         @Configuration 는 클래스 레벨만 가능.

 

패키지 잘못됌 (config에 2 빼야됨)

 

 

 

=> DeptDAO를 호출하면 생성되는건 맞는데 컨테이너한테 니가 관리해야하는 클래스라고 말해주는 게 @Bean,   메서드에서만 쓸 수 있음

=> Bean을 관리하는 Configuration 역할이라서 어노테이션도 @Configuration

 

DeptConfiguration도 빈으로 관리한다는 얘기는 생성된다는 얘기니까 기본생성자도 생성해서 안에 로직 적기

 

 


명시적생성인데 패키지가 다른 경우

exam, exam2

 

 

Application.java에 추가


scan 방법 2가지

        가. 패키지를 지정하지 않는 경우의 scan
 
          - @SpringBootApplication 가진 Application.java의 패키지와 
            같거나 서브 패키지로 작성하면 자동으로 scan 됨.

 

패키지명 맞춰주기



        나. 패키지를 지정한 경우의 scan

 

728x90
반응형