2012-09-20 4 views
2

Pouvons-nous générer des classes avec l'annotation Spring Bean en tant que fichier jar? Comment injecter un autre haricot de printemps de la classe de ce pot? Pouvez-vous fournir la voie possible? Quand je reçois comme ci-dessous ça ne fonctionne pas?Composant ressort Analyser les classes à partir d'un pot?

Dans le fichier Jar

package org.java.support; 

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

Dans projet

package com.java.test.app; 

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

Dans configuraiton

<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> 

Je reçois l'erreur suivante;

13:32:12,331 DEBUG [org.springframework.context.annotation.AnnotationConfigApplicationContext] Unable to locate LifecycleProcessor with name 'lifecycleProcessor': using default [or 
[email protected]b03b] 
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) 
+0

Je suis désolé, mais je ne comprends vraiment pas votre question –

+0

Cela devrait fonctionner. Êtes-vous sûr que le "autre" pot est inclus en tant que dépendance? –

+0

Avez-vous vu si Spring enregistre les beans "CommonService" et "OtherService" lors de la création du contexte de l'application? De plus, "MyService" existe-t-il réellement? – gnomie

Répondre

1

Eh bien, vous êtes presque là :)

vous devez utiliser incluent des filtres pour ajouter le pot à votre contexte de printemps. Mais je pense que l'utilisation de deux lignes de balayage de composants devrait fonctionner aussi.

Exemple:

<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> 

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

2

Si vous générez votre pot d'Eclipse, la boîte de dialogue d'exportation, assurez-vous que la case à cocher « Ajouter des entrées d'annuaire » (dans les options) est cochée.

Questions connexes