版权声明:《==study hard and make progress every day==》 https://blog.csdn.net/qq_38225558/article/details/84203695
依赖注入
构造参数注入 --> 常用的是方案一和方案二 MyBean类 YouBean类
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 方案一:根据构造器参数的顺序(索引)注入 索引开始为0
constructor-arg:构造器中的参数
index:参数位置 / name:参数名称 / type:类型
value:参数的值 / ref:引用其它的bean
-->
<bean id="myBean" class="com.zhengqing._02_constructor.MyBean">
<constructor-arg index="0" value="郑清" />
<constructor-arg index="1" value="18" />
</bean>
<!-- 方案二:根据构造器参数的名称注入 注意:名称必须一致
<bean id="myBean" class="com.zhengqing._02_constructor.MyBean">
<constructor-arg name="name" value="郑清" />
<constructor-arg name="age" value="18" />
</bean>-->
<!-- 方案三:根据构造器的类型注入
<bean id="myBean" class="com.zhengqing._02_constructor.MyBean">
<constructor-arg type="java.lang.String" value="郑清" />
<constructor-arg type="java.lang.Integer" value="18" />
</bean>
-->
<!--
<bean id="myBean" class="com.zhengqing._02_constructor.MyBean">
<constructor-arg value="郑清" />
<constructor-arg value="46" />
</bean>-->
<!-- 如果有一个参数是我们自己的一个对象,怎么解决?? YouBean:为另外一个bean类 -->
<!--方法一:先在外面定义
<bean id="youBean" class="com.zhengqing._02_constructor.YouBean" />
<bean id="myBean" class="com.zhengqing._02_constructor.MyBean">
<constructor-arg value="郑清" />
<constructor-arg value="18" />
<constructor-arg ref="youBean" />
</bean>
方法二:使用一个内部的Bean完成(不需要加id)
<bean id="myBean" class="com.zhengqing._02_constructor.MyBean">
<constructor-arg value="郑清" />
<constructor-arg value="18" />
<constructor-arg>
<bean class="com.zhengqing._02_constructor.YouBean" />
</constructor-arg>
</bean>
-->
</beans>
其它简单、集合属性注入 MyBean类
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="otherBean" class="com.zhengqing._03_di.OtherBean" />
<!--
property:属性(setXxx)
name:属性名称
value:属性值 / ref:引入属性值
-->
<bean id="myBean" class="com.zhengqing._03_di.MyBean">
<property name="id" value="1" />
<property name="name" value="郑清" />
<property name="sex" value="true" />
<property name="salary" value="10000" />
<!-- private List<OtherBean> otherBeanList; -有顺,可以重复 -->
<property name="otherBeanList">
<list>
<ref bean="otherBean" />
<ref bean="otherBean" />
<bean class="com.zhengqing._03_di.OtherBean" />
<bean class="com.zhengqing._03_di.OtherBean" />
</list>
</property>
<!-- private Set<OtherBean> otherBeanSet; -无序,不可以重复 -->
<property name="otherBeanSet">
<set>
<ref bean="otherBean" />
<ref bean="otherBean" />
<bean class="com.zhengqing._03_di.OtherBean" />
<bean class="com.zhengqing._03_di.OtherBean" />
</set>
</property>
<!-- private Set<String> set; -->
<property name="set">
<set>
<value>123</value>
<value>ABC</value>
<value>数据String</value>
</set>
</property>
<!-- private List<String> set; 这种情况虽然不会报错,但不建议使用!!
<property name="list">
<list>
<value>123</value>
<value>ABC</value>
<value>数据String</value>
</list>
</property> -->
<!--
String[] arrays -数组
<property name="arrays">
<array>
<value>数据1</value>
<value>数据2</value>
<value>数据3</value>
</array>
</property>
-->
<property name="arrays" value="数据1,数据2,数据3"></property>
<!-- Properties props1:标准写法(支持中文) -->
<property name="props1">
<props>
<prop key="dirverName">mysql</prop>
<prop key="url">3306</prop>
<prop key="username">root</prop>
<prop key="password">admin支持中文</prop>
</props>
</property>
<!-- Properties props2:简写方式 -->
<property name="props2">
<value>
dirvenName=mysql
url=3306
username=root
password=admin不支持中文
</value>
</property>
</bean>
</beans>
XML自动注入
全注解配置
@Component 普通仓库
@Repository 仓库(就是dao层)
@Service service层
@Controller 控制层(servlet、action)
第一步: 配置 让Spring扫描类与支持注解
第二步:在类里面加上注解
第三步:注解配置bean的名称(如果接口有两个实现会出问题,如何解决?? -- >为dao生成的bean加上名称,我们在调用的时候确定名称即可)
第四步:调用名称【方案一:使用@Autowired 方案二:使用@Resource】
ex:1个实现接口类的情况
2个实现接口类的情况