Spring笔记

目录

20220527

Q1:Spring有哪些注入方式?

Q2:相似阐述基于xml的注入方式

Q3:什么是引用类型的自动注入?如何实现自动注入?

20220527

Q4:如何实现基于注解的依赖注入

Q5:如何基于注解实例化java类

Q6:如何使用组件扫描器扫描多个包

Q7:如何基于注解实现属性注解


20220527

Q1:Spring有哪些注入方式?

基于Xml的注入和基于注解的注入

Q2:相似阐述基于xml的注入方式

所谓注入,即对Spring容器中的对象进行属性赋值。根据赋值的方式,可以分为:

①set注入:即根据类的set方法对属性赋值

        简单类型使用name和value来指定属性和值

        引用类型使用name和ref来指定属性和值

 

②构造注入:即根据类的构造函数对属性赋值

        基于name进行构造注入

        基于index进行构造注入

Q3:什么是引用类型的自动注入?如何实现自动注入?

如果一个类的成员包括引用类型,当满足某些条件时,Spring可以为这些属性自动赋值,即引用类型的自动注入。有以下两种方法实现自动注入:

byName:如果Spring容器中包含的类A,其id和类B的某个属性c的名称相同,且A的class和c相同

 

 byType:如果Spring容器中包含的类A,其类型和类B的某个属性c的类型同源可以实行自动注入

同源包括以下可能:same、接口与实现类、父子类。
 

20220527

Q4:如何实现基于注解的依赖注入

        基于注解的依赖注入,可以实现类实例化和属性赋值两部分内容

        在环节上包括写注解和扫描注解

Q5:如何基于注解实例化java类

①@component :表示创建对象,对象放到容器中,作用是XML中的bean

*          属性value:表示创建的对象的名称,等价于bean中的id,例如:

* @Component(value = "myStudent")

* 等价<bean id=“myStudent” class=“org.example.ba1.Student”/>

以下等价:

@Component(value = "myStudent")  // kv

@Component("myStudent")              // v

@Component()                                 // default

同时,需要在xml中配置组件扫描器

 组件扫描器:component-scan:扫描包和子包—找所有的注解—创建对象/属性赋值

② 和@component功能相同的创建对象的注解

        @Repository:dao接口的实现类上面,表示创建dao对象,持久层对象能访问数据库

        @Service:业务层的实现类上面,表示创建业务层对象,业务层对象有事务的功能

        @Controller:控制器上面,表示创建控制器对象,属于表示层。控制器对象能接受请求,                把请求的处理结果显示给用户。

Q6:如何使用组件扫描器扫描多个包

        1、多个扫描器

        

       2、 分隔符

       

        3、父包

       

Q7:如何基于注解实现属性注入

① 基本类型的属性注解

@Value

     *   属性:value 表示具体的属性值,value本身可以省略

     *   位置:1)在属性定义的上面,无需set方法

                         

     *             2)或者在set方法上面

        ​​​​​​​                 

另外,可以使用外部配置文件中的属性值

先在xml文件中定义配置文件的位置,然后在代码中引用

② 引用类型的属性注解

2.1  @Autowired:Spring 框架提供的,给引用类型赋值,使用自动注入原理。可以byName和byType,默认是后者

位置:在属性定义上面,无需set方法,推荐使用,或者在set方法上面。

 如果想使用Autowired的基于name的注入方法,需要使用@Qualifer注解 如下:

最后,Autowired还有一个required属性,如果为真 Spring会检查引用类型时候赋值成功,失败会终止运行并报错;如果为假,赋值失败会pass赋值,不会报错。

2.2 @Resource:来自jdk中,给引用类型赋值,支持byName和byType,默认byName。Spring支持其使用

    位置: 属性定义的上面,无需set方法,推荐使用;或者set方法上面。

    说明:jdk高于1.8 没有@Resource 需要手动加入依赖

    默认情况下,不需要写属性,Spring会找和属性同名的对象对属性赋值,失败会使用byType尝试。如果显式的写出nama属性,只会使用byName。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值