我有一个类,里面要调用我的写好的一个接口实现类,这个类用spring注入public interface IBpipUserBus {
public List<BpipUser> getUsersByDept(String deptId);
public void showMsg();
}
public class BpipUserImpl implements IBpipUserBus { private IBpipUserDao userDao;
private String msg;
public void setMsg(String msg) {
this.msg = msg;
}
public List<BpipUser> getUsersByDept(String deptId) {
if(userDao == null){
System.out.println("a");
}else{
System.out.println("b");
}
// TODO Auto-generated method stub
return userDao.getUsers(deptId);
} public void showMsg(){
if(msg == null){
System.out.println("aa");
}else{
System.out.println("bb");
}
System.out.println(this.msg);
}
public void setUserDao(IBpipUserDao userDao) {
this.userDao = userDao;
}}
applicationContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"><!-- 配置sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
<bean id="userBus" class="cn.ls.sys.bus.impl.BpipUserImpl"> <!-- -->
<property name="userDao" ref="userDao"/>
<property name="msg" value="OK!"></property>
</bean>
<bean id="userDao" class="cn.ls.sys.dao.impl.BpipUserImpl">
<property name="baseDao" ref="baseDaoImpl"/>
</bean>
<bean id="baseDaoImpl" class="cn.util.BaseDaoImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean></beans>
测试代码:
public class userTest{ public static void main(String[] args){
BeanFactory factory = new ClassPathXmlApplicationContext("classpath:../applicationContext.xml");
IBpipUserBus bpipUserBus = (IBpipUserBus)factory.getBean("userBus1");
//IBpipUserBus bpipUserBus = (IBpipUserBus)BeanUtils.getSpringBean("userBus1");
bpipUserBus.showMsg();
bpipUserBus.getUsersByDept("");
}
}
测试代码均能正常使用,现请教各位,,这个注入的类(BpipUserImpl)在web项目中如何实例化并调用呢,,比如说在jsp页面上,目前我在jsp页面用 IBpipUserBus bpipUser = new BpipUserImpl();
bpipUser.showMsg();
bpipUser.getUsersByDept("");试了,结果错误提示空指针异常,即需要注入的属性并未成功注入,
public List<BpipUser> getUsersByDept(String deptId);
public void showMsg();
}
public class BpipUserImpl implements IBpipUserBus { private IBpipUserDao userDao;
private String msg;
public void setMsg(String msg) {
this.msg = msg;
}
public List<BpipUser> getUsersByDept(String deptId) {
if(userDao == null){
System.out.println("a");
}else{
System.out.println("b");
}
// TODO Auto-generated method stub
return userDao.getUsers(deptId);
} public void showMsg(){
if(msg == null){
System.out.println("aa");
}else{
System.out.println("bb");
}
System.out.println(this.msg);
}
public void setUserDao(IBpipUserDao userDao) {
this.userDao = userDao;
}}
applicationContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"><!-- 配置sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
<bean id="userBus" class="cn.ls.sys.bus.impl.BpipUserImpl"> <!-- -->
<property name="userDao" ref="userDao"/>
<property name="msg" value="OK!"></property>
</bean>
<bean id="userDao" class="cn.ls.sys.dao.impl.BpipUserImpl">
<property name="baseDao" ref="baseDaoImpl"/>
</bean>
<bean id="baseDaoImpl" class="cn.util.BaseDaoImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean></beans>
测试代码:
public class userTest{ public static void main(String[] args){
BeanFactory factory = new ClassPathXmlApplicationContext("classpath:../applicationContext.xml");
IBpipUserBus bpipUserBus = (IBpipUserBus)factory.getBean("userBus1");
//IBpipUserBus bpipUserBus = (IBpipUserBus)BeanUtils.getSpringBean("userBus1");
bpipUserBus.showMsg();
bpipUserBus.getUsersByDept("");
}
}
测试代码均能正常使用,现请教各位,,这个注入的类(BpipUserImpl)在web项目中如何实例化并调用呢,,比如说在jsp页面上,目前我在jsp页面用 IBpipUserBus bpipUser = new BpipUserImpl();
bpipUser.showMsg();
bpipUser.getUsersByDept("");试了,结果错误提示空指针异常,即需要注入的属性并未成功注入,
解决方案 »
- js问题
- 一般jsp开发代码主要发在哪里?是放在页面里还是直接用.class?
- dfsdafsdafdsaf
- struts中使用javascript问题
- struts2中如何通过一个页面的值传到另一个页面,不通过action获得
- webservice求助。java.lang.UnsatisfiedLinkError: no corejava in java.library.path
- 小弟跪拜,求一代码!
- jspSmartUpload
- 还是session的问题,刚刚那个没有解决,但我还是结贴了。谢谢各位再帮我看一下!很急
- 在jsp中怎么实现分条件显示?
- GPS车辆监控web版的数据库访问和数字地图的开发
- jsp中的JSTL小问题
解决了 获取当前容器
WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext();
userBus1= (BpipUserImpl) context.getBean("userBus1");
WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext();
userBus1= (BpipUserImpl) context.getBean("userBus1");
和IBpipUserBus bpipUser = new BpipUserImpl();比起来,都是实例化,用了Spring框架之后他有什么特点吗?
看了这个帖子我改成这样了 MessageService messageService = (MessageSerImpl)ContextLoader.getCurrentWebApplicationContext().getBean("messageService");
MessageSerImpl里面有个
@Resource(name="messageDao")
private MessageDao messageDao;
这个可以自动注入但是,第一个也就是MessageService messageService用相同的方式无法自动注入
我理解为只要第一个手工注入后,后续的都可以自动注入
求指点