2015-04-24 3 views
0

я пытаюсь загрузить контекст пружинного из баночки файла в WEB-INF/Lib/как это (в весенне-конфиге-client.xml):Нулевой бобы при импорте контекста пружинного

<import resource="classpath*:spring-configuration.xml" /> 

Но когда я пытаюсь использовать:

ApplicationContext factory = new ClassPathXmlApplicationContext("classpath:spring-config-client.xml"); 
int k = factory.getBeanDefinitionCount(); 

к будет равен 0. Как я могу использовать бобы из весенне-конфиг-client.xml?

Когда я пишу bean в spring-config-client.xml, все в порядке, но мне нужны beans from spring-config-client.xml.

+0

Заявление «Когда я пишу bean-компонент в spring-config-client.xml, все в порядке, но мне нужны beans from spring-config-client.xml». не имеет никакого смысла. –

+0

Извините за мой английский. Это утверждение означает, что если я пишу , то у меня есть 0 beans, но если я напишу < bean id = "myBean" class = "MyClass" /> чем у меня есть 1 компонент. –

ответ

0

Это зависит от вашей конфигурации в контексте боба, как показано ниже:

<?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:tx="http://www.springframework.org/schema/tx" 
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:jee="http://www.springframework.org/schema/jee" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:lang="http://www.springframework.org/schema/lang" xmlns:security="http://www.springframework.org/schema/security" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
     http://www.springframework.org/schema/aop 
     http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 
     http://www.springframework.org/schema/tx 
     http://www.springframework.org/schema/tx/spring-tx-3.1.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.1.xsd 
     http://www.springframework.org/schema/jee 
     http://www.springframework.org/schema/jee/spring-jee-3.1.xsd  
     http://www.springframework.org/schema/lang 
     http://www.springframework.org/schema/lang/spring-lang-3.1.xsd 
     http://www.springframework.org/schema/security 
     http://www.springframework.org/schema/security/spring-security-3.1.xsd" lazy-init="false"> 

Пробный набор: отложенной инициализации = «ложь» или по умолчанию-ленивой инициализации = «ложь» в вашем весеннем контексте файла и вы должен быть уверен, что файл контекста, который вы пытались загрузить, уже имеет определение bean-компонента.

Надеюсь, это поможет вам!

+0

cvc-complex-type.3.2.2: Атрибут 'lazy-init' не может появляться в элементе 'beans'. –

+0

изменен на default-lazy-init = "false", но ничего не случилось –

+0

Мне нужно больше деталей внутри файла spring-configuration.xml, поэтому я мог бы помочь вам больше. –

1

Вы можете попытаться сделать эту работу со следующим обходным:

В вашем проекте зависимостей, создание конфигурации боба выглядит следующим образом:

@Configuration 
    @ImportResource("classpath:spring-configration.xml") 
    public class MyContextConfiguration { 

    } 

Теперь вы можете создать экземпляр этого конфигурационного компонента в вашем зависимого проекта, как и любой другой компонент:

<bean id="appWatcherConfig" class="MyContextConfiguration"/> 

Работал нормально для меня.

+0

Каждый раз, когда я пытаюсь создать bean-компонент из класса из внешнего jar, у меня есть «java.lang.ClassNotFoundException». Но это только с моими собственными классами. Я могу сделать bean например. Я не могу понять, почему –

+0

Единственное, о чем я могу думать, это то, что каталог, в котором находится ваш JAR-файл, находится не в вашем пути к классам. Убедитесь, что ваш путь к классам настроен правильно. Проверьте настройки пути сборки от имени используемой среды IDE и добавьте JAR вручную, если она отсутствует. Размещение JAR-файла в directoy, как WEB-INF, не гарантирует, что его классы найдены загрузчиком загрузки, расширения или приложения. – pklndnst

+0

Я использую maven для зависимостей. Я могу написать «INewsDAO newsDAO = new NewsDAOImpl();» и такого исключения нет. Поэтому я думаю, что путь к классам в порядке. –