@autowired annotation Problem, nicht injizierenden bean in der Klasse, mit Spring3.0, hibernate

folgende ist meine Klasse:

package com.abc.trade.util;

public class StockTraderLogger {

    static Logger logger = Logger.getLogger("StockTraderLogger");

    @Autowired
    ConfigService configService; 




    public static void debug(Object className, Object logMessage) {     
        try {
            System.out.println("in debug.. ");
            StockTraderLogger stl =new StockTraderLogger();
            stl.addMessage(""+convertToString(className)+"\t"+convertToString(logMessage));
            System.out.println("in debug..post ");
        } catch (DataAccessException e) {
            System.out.println("Caught exception...");
                e.printStackTrace();
        }
    }

    public void addMessage(String message) throws DataAccessException {
        System.out.println("in  add message of util. ");
        System.out.println("String: " + configService); 

        configService.addMessage(message);          
    }
}

@Autowire annotation nicht funktioniert. Es zeigt den Wert configService als null, wenn Sie aufgerufen addMessage Methode. aber es ist richtig injiziert, die in einigen meiner Klassen Controller, aber nicht hier.

Kann mir jemand erklären was ist das problem? und wie dieses Problem zu beheben?

Code für XML ist:(beansdefinition.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:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/tx
           http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
           http://www.springframework.org/schema/aop


   http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-2.5.xsd">

    <context:component-scan base-package="com.abc.trade.util"/> 
      <context:component-scan base-package="com.abc.trade.service"/>

       <!-- Hibernate Configuration -->
       <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">    

                <property name="annotatedClasses">      
                    <list>
          <value>com.abc.trade.model.Order</value>  
          <value>com.abc.trade.model.Profile</value> 
          <value>com.abc.trade.model.Log</value>                
                    </list>    
                </property>  
           </bean>

            <tx:annotation-driven/> 

           <bean id="transactionManager" 
               class="org.springframework.orm.hibernate3.HibernateTransactionManager">
                <property name="sessionFactory" ref="sessionFactory"/>
          </bean>

           <bean id="commonService" class="com.abc.trade.framework.service.CommonServiceImplementor">
                <property name="commonDao" ref="commonDao"/>
           </bean>

           <bean id="commonDao" class="com.abc.trade.framework.dao.HibernateDAO">
            <property name="sessionFactory"><ref local="sessionFactory"/></property>

           </bean>

            <bean id="configService" class="com.abc.trade.service.ConfigServiceImplementor" parent="commonService">
           </bean>

           <import resource="../context/springws-servlet.xml"/>
     </beans>

Anderen XML ist:(Springmvc-servlet.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:webflow="http://www.springframework.org/schema/webflow-config"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/webflow-config
        http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd">

   <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> 
        <property name="prefix" value="/jsp/"/>
         <property name="suffix" value=".jsp"/>
    </bean>


     <context:component-scan base-package="com.abc.trade.controller" />   
     <context:component-scan base-package="com.abc.trade.util"/>


     <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
        <property name="basename" value="messages" />
    </bean>

     <!-- Exception Resolver -->
     <bean id="exceptionResolver"
    class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="exceptionMappings">
            <props>
                <prop key="com.abc.trade.framework.exception.DataAccessException">
                errorPage</prop>
                <prop key="java.sql.SQLException">errorPage</prop>
                <prop key="java.lang.Exception">errorPage</prop> 
            </props>
        </property>
    </bean>   

</beans>

Vielen Dank im Voraus.

ConfigService:

package com.abc.trade.service;
import org.springframework.stereotype.Service;
import com.abc.trade.framework.exception.DataAccessException;

public interface ConfigService {

        public void addMessage(String message) throws DataAccessException;
}

Config Service-Implementierung:

package com.abc.trade.service;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.abc.trade.framework.exception.DataAccessException;
import com.abc.trade.framework.service.CommonServiceImplementor;
import com.abc.trade.model.Log;
import com.abc.trade.model.Mode;
import com.abc.trade.util.StockTraderLogger;

@Service("configService")
public class ConfigServiceImplementor extends CommonServiceImplementor implements ConfigService{

    String errorMessage = "";

    @Override
    public void addMessage(String message) {
        System.out.println("in add message of service...........");
        Log log = new Log();
        try{
            log.setMessage(message);
            System.out.println("Message is: "+message);
            int i=save(log);
        }catch(Exception e)
        {
            errorMessage = "Error in saving debug message";
            e.printStackTrace();
            //throw new DataAccessException(errorMessage);
        }

    }

}
Was ist das volle Paket Klasse name des ConfigService Klasse? Ich glaube, standardmäßig ist die Injektion nach Typ, nicht nach Namen.
Ich autowired diese bean im controller und es ist in Ordnung, aber wenn ich autowired in einigen anderen Klassen, dann ist es nicht immer autowired.
Hast du zufällig das problem lösen sagar????
Nein, Derzeit bin ich nicht im Frühjahr.

InformationsquelleAutor Sagar | 2011-05-10

Schreibe einen Kommentar