2017-10-20 1 views
0

스프링 인 액션을 읽고, XML 설정을 통한 자바 설정을 선호합니다. 그래서 Java config를 사용하여 응용 프로그램을 작성했지만 배포 환경에서는 XML config를 사용해야합니다. XML 설정을 작성 했으므로 루트 Java 구성을 가져 오는 것이 유일한 기능입니다.스프링 자바 설정이 지정되었습니다 콩이 초기화되지 않습니다

package com.somegroup.app; 
@Configuration 
@ComponentScan(basePackages = "com.tianchengsys.crawlers.cqs") 
public class AppCtxConfig { 

    @Bean 
    public SomeType aSomeType() { 
      return new SomeType() 
    } 

} 

을하고 XML 설정은 다음과 같습니다 :

자바 설정 코드는 다음과 같습니다

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" 

    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop-3.2.xsd 
    http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx-3.2.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.2.xsd 
    http://code.alibabatech.com/schema/dubbo 
    http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> 

    <context:annotation-config /> 

    <bean class="com.somegroup.app.AppCtxConfig" lazy-init="false" /> 

</beans> 

내가 Eclipse에서 ClasspathXmlContext("classpath:spring-context.xml")을 생성, 자바 설정에 정의 된 SomeType 콩이 스프링으로 ApplicationContext를 초기화하고 초기화합니다. 그러나이 애플리케이션 (모든 종속성은 lib 디렉토리에 있음)을 배치하면 XML 구성에 정의 된 AppCtxConfig Bean이 일반 Bean (구성이 아닌)으로 처리됩니다.

만들어졌지만 정의 된 bean이 초기화되지 않았습니다. 봄 때로는 자바 설정의 someType 메소드가 정적이어야한다고 경고했다. 나는 그것을 정적으로 바꿨다. 그것은 또한 작동하지 않았다.

+0

이 사용하려고 했나 :

그래서 추가? [이 기사에서는 config xml의 java 구성을 참조하는 방법에 대해 설명합니다.] (http://memorynotfound.com/mixing-xml-java-config-spring/) – BharaniK

답변

0

AppCtxConfig을 일반 빈으로 작성했기 때.입니다.

commentor 제안으로, 추가 구성 요소 - 스캔에 당신의 설정 클래스에있는 패키지에 기본 패키지를 설정 : 모든 하위 패키지와

<!-- Scan the JavaConfig --> 
<context:component-scan base-package="com.somegroup.app" /> 

앱 패키지 루트 패키지의 경우, 내부에 새로운 설정 패키지를 추가하고 그 안에 AppCtxConfig을 이동하십시오. <: 구성 요소 스캔 기본 패키지 = "com.somegroup.app"/ 컨텍스트>

<!-- Scan the config package with AppCtxConfig inside it --> 
<context:component-scan base-package="com.somegroup.app.config" /> 
관련 문제