spring自动装配小问题
如下文件,第一:当加入...default-autowire="byName"时,老是提示其后面缺少“>”或者“/>”,可是这个不是明明有吗?第二:如果没有自动装配,也可...
如下文件,
第一:当加入...default-autowire="byName"时,老是提示其后面缺少“>”或者“/>”,可是这个不是明明有吗?
第二:如果没有自动装配,也可以直接用setter方法进行注入,也就是说没有...default-autowire="byName"这句话我也可以注入,这是怎么回事?
<?xml version="1.0" encoding="UTF-8"?>
<beans ...default-autowire="byName">
<bean id="user" class="com.shi.User">
<property name="uname" value="shi"></property>
<property name="ubirth" value="2000-12-3"></property>
<property name="id" value="123"></property>
</bean>
</beans>
这是User类
package com.shi;
public class User {
private String uname,ubirth;
private int id;
set,get方法……
这是UserManager
package com.shi;
public class UserManager {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
这是XML文件
<?xml version="1.0" encoding="UTF-8"?>
<beans default-autowire="byName">
<bean id="user" class="com.shi.User">
<property name="uname" value="shi"></property>
<property name="ubirth" value="2000-12-3"></property>
<property name="id" value="123"></property>
</bean>
<bean id="manager" class="com.shi.UserManager"></bean>
</beans>
但是报错了,说找不到beans,什么原因? 展开
第一:当加入...default-autowire="byName"时,老是提示其后面缺少“>”或者“/>”,可是这个不是明明有吗?
第二:如果没有自动装配,也可以直接用setter方法进行注入,也就是说没有...default-autowire="byName"这句话我也可以注入,这是怎么回事?
<?xml version="1.0" encoding="UTF-8"?>
<beans ...default-autowire="byName">
<bean id="user" class="com.shi.User">
<property name="uname" value="shi"></property>
<property name="ubirth" value="2000-12-3"></property>
<property name="id" value="123"></property>
</bean>
</beans>
这是User类
package com.shi;
public class User {
private String uname,ubirth;
private int id;
set,get方法……
这是UserManager
package com.shi;
public class UserManager {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
这是XML文件
<?xml version="1.0" encoding="UTF-8"?>
<beans default-autowire="byName">
<bean id="user" class="com.shi.User">
<property name="uname" value="shi"></property>
<property name="ubirth" value="2000-12-3"></property>
<property name="id" value="123"></property>
</bean>
<bean id="manager" class="com.shi.UserManager"></bean>
</beans>
但是报错了,说找不到beans,什么原因? 展开
3个回答
展开全部
第一个问题应该是什么地方写错了,可以使用排除法一点点缩小范围检查,去掉default-autowire="byName"会不会出错。
第二个问题是你并没有理解自动装配,你用的都是set注入,没有用到自动装配;自动装配应该是有2个bean,一个bean需要另一个bean的依赖,不需要使用<propertyname="user" ref="user"/>,根据在java类里定义的属性名字为user,自动匹配user Bean。给个例子如下:
定义一个java文件依赖你的user
package com.shi;
public class Bean1 {
private User user
getUser/setUser方法……
//其他操作……
}
XML定义bean
<bean id="bean1" class="com.shi.Bean1"/>
第二个问题是你并没有理解自动装配,你用的都是set注入,没有用到自动装配;自动装配应该是有2个bean,一个bean需要另一个bean的依赖,不需要使用<propertyname="user" ref="user"/>,根据在java类里定义的属性名字为user,自动匹配user Bean。给个例子如下:
定义一个java文件依赖你的user
package com.shi;
public class Bean1 {
private User user
getUser/setUser方法……
//其他操作……
}
XML定义bean
<bean id="bean1" class="com.shi.Bean1"/>
更多追问追答
追问
非常感谢哈,第一个问题太坑爹了,原来是前面的那个“...”,估计是版本的问题,去掉就可以了
追答
第二个问题懂了没有啊?
展开全部
private String uname,ubirth;改成 private String uname; private String ubirth;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在定义Bean时,<bean>标签有一个autowire属性,我们可以通过指定它来让容器为受管JavaBean自动注入依赖对象。
byName:通过属性的名字的方式查找JavaBean依赖的对象并为其注入。比如说类Computer有个属性printer,指定其autowire属性为byName后,Spring IoC容器会在配置文件中查找id/name属性为printer的bean,然后使用Seter方法为其注入。
理解了吗
byName:通过属性的名字的方式查找JavaBean依赖的对象并为其注入。比如说类Computer有个属性printer,指定其autowire属性为byName后,Spring IoC容器会在配置文件中查找id/name属性为printer的bean,然后使用Seter方法为其注入。
理解了吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询