学习入口:2020最新Spring框架教程【IDEA版】-Spring框架从入门到精通_哔哩哔哩_bilibili

Spring对象创造流程:
这里是基础的对象创建流程,利用ApplicationContext去获取对象,在之后,会被优化。
<bean id= " someService" class=”com.bjpowernode.service.impl,SomeServiceImpl" />

<1>告诉sping创建对象:声明bean,就是告诉spring创建某个类的对象
id:对象的自定义名称,唯一值。spring通过这个名称找到对象
class:类的全限定名称(不能是接口,因为spring是反射机制创建对象 ,必须使用类 )
spring就完成SomeService someService.new SomeServiceImpl() ;
<2>spring把创建好的对象放入到map中,spring框架有一个map存放对象的。
springMap.put(id的值对象) ;
例如springMap.put("someService", new SomeServiceImpl());
注意:
1、一个bean签声明一个对象:
2、ApplicationContext相当于一个容器,用于存储对应的对象最终存储的是target/classes中 的对象
3、对象的创建是在Application ac = new ClassPathXmlApplicationContext(config)中创建 的,一次创建对应路径下所有对象。
4、Spring创建对象,默认使用无参构造方法
5、通过IOC可以实现:对象之间的解耦和。
Spring属性的赋值
在Spring的配置文件中,给java对象的属性赋值。
DI:依赖注入,标识创建对象,给属性赋值。
DI的实现语法有两种:
1、在Spring的配置文件中,使用标签和属性完成,叫做基于xml的di实现
2、使用Spring中的注解,完成属性赋值,叫做基于注解的di实现
DI的语法分类:
- set注入(设值注入):调用set方法,在set方法可以实现属性的辅助。
- 构造注入:调用类的有参构造方法创建对象,在构造方法中完成赋值
Spring配置文件属性赋值
1、简单烈性的属性注入
通过property进行赋值,实际上调用的是class类中的set方法;(如果没有set方法,系统会报错)
注意:

<1>、属性类型不管什么类型,必须放在引号里面
<2>、对系统对象进行property复制,可以用ctrl+F12查询对象的set方法,再进行赋值
2、复杂类型的属性注入
<bean id=”xxx” class = “yyy”>
<property name=”属性名称” ref=”bean的id(bean对象名称)”
</bean>

Spring构造注入
在构造调用者实例的的同时,完成被调用者的实例化;(Spring 默认调用的是无参构造,需要通过设置让Spring调用有参构造)
构造注入使用<constructor-arg>标签
<constructor-arg>
name:标识够赞方法的形参名
index:构造方法的参数位置,参数从左到右的位置0,1,2.。
ref:构造方法中有引入类型

注意:
1、Spring中的引入类和主类在xml中声明的位置没有关系
2、引用类型为文件类的可以如此定义

引用类型的自动注入
Spring架构根据某些规则可以给引用类型赋值。不用人为再赋值。
方式:(1)byName (2)byType
- byName(按名称注入):java类中引用类型的属性名和spring容器中(配置文件)<bean>的id名称一样,且数据类型是一致的,这样的容器中的bean,spring能复制给引用类型
<bean id=”xxx” class=”yyy” autowire=”byname”>
简单类型属性赋值
</bean>

当程序运行到aotowire=”byname”时会根据myStudent对象中的引用名称寻找bean对象
2、byType(按类型引入):java类中引用类型的数据类型和spring容器中(配置文件)
<bean>的class属性是同源关系:
(即:<1>java类中引用类型的数据类型和bean的class的值是一样的
<2>java类中引用类型的数据类型和bean的class的值父子关系的
<3>java类中引用类型的数据类型和bean的class的值为接口和实现类关系)
多配置文件
可按照功能或者类别(接口、对象等)进行配置文件分类;
可通过一个主配置文件去包含其他配置文件:这里主配置文件诶spring-total;
通过<import resource=”其他配置文件路径”/>进行引入;


注意:
1、在使用通配符*时,需要注意重复引用的问题;
2、加载Resource中的属性配置文件:

在加载完成之后,可以用”$()”进行赋值使用

460

被折叠的 条评论
为什么被折叠?



