Spring

举报
京与旧铺 发表于 2022/06/29 16:36:57 2022/06/29
【摘要】 Spring<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://w...

Spring

  • <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd">
  • 三层架构

    • 界面层:controller包(管理者)

    • 业务逻辑层:service包

    • 数据访问层:dao包

  • Spring框架的概述

    • Spring是一个开源免费的框架,容器。

    • Spring是轻量级的开源的JavaEE框架。

    • Spring可以解决企业应用开发的复杂性。

    • Spring有两个核心部分:IOC和AOP。

  • AOP:面向切面

    • 就是将公共的,通用的,重复的代码单独开发,在需要的时候反织回去,底层的原理是动态代理。

  • IOC:控制反转(Inversion of Control)

    • 由Spring容器进行对象的创建和依赖注入,程序员在使用时直接取出使用。即对象由Spring来创建,管理,装配!

    • 控制:传统应用程序的对象是由程序本身控制创建的,使用Spring后,对象是由Spring来创建的。

    • 反转:程序本身不创建对象,而变成被动的接收对象。

  • 依赖注入:就是利用set方法来进行注入的。

  • IOC创建对象的两种方式

    • 通过无参构造方法来创建

      <property name="name" value="tzw"></property>
    • 通过有参构造方法来创建

      //有参构造创建对象在.xml中有三种方式编写
      //第一种:根据index参数下标设置,index指构造方法,下标从0开始
      <constructor-arg index="0" value="tzw"></constructor-arg>
      <constructor-arg index="1" value="20"></constructor-arg>
          
      //第二种:根据参数名字设置(即构造方法的形参名)
      <constructor-arg name="name" value="tzw"></constructor-arg>
      <constructor-arg name="age" value="20"></constructor-arg>
              
      //第三种:根据参数类型设置(要根据参数顺序)
      <constructor-arg type="java.lang.String" value="tzw"></constructor-arg>
      <constructor-arg type="java.lang.Integer" value="20"></constructor-arg>
    • 结论:在配置文件加载的时候,其中管理的对象都已经初始化了!

  • Spring依赖

    • spring核心依赖

      • spring-core、spring-beans、spring-context

    • spring dao依赖(提供JDBCTemplate)

      • spring-jdbc、spring-tx

    • spring web依赖

      • spring-web、spring-webmvc

    • spring test依赖

      • spring-test

  • setter注入

    • 注入可分为简单类型注入和引用类型注入。

    • 简单类型注入值使用value属性。

    • 引用类型注入值使用ref属性。(这个才算依赖注入)

    • 注意:使用setter注入必须提供无参的构造方法,必须提供set()方法。

  • 使用三层架构时,上层实现类必须要有下层对象。

  • 基于注解的IOC

    • 也称为DI(Dependency Injection),它是IOC的具体实现的技术。

    • 创建对象的注解:

      • @Component:可以创建任意对象。创建对象的默认名称是类名的驼峰命名法(首字母小写),也可以指定对象的名称 -- @Component("指定名称")。

      • @Controller:专门用来创建控制器的对象(Servlet),这种对象可以接收用户的请求,可以返回处理结果给客户端。(界面层)

      • @Service:专门用来创建业务逻辑层的对象,负责向下访问数据访问层,处理完毕后的结果返回给界面层。(业务逻辑层)

      • @Repository:专门用来创建数据库访问层的对象,负责数据库中的增删改查所有操作。(数据访问层)

    • 依赖注入的注解:

      • 简单类型的注入:

        • @Value:用来给简单类型注入值。

              @Value("张三")
              private String name;
              @Value("20")
              private int age;
      • 引用类型的注入

        • @Autowired:使用类型注入值,从整个Bean工厂中搜索同源类型的对象进行注入。

        • @Autowired,@Qualifier:使用名称注入值,从整个Bean工厂中搜索相同名称的对象进行注入。(两个必须联合使用)

    • 注意:基于注解的IOC,必须要在Spring的核心配置文件中添加包扫描。

      <context:component-scan base-package="com.myself"></context:component-scan>
  • 添加包扫描的方式

    • 单个包扫描(推荐使用)

    • 多个包扫描,多个包之间以逗号或空格隔开(或直接用*)

    • 扫描根包(不推荐)

  • 为应用指定多个Spring配置文件

    • 当项目越来越大,需要多人合作开发,一个配置就存在很大隐患

    • 拆分配置文件的策略:

      • 按层拆(界面层、业务逻辑层、数据访问层)

      • 按功能拆

  • 面向切面编程AOP (Aspect Orient Programming)

    • 切面:公共的,通用的,重复的功能称为切面,面向切面编程就是将切面提取出来,单独开发,在需要调用的方法中通过动态代理的方式进行织入。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。