gpt4 book ai didi

hibernate - @autowired 注释问题,不在类中注入(inject) bean,使用 Spring3.0, hibernate

转载 作者:行者123 更新时间:2023-12-04 13:29:07 24 4
gpt4 key购买 nike

以下是我的课:

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作为 当调用 addMessage方法。但是它被正确地注入(inject)了我的一些 Controller 类,但不是在这里。

谁能解释什么是问题?以及如何解决这个问题?

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 :
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;
}

配置服务实现者:
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);
}

}

}

最佳答案

StockTraderLogger 未声明为 spring bean,并且在 spring 上下文中不存在,因此注入(inject)将不起作用。

<bean id="StockTraderLogger" class="com.abc.trade.util.StockTraderLogger"/>

或者
@Component
public class StockTraderLogger { /**/ }

关于hibernate - @autowired 注释问题,不在类中注入(inject) bean,使用 Spring3.0, hibernate ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5950836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com