Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

방카@Dev

[Spring]Ch6.@Configuration을 이용한 빈 생성_올인원 스프링 프레임워크 본문

BackEnd/Spring

[Spring]Ch6.@Configuration을 이용한 빈 생성_올인원 스프링 프레임워크

방카킴 2024. 6. 7. 00:41
 

올인원 스프링 프레임워크

올인원 스프링 프레임워크 작품소개: 기초부터 실무까지 한 권에 담은 올인원 스프링 프레임워크!웹 서비스의 핵심인 스프링 프레임워크의 전체적인 구조와 핵심 이론을 다양한 예제 프로젝트

ridibooks.com



#기본 설정

- pom.xml에 해당 라인 추가

  <!-- CGLIB Dependency -->
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib</artifactId>
            <version>3.3.0</version>
        </dependency>

 

- xml파일을 IoC 컨테이너 설정 파일로 이용했는데, 애너테이션(@Configuration, @Bean)을 이용한 Java 파일로도 만들 수 있음

@Configuration

- 자바 파일의 클래스 선언부에 @Configuration 애너테이션 명시

import org.springframework.context.annotation.Configuration;

@Configuration
public class MemberConfig{

}

 

@Bean

import org.springframework.context.annotation.Configuration;

@Configuration
public class MemberConfig{

	@Bean
   	 public StudentDao studentDao(){
   	 return new StudentDao();
}
xml Java
Bean 객체의 id 메서드 이름
Bean 객체의 타입명 반환되는 데이터 타입

 

# 생성자를 이용해 의존 객체 주입하기 

@Bean
public StudentRegisterService studentRegisterService(){
	return new StudentRegisterService(studentDao()); 
    //<constructor-arg ref="studentDao">
    }

-XML에서 <constructor-arg> 태그를 이용하여 의존객체를 생성자의 매개변수에 주입했다면, studentDao() 메서드를 호출

 

setter 메서드를 이용한 주입

@Bean 
public DBConnectionInfo dev_DBConnectionInfoDev() {

    DBConnectionInfo dbConnectionInfo = new DBConnectionInfo();
    dbConnectionInfo.setUrl("000.000.000.000");
    dbConnectionInfo.setUserId("admin");
    dbConnectionInfo.setUserPw("0000");

    return dbConnectionInfo;

}

- setter 메서드를 이용해서 의존객체를 주입할 때 XML에서는 <property> 태그를 이용했다면, Java 코드에서는 객체 생성 후 생성된 객체의 setter 메서드를 직접 호출

 

# 스프링 컨테이너 초기화(Main method)

public class MainClassUseConfig {
	public static void main(String[] args) {
		AnnotationConfigApplicationContext ctx = 
        new AnnotationConfigApplicationContext(MemberConfig.class);
    }
XML @Configuration
GenericXmlApplicationContext AnnotationConfigApplicationContext

# Java 파일 분리

@Configuration
public class MemberConfig3 {
	
	@Autowired
	DBConnectionInfo dev_DBConnectionInfoDev;
	
	@Autowired
	DBConnectionInfo real_DBConnectionInfoDev;
	
	
	@Bean
	public EMSInformationService eMSInformationService() {
		
		(생략)
        
		Map<String, DBConnectionInfo> dbInfos = new HashMap<String, DBConnectionInfo>();
		dbInfos.put("dev", dev_DBConnectionInfoDev);
		dbInfos.put("real", real_DBConnectionInfoDev);
		emsInformationService.setDbInfos(dbInfos);
		
		return emsInformationService;
		
	}
	
}

- 스프링 설정 파일을 분리할 경우, 다른 자바 파일에서 생성한 Bean 객체 주입이 필요한 경우, 필드에 @Autowired를 통해 객체 주입

 

AnnotationConfigApplicationContext ctx = 
new AnnotationConfigApplicationContext(MemberConfig1.class, MemberConfig2.class, MemberConfig3.class);

 

# @Import 애너테이션

애너테이션을 이용해서 스프링 설정 파일을 제작할 때도 다른 Java 파일을 임포트할 수 있는데, 이때 사용되는 애너테이션이 @Import

@Configuration
@Import({MemberConfig2.class, MemberConfig3.class})
public class MemberConfigImport { 
	...