文章目录

  • 3.6 Bean的依赖注入分析
  • 3.7 Bean的依赖注入概念
  • set方法
  • 有参构造方法
  • 3.8 Bean的依赖注入的数据类型
  • 普通数据类型
  • 集合数据类型
  • list
  • map
  • properties
  • 3.9 引入其他配置文件(分模块开发)
  • 小结

3.6 Bean的依赖注入分析

业务层调用DAO层

  1. UserService接口
  2. 为接口创建1个实现
  3. 测试
  4. 现在把UserServiceImpl也配置到xml配置文件中
  5. 再次测试

Mock spring注入变量 spring dao注入_Mock spring注入变量


但是可以改进为在容器内部注入

Mock spring注入变量 spring dao注入_数据类型_02


可以使用set方法,也可以使用构造方法

引出依赖注入

3.7 Bean的依赖注入概念

Service需要DAO的依赖注入

Mock spring注入变量 spring dao注入_依赖注入_03


Mock spring注入变量 spring dao注入_数据类型_04

set方法

Mock spring注入变量 spring dao注入_java_05


不用从容器中获得DAO了,因为在容器内部已经通过setUserDao获得了,

userDao是容器中的DAO

还需要在配置文件中告诉Spring要把容器中的DAO注入Service

Mock spring注入变量 spring dao注入_java_06

这里的property的name是service里setXxx的xxx(要把第一个X小写),也就是下图的"UserDao",变为"userDao"

Mock spring注入变量 spring dao注入_依赖注入_07


容器中的userDao(①)要通过service里的setUserDao方法(②)注入

Mock spring注入变量 spring dao注入_Mock spring注入变量_08


测试:

Mock spring注入变量 spring dao注入_ssm_09


但是如果是自己new一个UserServiceImpl的话,就会报错空指针

Mock spring注入变量 spring dao注入_Mock spring注入变量_10


也就是save()里的userDao没有new,因为UserServiceImpl是自己new的,不是从容器中拿的,容器中的UserServiceImpl里才有DAO,自己new的里没有

Mock spring注入变量 spring dao注入_依赖注入_11

即service依赖DAO的注入

set方法简便的注入方式——p命名空间

Mock spring注入变量 spring dao注入_Mock spring注入变量_12


Mock spring注入变量 spring dao注入_java_13

有参构造方法

Mock spring注入变量 spring dao注入_ssm_14


Mock spring注入变量 spring dao注入_ssm_15


ref代表对象引用

3.8 Bean的依赖注入的数据类型

Mock spring注入变量 spring dao注入_ssm_16

普通数据类型

Mock spring注入变量 spring dao注入_ssm_17


Mock spring注入变量 spring dao注入_Mock spring注入变量_18


Mock spring注入变量 spring dao注入_ssm_19

集合数据类型

Mock spring注入变量 spring dao注入_java_20


Mock spring注入变量 spring dao注入_Mock spring注入变量_21


Mock spring注入变量 spring dao注入_ssm_22

list

Mock spring注入变量 spring dao注入_依赖注入_23


Mock spring注入变量 spring dao注入_Mock spring注入变量_24

map

Mock spring注入变量 spring dao注入_依赖注入_25


Mock spring注入变量 spring dao注入_依赖注入_26


Mock spring注入变量 spring dao注入_Mock spring注入变量_27


Mock spring注入变量 spring dao注入_数据类型_28

properties

Mock spring注入变量 spring dao注入_Mock spring注入变量_29


Mock spring注入变量 spring dao注入_java_30

Mock spring注入变量 spring dao注入_依赖注入_31

xml

<bean id="userDao" class="包名.UserDaoImpl">
	<property name="strList">
		<list>
			<value>aaa</value>
			<value>bbb</value>
			<value>ccc</value>
	</property>
	
	<property name="userMap">
		<map>
			<entry key="u1" value-ref="user1"></entry>
			<entry key="u2" value-ref="user2"></entry>
		</map>
	</property>

	<property name="properties">
		<props>
			<prop key="p1">ppp1</prop>
			<prop key="p2">ppp2</prop>
			<prop key="p3">ppp3</prop>
		</props>
	</property>
	
</bean>

<bean id="user1" class="包名.User">
	<property name="name" value="1"></property>
	<property name="addr" value="2"></property>
</bean>
<bean id="user2" class="包名.User">
	<property name="name" value="1"></property>
	<property name="addr" value="2"></property>
</bean>

3.9 引入其他配置文件(分模块开发)

Mock spring注入变量 spring dao注入_数据类型_32


之前的配置文件 applicationContext.xml非常庞大,不容易读,且不方便后期维护

那么可以进行相应的拆解,比如按业务模块拆

Mock spring注入变量 spring dao注入_ssm_33


然后在主文件中引入

Mock spring注入变量 spring dao注入_依赖注入_34

小结

Mock spring注入变量 spring dao注入_数据类型_35