Внезапно появляется «NoSuchBeanDefinitionException no bean named» с правильными конфигами - PullRequest
0 голосов
/ 14 марта 2012

У меня есть настольное приложение на Java, которое подключается к базе данных MySql через Hibernate.

У меня есть следующие файлы для конфигурации:

  • pom.xml, куда я положил нескольковещи и профили базы данных
  • [app_name] _context.xml, куда я помещаю основную конфигурацию, включая bean-компоненты и источник данных
  • [app_name] _hibernate.cfg.xml, куда я помещаю сопоставленияк таблицам

Приложение почти завершено, все работало на 100%, но затем я решил изменить конфигурацию для создания профилей БД (до этого в файле pom.xml не было профиля),Поэтому я создал профили в pom.xml и сослался на них из context.xml.Все работало.Затем я хотел, чтобы SQL выводился на терминал для отладки, и по какой-то причине он не печатался.Поэтому я изменил конфигурации базы данных, пока не понял все правильно.Все работало.Затем я изменил его так, как это было до изменения sql-print, точную конфигурацию, с которой он работал раньше, но теперь я получаю эту ошибку для компонента, который всегда был там и никогда не менялся.

Вот некоторый код для лучшего понимания:

Источник данных в context.xml: (строки $ {} фильтруются и заменяются реальными значениями, хранящимися в pom.xml)

<bean id="desenvolvimentoDS" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName">
        <value>org.hibernate.dialect.MySQLDialect</value>
    </property>
    <property name="url">
        <value>${db.mysql.url}</value>
    </property>
    <property name="username">
        <value>${db.mysql.username}</value>
    </property>
    <property name="password">
        <value>${db.mysql.password}</value>
    </property>
</bean>

Текущий используемый профиль в pom.xml:

<profile>
        <id>HOMOLOGACAO</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <profile.group>HOMOLOGACAO</profile.group>
            <maven.test.skip>true</maven.test.skip>
            <db.show_sql>true</db.show_sql>
            <db.format_sql>false</db.format_sql>
            <db.mysql.url>[filtered]</db.mysql.url>
            <db.mysql.username>[filtered]</db.mysql.username>
            <db.mysql.password>[filtered]</db.mysql.password>
        </properties>
    </profile>

Ресурсная часть pom.xml, которая сообщает Spring для фильтрации этих строк context.xml по значениям профилей:

    <resources>
        <resource>
            <directory>src/main/resources/configuracao</directory>
            <filtering>true</filtering>
        </resource>
    </resources>

И, наконец, компонент, выдающий мне сообщение об ошибке:

<bean name="servidorUDP"
    class="br.uff.pgci.sgca.gateway.server.ServidorUDP"
    scope="singleton"/>

Продолжая, я создал профили базы данных для организации конфигураций, изменил некоторые конфигурации базы данных взад и вперед, и вдруг я получаюОшибка «NoSuchBeanDefinitionException no bean с именем ServidorUDP».

Может ли это быть вызвано неуместными переносами строк, пробелами или неправильными открывающими / закрывающими тегами XML?Я почти уверен, что это не так, но мы никогда не узнаем ...

Ответы [ 2 ]

1 голос
/ 14 марта 2012

Где именно вы разместили свой [app_name] _context.xml? Фильтры, которые вы ввели в pom, пропускают определение bean-компонента xml?

Проверьте эту справочную информацию о мавенском помпе http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html, она может дать вам некоторые подсказки.

1 голос
/ 14 марта 2012

Наиболее вероятное объяснение состоит в том, что контекстный файл, содержащий servidorUDP, не найден, возможно, потому что ваши изменения в профилях остановили копирование файла в правильное место на пути к классам.Просмотрите содержимое каталога target / classes, чтобы убедиться, что файл находится там, где вы ожидаете, и просмотрите журналы, чтобы убедиться в том, что он был загружен.Spring регистрирует список всех bean-компонентов, найденных в определенный момент, ищет их и проверяет, какие bean-компоненты отсутствуют.

...