복붙노트

[SPRING] @Autowired beans는 beans를 사용한 후에 로딩하지 않는다 : spring 3.1의 프로파일들

SPRING

@Autowired beans는 beans를 사용한 후에 로딩하지 않는다 : spring 3.1의 프로파일들

내가 콩을 사용했습니다 : 내 XML이 같은 프로파일 :

    <beans profile="dev">
        <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
            <property name="driverClassName" value="${jdbc.driverClassName}" />
            <property name="url" value="${jdbc.internal.url}" />
            <property name="username" value="${jdbc.internal.username}" />
        </bean>
   </beans>

web.xml에 spring.active.profiles를 설정했습니다.

<servlet>
    <servlet-name>myapp</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/myapp-servlet.xml</param-value>
    </init-param>
    <init-param>
        <param-name>spring.profiles.active</param-name>
        <param-value>dev</param-value>
    </init-param>
</servlet>

내 코드 구조는 다음과 같습니다.

//controller
@Controller 
public class MyController {
  @Autowired
  private MyService myService;
  ....
}

//service implementation
@Service("myservice")
public class MyServiceImpl implements MyService {
  @Autowired
  DBService dbService;
} 

//db service
@Service("dbservice)
public class DBServiceImpl implements DbService {
  @Autowired
  public void setDataSource (Datasource ds) { 
    this.jdbcTemplate = new JdbcTemplate(ds);
  }
}

오류:

해결법

  1. ==============================

    1.내 생각 엔 DataSource가 루트 응용 프로그램 컨텍스트에있는 동안 DispatcherServlet 컨텍스트에서 프로필을 사용하고있는 것 같습니다.

    내 생각 엔 DataSource가 루트 응용 프로그램 컨텍스트에있는 동안 DispatcherServlet 컨텍스트에서 프로필을 사용하고있는 것 같습니다.

    Spring Framework의 applicationcontext.xml과 spring-servlet.xml의 차이점을 참조하십시오.

    업데이트 : context-params를 사용해보십시오 (여기에서 가져옴) :

    <context-param>
    <param-name>spring.profiles.active</param-name>
    <param-value>dev</param-value>
    </context-param>
    
  2. from https://stackoverflow.com/questions/13311603/autowired-beans-not-loading-after-using-beansprofiles-in-spring-3-1 by cc-by-sa and MIT license