Проблема с аннотацией @autowired, без внедрения bean-компонента в класс, с использованием Spring3.0, hibernate

следующий мой класс:

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 аннотация не работает. Он отображает значение configService как null при вызове метода addMessage . однако он правильно введен в некоторые из моих классов контроллера, но не здесь.

Кто-нибудь может объяснить, в чем проблема? и как решить эту проблему?

Код для XML: (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>

Другой XML: (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>

Заранее спасибо.

ConfigService : из одиночных игр S join (выберите max (SingleId) как SingleId из группы Single по ArtistId) S2 в ...

Я новичок в LINQ, и я пытаюсь преобразовать этот SQL-запрос в его эквивалент LINQ:

select S.*
from Singles S
join (
    select max(SingleId) as SingleId
    from Single 
    group by ArtistId) S2 on S2.SingleId = S.SingleId
order by Released desc

Таблица выглядит так:

 -----------
| Singles   |
|-----------|
| SingleID  |
| ArtistId  |
| Released  |
| Title     |
| .....     |
 -----------

и так далее ... И содержит, например, следующие элементы:

SingleID   ArtistID    Released    Title
1          1           2011-05-10  Title1
2          1           2011-05-10  Title2
3          2           2011-05-10  Title3
4          3           2011-05-10  Title4
5          4           2011-05-10  Title5
6          2           2011-05-10  Title6
7          3           2011-05-10  Title7
8          5           2011-05-10  Title8
9          6           2011-05-10  Title9

Итак, я пытаюсь получить последние синглы, но только по одному на каждого исполнителя. Кто-нибудь может мне помочь? :) Может быть, есть еще лучший способ написать запрос?

Обновление:

Чтобы ответить на вопросы, размещенные в комментариях: Мы используем Microsoft SQL Server и LINQ to NHibernate.

Вот пример, который мы используем прямо сейчас, который возвращает последние синглы без группировки по artistid:

public Single[] GetLatest()
{
    IQueryable<Single> q;
    q = from s in _sess.Query<Single>()
        where s.State == State.Released
        orderby s.Released descending
        select s;

    return q.Take(20).ToArray();
}
7
задан AmITheRWord 10 May 2011 в 14:09
поделиться