스터디📖/Spring

4. 설정 및 구현 - 1

호프 2021. 7. 7. 19:34

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC_renew/dashboard

 

자바 스프링 프레임워크(renew ver.) - 신입 프로그래머를 위한 강좌 - 인프런 | 강의

스프링 프레임워크 기본부터 실전 사용법까지! 충실하고 폭넓은 설명과 예제를 통해 현장에 바로 투입되어 활약하는 개발자로 거듭나세요., 자바 스프링 프레임워크로 내 개발자 커리어에 봄이

www.inflearn.com

섹션 4. 설정 및 구현

12-1강 어노테이션을 이용한 스프링 설정 - 1

12-1-1 XML 파일을 Java 파일로 변경하기

@Configuration
public class MemberConfig {

    @Bean
    public StudentDao studentDao() {
        return new StudentDao();
    }
    //메소드 이름 = bean id, 반환형은 객체의 타입

    @Bean
    public StudentRegisterService registerService() {
        return new StudentRegisterService(studentDao());
    }
    //생성자에 객체 주입할 때는 메소드 호출

    @Bean
    public DataBaseConnectionInfo dataBaseConnectionInfoDev() {
        DataBaseConnectionInfo infoDev = new DataBaseConnectionInfo();
        infoDev.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:xe");
        infoDev.setUserId("scott");
        infoDev.setUserPw("tiger");

        return infoDev;
    }
    //setter로 객체 주입할 때는 setter 메소드 이용

    @Bean
    public EMSInformationService informationService() {
        EMSInformationService info = new EMSInformationService();

        ArrayList<String> developers = new ArrayList<String>();
        developers.add("Cheney.");
        developers.add("Eloy.");
        developers.add("Jasper.");
        developers.add("Dillon.");
        developers.add("Kian.");
        info.setDevelopers(developers);

        Map<String, String> administrators = new HashMap<String, String>();
        administrators.put("Cheney", "cheney@springPjt.org");
        administrators.put("Jasper", "jasper@springPjt.org");
        info.setAdministrators(administrators);

        Map<String, DataBaseConnectionInfo> dbInfos = new HashMap<String, DataBaseConnectionInfo>();
        dbInfos.put("dev", dataBaseConnectionInfoDev());
        dbInfos.put("real", dataBaseConnectionInfoReal());
        info.setDbInfos(dbInfos);

        return info;
    }
    //한 번에 여러 객체를 주입하는 경우
}
AnnotationConfigApplicationContext ctx = 
                new AnnotationConfigApplicationContext(MemberConfig.class);
//MemberConfig.class를 사용하여 컨테이너 생성

12-2강 어노테이션을 이용한 스프링 설정-2

12-2-1 Java 파일 분리

유지 보수에 유리하게 하기 위해, 기능별로 구분해서 @Configuration java 파일 여러개로 분리

의존객체가 있는 경우에는

@Configuration
public class MemberConfig3 {
	// MemberConfig2.class 의 DataBaseConnectionInfo @Bean 객체가 자동주입됨.
	@Autowired
	DataBaseConnectionInfo dataBaseConnectionInfoDev;
	
	@Autowired
	DataBaseConnectionInfo dataBaseConnectionInfoReal;
	
	@Bean
	public EMSInformationService informationService() {
		EMSInformationService info = new EMSInformationService();
		...
		Map<String, DataBaseConnectionInfo> dbInfos = new HashMap<String, DataBaseConnectionInfo>();
		dbInfos.put("dev", dataBaseConnectionInfoDev);
		dbInfos.put("real", dataBaseConnectionInfoReal);
		info.setDbInfos(dbInfos);
		
		return info;
	}
	
}

 

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

12-2-2 @Import 어노테이션

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

AnnotationConfigApplicationContext ctx = 
	new AnnotationConfigApplicationContext(MemberConfigImport.class);