小白白123
Spring默认找构造参数最多的实例化, 如果使用了@Autowired注解优先使用注解指定的
慕粉184955863
没有吧。。。。
慕粉1473922411
service层和dao层的bean没定义
淋雨明天
将接口的引用指向实现类的对象,是多态的一种表现形式,可以提高代码的灵活性
Serena_Cecilia
类地址需要改成 你自己的
依水
在没有使用注解的情况下你还能使用Bean,肯定是因为你在spring的xml配置中有配置过default-autowire或者配置过bean的id等
慕斯2064778
自问自答一下,查完资料,@Autowired默认是按照byType查找,然后byType也不能说明直接查找到实现类呀。
Hmm,没有查到文档,我想在初始化容器的时候,扫面类的时候,容器也记下了每个类实现了哪些接口。 然后当你用接口的引用时,容器给你autowired一个实现类的实例了。 PS:当我创建了2个类,实现同一接口的时候,报错了。 发现有2个类实现同一接口,改从byName查找了
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [com.ken.study.spring_study.DAOSave] is defined: expected single matching bean but found 2: DAOSaveImpl,DAOSaveImpl2
这个时候呢,应该配合@Qualifier来用,存在多个实现类,可以指定名字,
不过比较有趣,看上面exception信息,这个时候用@Repository注解的DAO两个实现类,bean名字不是首字母小写,而是大写.......
qq_晗_4
这个要你实际去配置一遍再看才有效果,如果是第一次看,很难懂的
昵称是JaVa
TYPE
北海北极熊
Bean注册说的是把Bean实例化并交由IoC容器进行管理,注入说的是Ioc容器把它管理的Bean按照需要(比如说按名称、按类型)赋值给其它Bean,当然后者也是由IoC容器进行管理的,实现自动装配的作用,从而降低高层级对低层级在编码上的依赖,注意是编码上的依赖,进而提高项目的可维护性。。。至于二者的关系,我理解的是,注册是基础,注入是手段(实现方法:我感觉是IoC容器管理了注册于其中的Bean的名称和类型,然后进行名称和类型的匹配,匹配成功就直接赋值),降低依赖是目的。。。
慕粉0302633
你StirngUtils 没定义isEmpty(String) 方法,要求参数为String
紫_羽
如果自行撰写了构造函数,编译程序就不会自动建立默认构造函数,所以会初始化失败。在private InjectionDAO injectionDAO上 或者 setter上@Autowired的话,而且撰写的带参构造函数没有注释掉,前两者就没有默认构造函数来调用形成实例对象了,所以报错里头会有说no default constructor 还有 initialization失败
努力学习有糖吃
已解决。。。
不该和你去看海
Test是测试方法,类似于main()方法;用getBean是为了初始化容器,在容器中构造对象,然后再拿对象出来使用
蓝烟amber
普通的set方法是将传入的参数赋给相应的属性,和直接autowired效果一样
但是也有一些情况会在set方法里面写一些处理逻辑,这是就需要在set方法上进行标注
慕瓜5041502
问题不在这里,问题在于spring-inject.xml中 component-scan的 base-package路径和@Service所在路径不一致
cccccttttyyy
接口只是对外展示的一个声明,真正有作用的还是实现类
去南极给企鹅洗热水澡
@Required注解适用于bean属性的setter方法并且它指示,受影响的bean属性必须在配置时被填充在XML配置文件中,否则容器将抛出BeanInitializationException.
也就是说,你要用@Required注解setter方法,就必须在Spring 配置文件中设置该属性
慕粉3674784
InjectionServiceImpl类上没有注入@Component等注解吧?
Justonedayzhupeng
No default constructor found;
setter设置注入就是调用setXXX方法,但是需要保留默认构造方法
Justonedayzhupeng
我猜测会不会是你的注解的成员变量的变量名有问题。
java家洼
规定的吧,如果设置两个构造函数required=true运行会出现下列错误
Invalid autowire-marked constructor: public com.imooc.beanannotation.jsr.JsrServie(). Found another constructor with 'required' Autowired annotation: public com.imooc.beanannotation.jsr.JsrServie(com.imooc.beanannotation.jsr.JsrDAO)
涅槃ing
绝对飘零
你只是有了set/get方法,并没有生成helloMasseger对象啊,就是传说中的装配,相当于new了这个对象
qq_云梦泽_0
linda1048195
eclipse不同的透视图决定的显示结构会有些区别