2 Stimmen

Spring Component Scannen Sie die Klassen aus einem Jar?

Können wir Klassen mit Spring Bean Annotation als jar-Datei generieren? Wie kann man eine andere Spring Bean aus der Klasse dieser Jar-Datei injizieren? Können Sie einen möglichen Weg aufzeigen? Wenn ich wie unten es nicht funktioniert bekommen?

In Jar File

    package org.java.support;

    @Service("CommonService")
    public class CommonService {
    }

Im Projekt

    package com.java.test.app;

    @Service(value = "OtherService")
    public class OtherService {
        @Resource(name = "CommonService")
        private CommonService service;
    }       

In der Konfiguration

    <context:component-scan base-package="com.java.test.app, org.java.support">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
    </context:component-scan>

Ich erhalte den folgenden Fehler;

13:32:12,331 DEBUG [org.springframework.context.annotation.AnnotationConfigApplicationContext] Unable to locate LifecycleProcessor with name 'lifecycleProcessor': using default [or
g.springframework.context.support.DefaultLifecycleProcessor@32dcb03b]
13:32:12,331 DEBUG [org.springframework.beans.factory.support.DefaultListableBeanFactory] Returning cached instance of singleton bean 'lifecycleProcessor'
Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'CommonService' is defined
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:529)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1095)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:277)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1093)
    at org.ace.java.support.delete.Test.main(Test.java:18)

2voto

Yossi Shasho Punkte 3582

Wenn Sie Ihr Jar aus Eclipse generieren, vergewissern Sie sich im Exportdialog, dass das Kontrollkästchen "Verzeichniseinträge hinzufügen" (unter Optionen) aktiviert ist.

1voto

wemu Punkte 7522

Sie sind fast am Ziel :)

müssen Sie Include-Filter verwenden, um das Jar zu Ihrem Spring-Kontext hinzuzufügen. Aber ich denke, mit zwei Komponenten-Scan-Zeilen sollte auch funktionieren.

Beispiel:

<context:component-scan base-package="org.example">
    <context:include-filter type="regex" expression=".*Stub.*Repository"/>
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
</context:component-scan>

siehe http://static.springsource.org/spring/docs/2.5.x/reference/beans.html#beans-classpath-scanning

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X