bean标签使用autowrie="byType"属性报错?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bean标签使用autowrie="byType"属性报错?相关的知识,希望对你有一定的参考价值。

我查出来了 我在ioc容器里加入了两个实例 byType是通过类型装配 导致它不知道用哪个 实例注入

比如:
<html:form action="/empdelete.do" method="post">
</form>
这里的action要对应struts-config.xml中配置过的这个"path"属性,如下面的代码开头那个
<action path="/empdelete" type="org.springframework.web.struts.DelegatingActionProxy"
name="deleteForm" scope="request" input="/emppageshow.do">
<forward name="success" path="/emp/emp_page_dosuccess.jsp" />
<forward name="failed" path="/emppageshow.do" />
</action>
那么form在哪呢?form对应的就是上面代码中的“name”属性的值,也就是deleteForm,不过这里“deleteForm”还只是个别名,也是在struts-config.xml中配置过的,如下:
<form-bean name="deleteForm" type="demo.eop.struts.forms.DeleteForm" />
那么真正对应的form类就是demo.eop.struts.forms路径下的DeleteForm.java了

最后,你或许要问DeleteForm具体都是些什么?
package demo.eop.struts.forms;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

public class DeleteForm extends ActionForm

private int[] id;

public int[] getId()
return id;


public void setId(int[] id)
this.id = id;



这是一个很简单的form类,说是javabean也好,说是pojo也罢,这能理解吧?
id对应的是网页上的表单,如下面一个多选框,因为我是多选框,所以这里要定义id为int数组,如果只是个文本框那该就只是个String:
<html:multibox property="id">
<bean:write name="esa" property="eid" format="#"/>
</html:multibox>
form类里的id对应的就是这里的property="id"。

所以,你那句话的意思就是,如果你用了这个标签,系统就认为这是个form,那么你就必须为这个form编写一个form类,页面上的所有表单控件的名字都要写进去,form类中可以多写几个不用的,但不能少写,否则报错
参考技术A public void test() ApplicationContext ac = new ClassPathXmlApplicationContext("app.xml"); HourEmpServiceImpl hsi=(HourEmpServiceImpl) ac.getBean("hourEmpServiceImpl"); 注意:父类与子类匹配的方式是:子类自动装载成父类的对象。 接口与实现类:实现类的对象可以自动装载到接口的对象。否则会出现空指针异常。

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named ‘cacheMana

1.错误产生环境

使用SpringMVC时产生

2.错误描述

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'cacheManager' available
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:687)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1207)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)
	... 39 more

3.错误原因

在springmvc配置文件中引入了的约束问题,引入命名空间namespace的时候,会自动引入cache

4.解决办法

将约束中含有catch替换为mvc

成功运行

以上是关于bean标签使用autowrie="byType"属性报错?的主要内容,如果未能解决你的问题,请参考以下文章

Spring学习

spring bean属性

bean是用来做啥的?它有啥作用?

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named ‘cacheMana

springboot集成redis 报错@Bean definition illegally overridden by existing bean definition@bean定义被现有bean定

spring中Bean的懒加载