= > Main 클래스는 PrintA 클래스에 의존적이다.
개발의 생산성을 높이고 유지보수 및 확장성을 키우기 위해서는 코드의 결합력을 낮춰야 한다.
코드의 결합력을 낮추는 방법
• 함수화
• 다형성
• DI (의존성 주입)
GenericXmlApplicationContext context = new GenericXmlApplicationContext(“config.xml");
Class clazz = (Class)context.getBean(“id”);
// Class clazz = context.getBean(Class.class);
1. <bean> 태그 : 생성할 객체 지정
<bean id="객체이름" class="생성할 객체의 패키지.클래스"></bean>
2. <constructor-arg> 태그 : 생성자 방식 설정
<constructor-arg><value>인자값</value></constructor-arg>
<constructor-arg value="인자값" />
<constructor-arg><ref bean="다른 bean 객체 명“/></constructor-arg>
3. <property> 태그 : 프로퍼티 방식 설정(setter 방식)
<property name=“프로퍼티이름”>
<value>프로퍼티값</value>
</property>
<property name="프로퍼티이름" ref="다른 bean 객체 명" />
4. 컬렉션 타입은 <List>, <Map>, <Set> 태그를 사용
@Configuration
public class Config
@Bean
public class타입 id값(){
return new class값;
}
<bean id="객체이름" class="생성할 객체의 패키지.클래스"></bean>
@Bean
public class타입 id값(){
return new class값(생성자 인자값);
}
<constructor-arg value="인자값" />
@Bean
public class타입 id값(){
class c = new class;
c.set프로퍼티이름(인자값);
return c;
}
<property name="프로퍼티이름" value="인자값" />