Spring框架学习1—对象创建、基础属性赋值、数据注入

学习入口: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的语法分类:

  1. set注入(设值注入):调用set方法,在set方法可以实现属性的辅助。
  2. 构造注入:调用类的有参构造方法创建对象,在构造方法中完成赋值

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

  1. 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中的属性配置文件:

 

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值