获取Bean
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
User user = context.getBean("user",User.class);
一.基于xml方式:
<!--配置User对象的创建 -->
<bean id="user" class="com.abc.User"></bean>
- (1).在Spring配置文件中,使用bean标签,标签里面添加对应属性,就可以实现对象创建
- (2).在bean标签有很多属性,介绍常用的属性
id:唯一标识
class:类全路径(包类路径)
- (3).创建对象时候,默认也是执行无参数构造方法
二.基于xml方式注入属性
(1)DI:依赖注入,就是注入属性
- 第一种注入方式:set方法
<bean id="user" class="com.abc.User">
<!-- name:属性名 value:属性值-->
<property name="userName" value="abc" ></property>
<property name="passWord" value="123" ></property>
</bean>
- 第二种注入方式:有参构造
<bean id="user" class="com.abc.User">
<constructor-arg name="username" value="abc"></constructor-arg>
<constructor-arg name="passWord" value="123"></constructor-arg>
</bean>
- 第三种 p名称空间注入 (使用p名称空间注入,可以简化基于xml配置方式)
第一步 添加p名称空间到配置文件
xmls:p="http://www.springframework.org/schema/p"
第二步 进行属性注入 在bean标签里进行操作
<!--set方式-->
<bean id="user" class="com.abc.User" p:username="abc" p:password="123">
</bean>
(2)注入字面量
null
<property name="passWord" > <null/> </property>
属性含特殊符号
<!--1.转义 如<>转义<>-->
<property name="passWord" value="<<南京>>" >
</property>
<!--2.把特殊符号内容写进CDATA;-->
<property name="passWord" >
<value><![CDATA[<<南京>>]]></value>
</property>
(3)注入对象
<bean id="userDao" class="com.abc.dao.UserDao">
</bean>
<bean id="userService" class="com.abc.service.UserService">
<!-- name:属性名称 ref:bean标签的id -->
<property name="userDao" ref="userDao" > </property>
</bean>
内部bean
<bean id="userDao" class="com.abc.dao.UserDao">
</bean>
<bean id="userService" class="com.abc.service.UserService">
<property name="userDao" >
<bean id="userDao" class="com.abc.dao.UserDao">
</bean>
</property>
</bean>
级联赋值:
<bean id="user" class="com.abc.entry.User">
<property name="shcool" ref="shcool" > </property>
<property name="shcool.name" value="清华大学" > </property>
</bean>
<bean id="shcool" class="com.abc.entry.Shcool">
</bean>
注入集合类型
<bean id="user" class="com.abc.entry.User">
<!-- array的注入 -->
<property name="courses" >
<array>
<value>java课程</value>
<value>python课程</value>
</array>
</property>
<!-- list的注入 -->
<property name="list" >
<list>
<value>java课程</value>
<value>python课程</value>
</list>
</property>
<!-- map的注入 -->
<property name="maps" >
<map>
<entry key="java" value="java课程"></entry>
</map>
</property>
<!-- set的注入 -->
<property name="maps" >
<set>
<value>java课程</value>
<value>python课程</value>
</set>
</property>
</bean>
引入集合
<property name="list" >
<list>
<ref bean="user1"></ref>
<ref bean="user2"></ref>
</list>
</property>
<bean id="user1" class="com.abc.entry.User">
<property name="userName" value="abc"></property>
</bean>
<bean id="user2" class="com.abc.entry.User">
<property name="userName" value="张三"></property>
</bean>
util命名空间把集合注入部分提取出来
xmls:util="http://www.springframework.org/schema/util"
<util:list id="bookList">
<value>好书</value>
<value>天书</value>
</util:list>
<bean id="book" class="com.abc.entry.Book">
<property name="list" ref="bookList"></property>
</bean>