@Bean 활용 예제

kimm·2023년 8월 10일
0

xml을 이용해서 bean 객체를 만드는 코드에서 자바코드로 bean 객체를 만드는 방법을 알아볼 것이다.

스프링 설정파일을 만들 때는 @Configuration 어노테이션을 이용하여 명시를 해줘야 한다.
xml에서 bean id값을 메서드 이름, 반환 타입을 클래스 이름, 반환 값은 객체를 생성해줘야 한다.

생성자, set 의존객체 주입 방식 변환

@Configuration
public class MemberConfig {
	// <bean id="studentDao" class="ems.member.dao.StudentDao" ></bean>
	@Bean
	public StudentDao studentDao() {
		return new StudentDao();
	}
	
	/* 
	 * <bean id="registerService" class="ems.member.service.StudentRegisterService">
	 *  <constructor-arg ref="studentDao" ></constructor-arg>
	 *  </bean>
	 */
	@Bean
	public StudentRegisterService registerService() {
		return new StudentRegisterService(studentDao());
	}
	
	/*
	 * 	bean id="modifyService" class="ems.member.service.StudentModifyService">
	 *	<constructor-arg ref="studentDao" ></constructor-arg>
	 *	</bean>
	 */
	@Bean
	public StudentModifyService modifyService() {
		return new StudentModifyService(studentDao());
	}
	
	/*
	 *  <bean id="deleteService" class="ems.member.service.StudentDeleteService">
	 *	<constructor-arg ref="studentDao" ></constructor-arg>
	 *	</bean>
	 */
	@Bean
	public StudentDeleteService deleteService() {
		return new StudentDeleteService(studentDao());
	}
	
	/*
	 * 	<bean id="selectService" class="ems.member.service.StudentSelectService">
	 *	<constructor-arg ref="studentDao" ></constructor-arg>
	 *	</bean>
	 */
	@Bean
	public StudentSelectService selectService() {
		return new StudentSelectService(studentDao());
	}
	
	/*
	 * 	<bean id="allSelectService" class="ems.member.service.StudentAllSelectService">
	 *	<constructor-arg ref="studentDao" ></constructor-arg>
	 *	</bean>
	 */
	@Bean
	public StudentAllSelectService allSelectService() {
		return new StudentAllSelectService(studentDao());
	}
	
	/*
	 * 	<bean id="dataBaseConnectionInfoDev" class="ems.member.DataBaseConnectionInfo">
	 *	<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:xe" />
	 *	<property name="userId" value="test" />
	 *	<property name="userPw" value="1234" />
	 *	</bean>
	 */
	@Bean
	public DataBaseConnectionInfo dataBaseConnectionInfoDev() {
		DataBaseConnectionInfo infoDev = new DataBaseConnectionInfo();
		infoDev.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:xe");
		infoDev.setUserId("test");
		infoDev.setUserPw("1234");
		
		return infoDev;
	}
	
	/*
	 * 	<bean id="dataBaseConnectionInfoReal" class="ems.member.DataBaseConnectionInfo">
	 *	<property name="jdbcUrl" value="jdbc:oracle:thin:@192.168.0.1:1521:xe" />
	 *	<property name="userId" value="masterid" />
	 *	<property name="userPw" value="masterpw" />
	 *	</bean>
	 */
	@Bean
	public DataBaseConnectionInfo dataBaseConnectionInfoReal() {
		DataBaseConnectionInfo infoReal = new DataBaseConnectionInfo();
		infoReal.setJdbcUrl("jdbc:oracle:thin:@192.168.0.1:1521:xe");
		infoReal.setUserId("masterid");
		infoReal.setUserPw("masterpw");
		
		return infoReal;
	}
}

List, Map 의존객체 주입 방식 변환

'applicationContext.xml'

<bean id="informationService" class="ems.member.service.EMSInformationService">
		<property name="info">
			<value>Education Management System program was developed in 2015.</value>
		</property>
		<property name="copyRight">
			<value>COPYRIGHT(C) 2015 EMS CO., LTD. ALL RIGHT RESERVED. CONTACT MASTER FOR MORE INFORMATION.</value>
		</property>
		<property name="ver">
			<value>The version is 1.0</value>
		</property>
		<property name="sYear">
			<value>2015</value>
		</property>
		<property name="sMonth">
			<value>1</value>
		</property>
		<property name="sDay">
			<value>1</value>
		</property>
		<property name="eYear" value="2015" />
		<property name="eMonth" value="2" />
		<property name="eDay" value="28" />
		<property name="developers">
			<list>
				<value>Cheney.</value>
				<value>Eloy.</value>
				<value>Jasper.</value>
				<value>Dillon.</value>
				<value>Kian.</value>
			</list>
		</property>
		<property name="administrators">
			<map>
				<entry>
					<key>
						<value>Cheney</value>
					</key>
					<value>cheney@springPjt.org</value>
				</entry>
				<entry>
					<key>
						<value>Jasper</value>
					</key>
					<value>jasper@springPjt.org</value>
				</entry>
			</map>
		</property>
		<property name="dbInfos">
			<map>
				<entry>
					<key>
						<value>dev</value>
					</key>
					<ref bean="dataBaseConnectionInfoDev"/>
				</entry>
				<entry>
					<key>
						<value>real</value>
					</key>
					<ref bean="dataBaseConnectionInfoReal"/>
				</entry>
			</map>
		</property>
	</bean>

'MemberConfig.java'

@Bean
	public EMSInformationService informationService() {
		EMSInformationService info = new EMSInformationService();
		
		info.setInfo("Education Management System program was developed in 2015.");
		info.setCopyRight("COPYRIGHT(C) 2015 EMS CO., LTD. ALL RIGHT RESERVED. CONTACT MASTER FOR MORE INFORMATION.");
		info.setVer("The version is 1.0");
		info.setsYear(2015);
		info.setsMonth(1);
		info.setsDay(1);
		info.seteYear(2015);
		info.seteMonth(2);
		info.seteDay(28);
		
		List<String> developers = new ArrayList<>();
		developers.add("Cheney");
		developers.add("Eloy");
		developers.add("Jasper");
		developers.add("Dillon");
		developers.add("Kian");
		info.setDevelopers(developers);
		
		Map<String, String> administrators = new HashMap<>();
		administrators.put("Cheney", "cheney@springPjt.org");
		administrators.put("Jasper", "jasper@springPjt.org");
		info.setAdministrators(administrators);
		
		Map<String, DataBaseConnectionInfo> dbInfos = new HashMap<>();
		dbInfos.put("dev", dataBaseConnectionInfoDev());
		dbInfos.put("real", dataBaseConnectionInfoReal());
		info.setDbInfos(dbInfos);
		
		return info;
	}

Bean 객체 사용법

GenericXmlApplicationContext ctx = 
				new GenericXmlApplicationContext("classpath:applicationContext.xml");
  • xml 파일에 정의한 빈 객체는 GenericXcmlApplicationContext 클래스를 사용하면 됐었다. 하지만 Annotation을 이용하여 빈 객체를 정의하였기 때문에
    AnnotationConfigApplicationContext 클래스를 이용하고 스프링 설정 파일을 값으로 넣어주면 끝
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(MemberConfig.class);
profile
벨린이

0개의 댓글