spring注入问题空指针
这是我的spring的XML[code="java"]<context:annotation-config/><!--配置数据源--><beanid="dataSourc...
这是我的spring的XML
[code="java"]
<context:annotation-config/>
<!--配置数据源-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/users"/>
<property name="user" value="root"/>
<property name="password" value="123"/>
<property name="maxPoolSize" value="40"/>
<property name="minPoolSize" value="1"/>
<property name="initialPoolSize" value="1"/>
<property name="maxIdleTime" value="20"/>
<property name="acquireIncrement" value="5"/>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingResources">
<list>
<value>cn/com/detech/entity/TUser.hbm.xml </value>
<value>cn/com/detech/entity/TUserinfo.hbm.xml </value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.hbm2ddl.auto=update
hibernate.show_sql=true
hibernate.format_sql=true
</value>
</property>
</bean>
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" > </property>
</bean>
<tx:annotation-driven transaction-manager="txManager"/>
<bean id="userService" class="cn.com.detech.userdao.impl.UserService">
</bean>
[/code]
接下来是有一个接口
public interface UserBean;
有一个类实现这个接口
[code="java"]public class UserService implements UserBean {
//获取在spring容器里面的数据源
@Resource private SessionFactory sessionFactory;
public TUserinfo getUser(Integer userId) {
System.out.println("这里调用的是UserService的查找用户方法");
System.out.println(sessionFactory);
TUser tu=(TUser) sessionFactory.getCurrentSession().get(TUser.class, userId);
Iterator it=tu.getTUserinfos().iterator();
return (TUserinfo) it.next();
}[
[/code]
下面有一个Action
[code="java"]
public class UserAction {
@Resource UserBean userService;
private TUser tu=new TUser();
private TUserinfo tui=new TUserinfo();
public String login(){
System.out.println(userService+"aaaa");
System.out.println(userService.getUser(1).getRealName());
String nextPage="ssss";
return nextPage;
}
[/code]
然后在Jsp页面我做了个测试代码是这样的:
<%
UserAction userAction=new UserAction();
userAction.login();
%>
现在得问题就是说是空指针问题。。。我或许哪里错了。。但是这两天一直在找这个问题。。
拜托大家了。。。 展开
[code="java"]
<context:annotation-config/>
<!--配置数据源-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/users"/>
<property name="user" value="root"/>
<property name="password" value="123"/>
<property name="maxPoolSize" value="40"/>
<property name="minPoolSize" value="1"/>
<property name="initialPoolSize" value="1"/>
<property name="maxIdleTime" value="20"/>
<property name="acquireIncrement" value="5"/>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingResources">
<list>
<value>cn/com/detech/entity/TUser.hbm.xml </value>
<value>cn/com/detech/entity/TUserinfo.hbm.xml </value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.hbm2ddl.auto=update
hibernate.show_sql=true
hibernate.format_sql=true
</value>
</property>
</bean>
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" > </property>
</bean>
<tx:annotation-driven transaction-manager="txManager"/>
<bean id="userService" class="cn.com.detech.userdao.impl.UserService">
</bean>
[/code]
接下来是有一个接口
public interface UserBean;
有一个类实现这个接口
[code="java"]public class UserService implements UserBean {
//获取在spring容器里面的数据源
@Resource private SessionFactory sessionFactory;
public TUserinfo getUser(Integer userId) {
System.out.println("这里调用的是UserService的查找用户方法");
System.out.println(sessionFactory);
TUser tu=(TUser) sessionFactory.getCurrentSession().get(TUser.class, userId);
Iterator it=tu.getTUserinfos().iterator();
return (TUserinfo) it.next();
}[
[/code]
下面有一个Action
[code="java"]
public class UserAction {
@Resource UserBean userService;
private TUser tu=new TUser();
private TUserinfo tui=new TUserinfo();
public String login(){
System.out.println(userService+"aaaa");
System.out.println(userService.getUser(1).getRealName());
String nextPage="ssss";
return nextPage;
}
[/code]
然后在Jsp页面我做了个测试代码是这样的:
<%
UserAction userAction=new UserAction();
userAction.login();
%>
现在得问题就是说是空指针问题。。。我或许哪里错了。。但是这两天一直在找这个问题。。
拜托大家了。。。 展开
3个回答
展开全部
这个问题很明显,你使用了spring,但你的bean并不是从spring容器中拿到。
正常的应该是:
UserAction userAction=(UserAction )ApplicationContext.getBean("userAction");
这样才是属于spring管理,它才能进行依赖注入。
至于怎么拿到ApplicationContext,你查一下~。
正常的应该是:
UserAction userAction=(UserAction )ApplicationContext.getBean("userAction");
这样才是属于spring管理,它才能进行依赖注入。
至于怎么拿到ApplicationContext,你查一下~。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<bean id="userService" class="cn.com.detech.userdao.impl.UserService">
</bean>
@Resource UserBean userService;
确认这注解能通过接口注入吗
你可以试下
@Resource UserService userService;
如果还不行 那我就错了
</bean>
@Resource UserBean userService;
确认这注解能通过接口注入吗
你可以试下
@Resource UserService userService;
如果还不行 那我就错了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要说明白到底是哪个地方报空指针啊
报错的时候会有的提示的,哪个文件第几行第几列
报错的时候会有的提示的,哪个文件第几行第几列
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询