(一)Spring的IOC学习

  在applicationContext.xml来配置bean,通过该接口,在主程序中,可以指定初始化的对象,不需要在进行赋值操作,直接在xml里配置好。

接下来分享的是bean配置的多种方法:

①通过类的id获取bean

在主函数中,通过容器里的id来获取bean对象

ApplicationContext aContext=new ClassPathXmlApplicationContext("applicationContext.xml");

user beanUser=(user)aContext.getBean("user");

beanUser.print();

输出该对象的信息:

 

 

 ②通过类型获取bean,缺点是只能是一个该类型的bean对象,如果有多个则会出错,多个可以通过id的方式来进行获取

例如上面的user对象,在主函数中可以这样获取:

ApplicationContext aContext=new ClassPathXmlApplicationContext("applicationContext.xml");

user beanUser=aContext.getBean(user.class);

beanUser.print();

得到的结果和上面的一样

二、给bean的属性赋值多种操作

①直接通过利用name,value的方式进行赋值

②通过构造器进行赋值,前提在bean类中有该构造函数

还可以直接省略name属性:

通过索引值指定参数位置

           

           

           

           

     

通过类型不同区分重载的构造器

      

      

      

      

p名称空间:为了简化XML文件的配置,越来越多的XML文件采用属性而非子元素配置信息。

需要导入:xmlns:p="http://www.springframework.org/schema/p"

id="studentSuper"

class="com.atguigu.helloworld.bean.Student"

p:studentId="2002" p:stuName="Jerry2016" p:age="18" />

三、内部bean对象以及引用对象

通过指定空元素

引用对象的使用:ref=“引用外部对象的id”

内部bean对象:相当于car=new car(),car对象在user对象里

四、集合属性

①List和map

List集合里包括:一个自定义的对象,一个引用对象。

  配置java.util.List类型的属性,需要指定标签,在标签里包含一些元素。

  这些标签可以通过指定简单的常量值,通过指定对其他Bean的引用。

  通过指定内置bean定义。通过指定空元素。

Map集合里包括:2个value,一个引用,一个自定义对象,都对应着不同的key值

  标签里可以使用多个作为子标签。每个条目包含一个键和一个值。

 

  必须在标签里定义键。

 

  因为键和值的类型没有限制,所以可以自由地为它们指定元素。

 

  可以将Map的键和值作为的属性定义:简单常量使用key和value来定义;bean引用通过key-ref和value-ref属性定义。

 

在主函数中,输出结果:

user beanUser2=(user)aContext.getBean("user06");

System.out.println(beanUser2.books);

System.out.println(beanUser2.maps);

结果为:

 

 

 ②Properties

使用定义java.util.Properties,该标签使用多个作为子标签。每个标签必须定义key属性

 

root

root

jdbc:mysql:///test

com.mysql.jdbc.Driver

 

③集合类型的bean

如果只能将集合对象配置在某个bean内部,则这个集合的配置将不能重用。我们需要将集合bean的配置拿到外面,供其他bean引用。

配置集合类型的bean需要引入util名称空间:xmlns:util="http://www.springframework.org/schema/util"

 

12

 

五、级联属性

含义:可以控制属性的属性

可以改变user07下的car的price属性,如果car为引用对象,那么引用对象也会被修改

 

--------------这就是今天分享的bean的配置操作。

明天学习:利用工厂来创建bean

 

好文链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。