Spring boot - XMl 을 이용한 설정

원종서·2021년 12월 27일
0

spring

목록 보기
6/12

1.8 XMl 을 이용한 설정

스프링은 이전의 DaoFactory 같은 자바 클래스를 설정 정보로 이용하는거 외에도 XML을 이용해서 설정 정보를 제공할 수 있다.

1.8.1 XML 설정

자바에서의 @Configuration 을 <Beans.>
자바에서의 @Bean 을 <Bean.> 로만 바꾸면 Xml 에서 애플리케이션 컨텍스트에 Di정보를 제공할 수 있다.

connectionMaker() XML로의 전환

  1. 빈 설정파일 : @Configuration -> <beans.>
  2. 빈 이름 : @Bean methodName() -> <bean. id ="methodName"
  3. 빈의 클래스 return new BeanClass(); -> class="a,b,c...BeanClass">
<bean id="connectionMaker" class="full_package_path.DconnectionMaker">

userDao() Xml 전환

userDao()에는 Di정보의 세 가지 요소가 들어있따.
그 중하나는 수정자 메소드를 사용해 의존관계를 주입해주는 부분이다.
수정자 메소드를 사용하는 이유는 XML로 의존관계 정보를 만들 때 편리하기 때문이다
자바빈의 관례를 따라 수정자 메소드는 프로퍼티가 된다.
프로퍼티 이름은 메서드 이름에서 set을 제외한 나머지 부분을 사용한다.

<property.>
name 어트리뷰트 : 프로퍼티의이름
ref 어트리뷰트 : 수정자 메소드를 통해 주입해줄 오브젝트 빈 이름.

userDao.setConnectionMaker(connectionMaker());
- <.property name="connectionMaker" ref="connectionMaker"/ >

Xml의 의존관계 주입

완성된 DaoFactory 로부터 Xml로의 변환의 코드이다

<.beans>
  	<.bean id="connectonMaker" class="com.example.tobyspringboot3.user.dao.DConnectionMaker"/>
  <.bean id="userDao" class="com.example.tobyspringboot3.user.dao.UserDao">
    	<.property name="connectionMaker" ref="connectionMaker"/>
    <./bean>
      
  <./beans>

1.8.2 XMl을 이용하는 애플리케이션 컨텍스트

XML에서 빈의 의존관계 정보를 이용하는 IoC/Di 작업에는 GenericXmlApplicationContext를 사용한다. (생성자 파라미터로는 XMl 클래스 패스를 지정해주면 된다.)

1.8.3 DataSource 인터페이스로 변환

자바에는 DB 커넥션을 가져오는 오브젝트의 기능을 추상화해서 비슷한 용도로 사용할 수 있게 만들어진 DataSource 인터페이스가 존재한다
단 DataSource는 getConnection() 이라는 커넥션을 가져오는 기능 외에도 여러 개의 메소드가 존재하기에 인터페이스를 직접 구현하는 것은 무담스럽다.

일반적으로 DataSource을 구현하는 일은 없고, 이미 DataSource 구현 클래스를 사용한다.

DataSource 인터페이스와 구현클래스를 사용할 수 있도록 Userdao 를 수정한다.

in UserDao
private DataSource dataSource;

    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }

DataSource의 구현 클래스 중 테스트 한경에서 간단히 사용할 수 있는 SimpleDriverDataSource 를 사용해서 DI를 재구성할 것이다.

in UserDaoFactory

 @Bean
    public DataSource dataSource(){
        SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
        dataSource.setDriverClass(com.mysql.jdbc.Driver.class);
        dataSource.setUrl("jdbc:mysql://localhost:3306/toby_stringboot");
        dataSource.setUsername("아이디");
        dataSource.setPassword("비밀번호");
        return dataSource;
    }
    @Bean
    public UserDao userDao(){
        UserDao userDao = new UserDao();
        userDao.setDataSource(dataSource());
        return  userDao;
    }

1.8.4 프로퍼티 값 주입

 <bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"/> // 스트링 값이 클래스 형태로 자동으로 변경된다 , 스트링 뿐 아니라 Integer 등 ..
        <property name="url" value="jdbc:mysql://localhost:3306/toby_stringboot"/>
        <property name="username" value="아이디"/>
        <property name="password" value="비밀번호"/>
    </bean>

텍스트나 단순 오브젝트 등을 수정자 메소드에 넣ㅇ는 것을 '값의 주입'이라고 말한다.

다르 빈의 오브젝트의 레퍼런스가 아닌 단순 값을 주입하는 경우에는 value 애트리뷰트를 쓴다.

0개의 댓글