** spring学习之 ioc容器与Bean的配置**
学习视频资源
ioc(inversion of control)控制反转
思想,把管理对象交给spring?spring管理对象的属性
BeanFactory接口有重载getBean方法,简单看其中几种
Object getBean(String var1)
这种方法通过在applicationContext.xml文件中配置唯一的实体类id来创建对象,缺点是方法返回类型为object,使用需要强转<T> T getBean(Class<T> var1)
这种使用了泛型,通过实体类.class(反射?)的方式创建对象,因为使用了泛型,所以返回值类型不需要强转,但applicationContext.xml文件中不能一个class类定义多个bean,不然会报错,案例代码:
调用代码
报错
Exception in thread "main" org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [com.study.april.Four] is defined: expected single matching bean but found 2: fourId,fourId2
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:366)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:332)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1066)
at com.study.april.TestBySpring.main(TestBySpring.java:18)
<T> T getBean(String var1, Class<T> var2)
既不用强转,也不用担心配置多个class Bean的问题
依赖注入的几种方式
-
通过property方法设置name和value是调用类中的set方法,如果类中没有set方法,property会报错
-
通过有参构造方法和xml配置constructor-arg标签来注入
-
通过p命名空间注入
注意:命名空间也依赖类的set方法,不写同样报错