DI(依赖注入)
set注入
举例所有的set注入方法
<property name="name" value="sb"/>
<property name="address" ref="address"/>
<property name="books">
<array>
<value>西游记</value>
<value>三国演义</value>
<value>水浒传</value>
<value>红楼梦</value>
</array>
</property>
<property name="hobbies">
<list>
<value>唱跳rap</value>
<value>篮球</value>
</list>
</property>
<property name="cards">
<map>
<entry key="红桃" value="K"/>
<entry key="方块" value="J"/>
</map>
</property>
<property name="games">
<set>
<value>lol</value>
<value>cf</value>
</set>
</property>
<property name="wife">
<null/>
</property>
<property name="info">
<props>
<prop key="un">sb</prop>
<prop key="pwd">123456</prop>
</props>
</property>
p和c命名空间
p命名空间
带有 p 命名空间的 XML 快捷方式
xmlns:p="http://www.springframework.org/schema/p"
举个简单的例子,User类含有 name 和 age 两个参数。p就代表参数property,可以理解为根据参数注入。
<bean id="user" class="com.zxt.pojo.User" p:name="sb" p:age="18"/>
c命名空间
带有 c 命名空间的 XML 快捷方式
xmlns:c="http://www.springframework.org/schema/c"
c代表construct-args,理解为通过有参构造注入。
<bean id="user2" class="com.zxt.pojo.User" c:name="sb2" c:age="182"/>
自动装配
byname
autowire="byName" 放在bean里,举个例子:
<bean id="people" class="com.zxt.pojo.People" autowire="byName">
<property name="name" value="sb"/>
</bean>
要保证id唯一
bytype
autowire="byType" 放在bean里,和byname类似。 优点: 通过bytype自动注入的bean,id可以省略。 要保证类型唯一
通过注解
- 导入约束
- 配置注解的支持
<context:annotation-config/> ???? 这是注解的支持
配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>
</beans>
在属性上使用@Autowired ,让这个属性自动注入,可以忽略对应的 setter 方法。 更多用法: @Autowired(required = false) 自动装配,且这个对象可以为null。与此相同的还有一个注解@Nullable ,在参数列表里,某个参数前加这个注解,那么这个参数可以被传入null。 @Qualifier("value") 当同一类型对象只有一个时,自动装配根据 bytype,当同一类型对象是多个时,就会根据 byname 自动装配,这个注解就是某个类型有多个对象,装配 id 为 value 的那个。
|