java中.xml配置中bean标签的认识
注意事项:
1、怎么把我们的.xml文件注入到Spring容器中?
千万注意要在web.xml文件中,的<context-param></context-param>标签中配置我们自定义的.xml文件,通过<listener></listener>这个标签把我们配置的文件注入到Spring容器中;
2、怎么把我们的自己写的类注入到Spring容器中?配置bean时,配置的是接口还是实现?
1.我们只需在Spring容器能加载到的地方配置bean就可以把自定义类加入到Spring容器中,注意:我们配置的bean是实现类,而不是接口!!
2.我们可以直接在我们的impl类中配置@service,把相应的类注入到spring容器中。
切记这两种方式都可以注入
说明:在配置文件中配置bean,其实就是在Spring容器中注入类,这个类在Spring容器中有唯一一个表示id,我们可以通过Spring容器去管理这个类,非常方便(类似ios中的ARC自动释放池);
Paste_Image.png
<!--注意:一旦在配置文件中配置bean映射,则配置的这个class就会被注入到Spring容器中,我们可以在程序中直接只用这个类,比如@Autowired为什么能够自动写入get/set方法,就是因为当前类已经注入到Spring容器中了, 当然我们也可以在程序中通过id(不通过Spring容器),找到类对应的对象,去处理相关的东西 -->
<!-- 这个配置的含义是:程序开始执行org.springframework.web.servlet.view.InternalResourceViewResolver这个类,并设置这个类中的prefix属性值为/,suffix属性值为.jsp -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 使用前缀和后缀 -->
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean
总结刚学的关于spring的xml配置bean的知识。** 在ApplicationContext.xml文件中使用bean节点配置bean,bean的属性id在IOC容器中必须是唯一的
<bean id="helloWorld" class="com.test.spring.beans.HelloWorld">
<property name="name" value="Spring"></property>
</bean>
依赖注入有三种方式
属性注入
构造方法注入
工厂方法注入(很少使用,不推荐,本文不再介绍)
属性注入
通过 setter 方法注入Bean 的属性值或依赖的对象。属性注入使用 <property>
元素, 使用 name 属性指定 Bean 的属性名称,value 属性或 <value>
子节点指定属性值 。属性注入是实际应用中最常用的注入方式。HelloWorld类中的setName()方法,对应上边代码中的name属性,例如:把setName()方法名改为setName2(),property中的name属性值为name时则会报错,需要将name属性改为name2。
构造方法
构造方法注入Bean 的属性值或依赖的对象,它保证了 Bean 实例在实例化后就可以使用。 构造器注入在 <constructor-arg>
元素里声明属性, <constructor-arg>
中没有 name 属性。使用value属性值或value子节点为属性赋值。可以同时使用索引 index 和type属性对应为哪个属性赋值。index的值表示构造函数中参数的位置。type表示成员属性的类型,例如type="double"
或者type="Java.lang.String"
<bean id="car" class="com.test.spring.beans.Car">
<constructor-arg value="Audi" index="0"></constructor-arg>
<constructor-arg value="ShangHai" index="1"></constructor-arg>
<constructor-arg value="300000" type="double"></constructor-arg>
</bean>
集合属性
当注入的属性是集合时,Spring也提供了通过一组内置的 xml 标签(例如: <list>, <set> 或 <map>) 来配置集合属性。
配置 java.util.List 类型的属性, 需要指定 <list> 标签, 在标签里包含一些元素. 这些标签可以通过 <value> 指定简单的常量值, 通过 指定对其他 Bean 的引用. 通过<bean> 指定内置 Bean 定义. 通过 指定空元素. 甚至可以内嵌其他集合.
数组的定义和 List 一样, 都使用 <list>配置 java.util.Set 需要使用 <set> 标签, 定义元素的方法与 List 一样。
<!-- 测试如何配置集合属性 -->
<bean id="persion3" class="com.test.spring.beans.collection.Persion">
<property name="name" value="Mike"></property>
<property name="age" value="27"></property>
<property name="cars">
<!-- 使用list节点为list类型的属性赋值 -->
<list>
<ref bean="car"/>
<ref bean="car2"/>
</list>
</property>
</bean>