• Spring第二天


    Day02

    全天内容简介:1.构造方法注入

    2.Spring框架的 注解(简化创建对象 和注入的操作)

    一、下载Spring源码

    https://repo.spring.io

    在下面的列表中右键下载

    注意:如果xml中没有提示 通常关闭一下文件重新打开即可解决该问题

    二、构造方法注入

    构造方法作用:1.创建对象  2.给属性赋值

    构造方法注入需要提供构造方法,构造方法的参数数量和配置文件中注入的参数要保证一直

    使用方法:

     

     

    注意:构造方法的参数数量 一定要和配置文件中的参数数量一致不然会报以下错误

     

    自定义对象类型的属性 赋值和 set注入一致

     

    注意:因为有时候没有导入源码,导致参数名称为 arg0arg1。。。使原有的参数名称发生了改变,所以使用index更靠谱一些

     

    三、parent abstract标签

     

    parent属性标示 当前实体的父实体是谁  目的是为了延续父类注入的值 ,如果不加parent属性 父类仍然不变,但是父类注入的属性值没有

    使用方式:

     

     

    注意:使用parent属性 父类和子类不能同时使用构造方法注入

     

    Abstract属性如果赋值为true Spring容器不会在内存中创建对象

    用法:

     

     

    扩展:两种注入方式 自己进开发时Set方式 更常用一些,Spring框架内部 构造方法注入更多一些

     

    四、自动注入

    Spring容器中 自定义对象类型的属性是可以自动注入的

    自动属性注入 依赖于set方法

     

    使用方式:

     

    byName执行流程:当创建spring容器对象时加载配置文件,然后加载每一个Bean标签,当发现bean里包含autowire属性并且值为byName时 会 找到beanClass 遍历所有的set方法, 去掉方法名字里面的set 剩下的内容作为 注入对象的类型

    byType执行流程:当创建spring容器对象时加载配置文件,然后加载每一个Bean标签,当发现bean里包含autowire属性并且值为byType时,会找到Bean里面的Class获取Class里面所有的属性,通过属性的类型作为注入对象的类型

    全局默认的注入方式:

     

     

    五、Spring中的注解 通过注解实现自动注入

    手动添加约束:

    导入约束文件 参考第一天导入流程

    3.如果还是不能提示 重新打开xml配置文件

    六、@AutoWired 

    使用方式:

    1. 在配置文件中打开注解开关

     

    1. 在需要自动注入的属性上面添加

     

    执行原理:当创建Spring容器的时候加载配置文件,如果发现开启注解的标签的话, 当创建对象的时候,获取所有的属性,如果属性上面有Autowire注解 则先通过属性名称作为配置文件中beanid 去列表中找 如果找到 则注入,如果找不到则通过属性的类型 作为依据 进行注入

    注意:如果配置文件中存在多个相同的bean ,在通过注解进行自动注入的时候,如果id找不到 类型也会报如下错误

    3.Qulifier注解使用:

    使用此注解会强制使用注解内部的值作为id去进行匹配

     

     

     

    1. Resource注解

    Resource又叫增强注入的注解,因为Resource注解 自己就能实现出和 Autowire+Qulifier的效果

    使用方式和Autowired注解一样 注入流程也是一样

    使用方式:

     

    补充说明:如果是单独项目使用Autowire Resource效果一样 使用方式也一样,如果在聚合项目中使用Resource则无效 ,因为Autowire哪里都能用所以常用此注解避免出错

     

    七、Spring框架中类的注解

     

    1.开启包扫描: 多个包通过逗号进行分割

     

    也可以包名不写完整的 只写前面一部分,这样会扫描cn.tedu包和子包里的所有内容

     

    2. @Component注解

    如果一个类需要Spring容器进行管理 则在此类的声明上面添加Component ,见下图:

     

    添加注解之后当前类就会被Spring容器所管理,当前类的类名首字母小写 作为 容器中所创建对象的id

     

    类注解的实现原理:当加载Spring容器的时候加载了配置文件 如果配置中开启了包扫描,则会到指定的包下面获取所有的Class,如果Class声明的时候添加Component注解 则把此类添加到Spring容器中进行管理,类型即为当前扫描到的类型,id为类名首字母小写,如果在类中的属性出现了Autowire或者Resource说明需要进行属性值的注入 ,注入之后对象就创建成功

     

    八、id的生成策略

    NBA      NBA

    nBA      nBA

    nBa      nBa

    NbA        nbA

    规则取决于第二个字母是大写还是小写,如果是大写首字母不变、如果第二个是小写,则首字母小写

     

     

    九、高级注解:

    1.单例多例的注解 默认值是单例

     

    2.懒加载

     

    1. 初始化方法的注解
    1. 销毁对象的注解

     

    1. 程序架构分层的注解

    @Repository pojo包下面的类

    @ServiceService包下面的类

    @ControllerServlet

    十、属性中基本数据类型的注入 复杂类型的注入

    1.基本数据类型的注入:通过Value注解进行注入

    2.复杂类型的注入

    2.1添加约束

    2.2Map注入

    配置文件中:

    代码中注入:

    2.3 Setlist注入

     

    配置文件:

     

    代码注入:

     

     

    十一、properties文件的读取

    1. 创建文件,把文件放在src的根目录

     

    1. 配置文件中进行配置,指向properties文件所在路径

     

    1. 通过$在代码中进行注入

    十二、手动指定类的id

    十三、MVC练习

    1. 导入jar包 从之前工程中获取即可
    2. 创建配置文件,也是从之前工程中获取,获取内容多的版本 、清楚beans里面的内容
    3. 在配置文件中开启包扫描开关 注解开关

    两天内涉及的所有注解***********重点*********

    和类相关的注解:

    ComponentControllerServiceRepository :作用是把修饰的类交于Spring容器进行管理

    Scope:控制类是单例还是多例

    Lazy:控制是否是懒加载

    和属性相关的:

    Autowired QualifiedResource  :用来对自定义对象类型属性的注入

    Value:对基本数据类型 和复杂类型进行注入   

    和方法相关的:

    PostConstruct:创建之后执行的方法

    PreDestroy:销毁之前执行的方法

  • 相关阅读:
    spring mvc之DispatcherServlet类分析
    python根据操作系统类型调用特定模块
    C#编写windows服务程序
    写在开始前---多端小系统结构
    写在开始前---web异常处理
    java反射
    写在开始前---简单业务分层
    写在开始前---ajax中的会话过期与重新登录
    一个简易的netty udp服务端
    google的python语言规范
  • 原文地址:https://www.cnblogs.com/dxp5201/p/8921750.html
Copyright © 2020-2023  润新知