0

我已经在我的 servlet xml 中配置了 sessionfactory,并通过 SETTER 注入将其注入到 bean 中。我在bean的setter方法中放了一个日志。服务器启动后,我正在获取日志。似乎它正在将属性注入到我的 bean 中。但是当我调用该方法时,它会为空。附上我的代码..

<** Bean configuration Starts **>
<bean id="userServiceImpl" class="com.springapp.oranju.Service.UserServiceImpl">
<property name="sessionFactory" ref="sessionFactory"/>  
</bean>
<bean id="sessionFactory"
class="
org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation">
<value>/WEB-INF/config/hibernate.cfg.xml</value>
</property>            
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${dialect}</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<** Bean configuration ends **>
<** Bean Class starts**>
public class UserServiceImpl implements UserService{
private SessionFactory sessionFactory;   
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
try {
System.out.println(" **********************************************************************************"+this.sessionFactory.getReference());
} catch (NamingException e) {   
e.printStackTrace();
}
}
public void validateLogin(UserVO userVO) {      
System.out.println(sessionFactory);
sessionFactory.getCurrentSession().save(new User(new UserVO()));
}
}
<** Bean Class ends**>
<** call from controller starts **>
UserServiceImpl userService = new UserServiceImpl();
userService.validateLogin(new UserVO());
<** call from controller ends **>
I have tried using the @ Autowired.. but it was helpless.
Awaiting for a answer !.........
4

1 回答 1

1

您必须在控制器中自动连接 UserServiceImpl。如果您通过new UserServiceImpl()手动实例化它,spring IoC 容器不知道 UserServiceImpl 依赖于 sessionFactory。

在应用程序上下文 xml 中包含以下元素:

<context:component-scan base-package="org.example"/>

其中 base-package 元素是服务类的公共父包,如果您使用的是 spring mvc,则通过以下方式在控制器中自动连接服务:

@Controller public class ExampleController {

    @Autowired private UserServiceImpl userService;

}
于 2013-07-29T12:11:50.793 回答