学习spring的第二天

对昨天的查漏:关于<bean>标签的scope属性,是由它决定原型和单例的,而不是说你java代码中用到了单例模式就是单例了。

其二就是lazy-init属性,它对于scope="singleton"是无用的,但是对于scope="prototype"来说,选择true,可以使初始化在getBean的时候进行,而不是在spring启动时,对singleton无用也是因为这个原因。

今天:主要是控制反转,依赖注入(所有被spring管理的bean,当他依赖一个其他的被spring管理的bean,那么spring负责把第二个bean注入第一个bean)

1.set访问器

 1.1:在<bean></bean>中选择<property>,它由name属性,填写set方法中的字段名。在<property>中,有<set><map><list><props>之类的标签,可以用于对类中的相应类型的字段进行操作。以为他们不想那些简单类型或者类类型。再在这个标签中可以使用<value>往里面添加值,每种标签有相应的特点,比如<set>就可以和java中的Set一样可以防止重复值。在<set>同级别以及<value>中可以设置规定值的类型属性。

  1.2:对于简单类型,直接在<property>中对name和value进行赋值。

  1.3:对于类类型:在<property>中对name和ref属性进行设置 ,ref是指引用。

   1.3.1:第一种是外部在创建一个指向该类的<bean id="x" class="x">,在ref中指向这个<bean>的id

   1.3.2:第二种是内部嵌套:<property>中<bean>,再在<bean>中<property>

2.构造函数:<bean id="x" class="x"></bean>中有<constructor-arg>,如果是简单类型直接通过value属性进行赋值(不写name属性就是按照构造方法的参数顺序,其他类似name功能的还有index下表,以及type指定类型),但如果不是简单属性,在<construcotr-arg>中也有像上述所说的<set><list>之类的标签,差不多的用法。

3.控制反转:IOC:inverse of control。也有人把它理解成DI(dependency injection),依赖注入。

 3.1不反转就是当你创建一个对象时,你要对它手动调用set方法初始化,而反转就是当你getBean得到一个对象后,它的所有属性已经设置好了,就是上面1和2讲的set和构造方法配置<bean>的注入,当然还有一种接口注入,我也不太清楚。

posted on 2019-10-17 16:23  我欲皆真  阅读(114)  评论(0编辑  收藏  举报

导航