Spring学习第二天
3.6 Bean依赖注入
1.因为UserSvice和UserDao都在Spring容器中,而最终程序使用的是UserService
所以可以在Spring容器中将UserDao设置到UserService内部
2.目前UserService实例和UserDao实例都子啊于Spring容器中,
当前的做法是在容器外部获得UserService实例和UserDao实例,然后在在程序中进行中进行结合
3.7 依赖注入
依赖注入(DependencyInjection):它是Spring框架的核心IoC的具体实现
在编写程序时,通过控制反转包对象的创建交给了Spring,但代码中可能出现没有依赖的情况
IoC解耦只是降低了他们的依赖关系,但不会消除
那这种业务层和辞旧层的依赖关系,在使用Spring之后,就让Spring来维护了
简而言之,就是坐等框架把持久成对象传入业务层,而非我们自己来获取
3.8 依赖注入方式
如何将UserDao怎样注入到UserService内部?
1.构造方法
2.set方法
3.9 Bean的依赖注入方式
1)Set方法注入
1.P命名空间注入本质也是Set方法注入,但不起上述的Set方法,注入更加方便,主要体现子啊配置文件,
如下:
首先需要引入P命名空间:xmlns:"http://www.springframework.org/schema/p"
其次需要修改注入方式:
<bean id="userService" class="com.hcx.serviec.impl.UserServiceImpl" p:UserDao-ref:"userDao"/>
2.普通方式注入
先在xml文件中配置如Dao,再再配置好的UserService中导入UserDao
如下:
<bean id="UserDao" factory-bean="factory" factory-method="getUserDao"></bean>
<bean id="UserService" class="com.hcx.service.UserServiceImpl">
<property name="userDo" ref="userDao"><property>
</bean>
2) 有参构造注入
1.首先创建带参构造函数,并创建无参构造
2.而后子啊xml文件中注入构造器
如:
<bean id="UserService" class="com.hcx.service.impl.UserServiceImpl">
<constructor-arg name="UserDao" ref="UserDao">
</constructor-arg>
</baen>
3.8 Bean的依赖注入的数据类型
上面的操作,都是注入引用Bean,出来对象的引用可以注入,普通数据类型,集合等都可以在容器中注入
注入数据类型:
1.普通数据类型
在Bean文件中写入要有的属性和其对应的getter和setter方法,在xml中通过
<bean id="标识名" class="完整包名">
<property name="属性” value=“属性值”/>
</bean>的方法注入
2.引用数据类
3.集合数据类型
包含了:List,Map,properties
3.9引用其他配置文件(分模块开发)
实际开发中,Spring的配置内容非常多,这就导致Spring配置很繁杂且体积很大,所以可以将部分配置拆解到其他配置文件中,而在Spring主配置文件通过import标签进行加载
<import resource="applicationContxt-xxx.xml">
xml文件拆解
3.9.1知识重点:(总结)
Spring的重点配置
<bean>标签
id属性:在容器中Bean实例的唯一标识,不允许重复
class属性:要实例化的Bean的全限定名
Scope属性:Bean的作用范围,常用是singleton(默认)和prototype
<property>标签:属性注入
name属性:属性名称
value属性:注入的普通属性值
ref属性:注入的对象引用
<list>标签
<Map>标签
<properties>标签
<constructor-arg>标签
<import>标签:导入其他Spring的分文件
4. Spring相关API
4.1 AplicationContext的继承体系
AppilicationContext:接口类型,代表应用上下文,可以通过其实例活得Spring容器中的Bean对象
4.2 ApilcatuibContext的实现类
1)ClassPathXmlApplicationContext
它是从类的根路径下加载配置文件(推荐使用)
2)FileSystemXmlApplicationContext
它是重磁盘路径上加载配置文件,配置文件可以在磁盘的任意位置(不太推荐)
3)AnnotationConfigAppcationContext
当使用注解配置容器对象,需要使用之类来创建Spring容器,它来读取注解
4.3 getBean()方法使用
1.获取字符串
getBean("id")
当同一类型的Bean存在多个使用时可根据id标识区分
2.获取字节码文件
getBean(class)
当同一类型的Bean只存在一个时使用,不区分id标识
4.4 知识重点(总结)
1.ApplicationContext app=new ClassPathXmlApplication("xml文件");
app.getBean("id");
app.getBean(class);