小弟现在学SPRING SETTER注入会了 现在搞构造注入可是XML老是有错误 其实很简单的一个例子而已
包括一个用户BEAN 和一个测试MAIN 下面就是代码了 请大家指教一下 其实就是简单的测试 连数据库都没连
这个是用户BEAN
userbean.java
public class userbean { private String username; public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
}
}
接下来是测试类在这个类里使用了构造主入 现在不管他的实用性我只是在做测试
testbean.java
public class testbean {
userbean user;
public testbean(){
this.user = user;
}
public void fangfa(){
user.setUsername("asd");
System.out.println(user.getUsername());
}
public static void main(String[] args){
testbean t = new testbean();
t.fangfa();
}
}
下面是SPRING的配置文件
<?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.0.xsd"> <bean id="user" class="com.spring.beans.userbean"></bean> <bean id="testbean" class="com.spring.beans.testbean">
(就是这里老提示错误)-------------》 <constructor-arg ref="user"></constructor-arg>
</bean>
</beans>
麻烦大家帮助一起解决 谢谢呵呵在线等 一OK马上给分
包括一个用户BEAN 和一个测试MAIN 下面就是代码了 请大家指教一下 其实就是简单的测试 连数据库都没连
这个是用户BEAN
userbean.java
public class userbean { private String username; public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
}
}
接下来是测试类在这个类里使用了构造主入 现在不管他的实用性我只是在做测试
testbean.java
public class testbean {
userbean user;
public testbean(){
this.user = user;
}
public void fangfa(){
user.setUsername("asd");
System.out.println(user.getUsername());
}
public static void main(String[] args){
testbean t = new testbean();
t.fangfa();
}
}
下面是SPRING的配置文件
<?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.0.xsd"> <bean id="user" class="com.spring.beans.userbean"></bean> <bean id="testbean" class="com.spring.beans.testbean">
(就是这里老提示错误)-------------》 <constructor-arg ref="user"></constructor-arg>
</bean>
</beans>
麻烦大家帮助一起解决 谢谢呵呵在线等 一OK马上给分
this.user = user;} 这样怎么能注入进去呢??
应改为:
public testbean(userbean object){
this.user = object;
}
可是现在有个新个问题呵呵 保证是最后一个啊!!!
这个是刚改过的testbean.java
public class testbean {
static userbean user;
public testbean(userbean user){
this.user = user;
}
public void fangfa(){
user.setUsername("asd");
System.out.println(user.getUsername());
}
public static void main(String[] args){
new testbean(user).fangfa();
}
}
运行后为什么还是有异常呢?
异常信息:Exception in thread "main" java.lang.NullPointerException
at com.spring.beans.testbean.fangfa(testbean.java:15)
at com.spring.beans.testbean.main(testbean.java:24)
为什么会是空指针。。难道是没有注入进来嘛??
public class testbean {
userbean user;
public testbean(userbean user){
this.user = user;
} public void fangfa(){
user.setUsername("asd");
System.out.println(user.getUsername());
}
public static void main(String[] args){
userbean user = new userbean();
testbean t = new testbean(user);
t.fangfa();
}
}但是有一个弄不明白 希望大家给我解释一下 我在上面先声明了以个USERBEAN对吧 然后构造注入的USERBEAN给了 最上面的USER
但是我明明是在MAIN里又创建了一个新的USERBEAN对象啊 为什么他还是成功而不是NULL异常呢??我觉得按理说这个对象里应该是NULL的啊麻烦大家不厌其烦告诉小弟一下 嘿嘿 谢谢啦
你可以BYNAME BYTYPE都可以的.public testbean{User user){ //这样就OK了.
this.user = user; }
将你的bean改成action类,然后通过对action的请求让spring实例化一个action。在main()方法中加上断点。或者public static void main(String[] args) {
System.out.println("main run");
}看看main方法中的断点是否断掉或者说是否输出main run。
另外对于application程序,入口点是main方法。但是如果想要使用spring的话。需要实例化Spring的ApplicationContext。
System.out.println("测试UBB~~~");
自从你升星以后
你回答问题的次数和你回答问题的详细程度成反比啊
public class testbean { userbean user;
public testbean(userbean user){
this.user = user; }
public void fangfa(){
user.setUsername("asd"); System.out.println(user.getUsername()); } public static void main(String[] args){ Resource resource = new FileSystemResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
testbean t = (testbean) factory.getBean("testbean");
t.fangfa();
} }
applicationContext.xml为你的spring配置文件,这里需要使用文件来初始化spring的bean工厂,初始化spring的bean工厂后,就可以用spring的bean工厂来获得每一个bean了,当获得testbean这个bean时,由于在spring的bean配置文件中定义了构造注入,于是spring的bean工厂会首先"生产"出user这个类的对象,并反射调用testbean的带有一个user类形参数的构造方法,将user这个类的对象传给他,通过这个构造方法初始化这个bean(testbean)的对象.