您现在的位置是:首页 > 网络趣梗网络趣梗

spring框架搭建及详解(spring框架菜鸟教程)

2022-08-25 12:08:08网络趣梗0人已围观

简介  spring框架搭建及详解(spring框架菜鸟教程),新营销网红网本栏目通过数据整理汇集了spring框架搭建及详解(spring框架菜鸟教程)相关信息,下面一起看看

  spring框架搭建及详解(spring框架菜鸟教程),新营销网红网本栏目通过数据整理汇集了spring框架搭建及详解(spring框架菜鸟教程)相关信息,下面一起看看。

  什么是Spring框架?Spring是2003年出现的一个轻量级Java开发框架。它是为了解决企业应用程序开发的复杂性而创建的。Spring的核心是控制反转(IoC)和面向方面编程(AOP)。Spring是一个轻量级的开源框架,可以在Java SE/EE中使用。

   Spring的主要作用是“解耦”代码,降低代码之间的耦合度。即对象与对象(模块与模块)之间的关系是用配置而不是代码关联来解释的。也就是解释Spring中对象(模块)的关系。

  根据Spring代码的功能特点,使用Ioc降低业务对象之间的耦合度。IoC使得主业务在相互调用时不必维护自己的关系,即创建自己的对象来使用。而是由Spring容器统一管理并自动“注入”,注入意味着赋值。AOP最大限度地实现了系统级服务的重用,不再需要程序员手动将系统级服务“混合”到主业务逻辑中,而是由Spring container“编织”出来。

   https://spring.io/,官方网站

  春天的优点?Spring是一个框架,是一个半成品软件。共有20个模块。它是一个容器管理对象。容器保存东西,但是Spring容器不保存文本或数字。它是一个物体。Spring是一个存储对象的容器。

   (1)重量轻

   Spring framework使用的jar相对较小,一般在1M或几百kb以下。Spring的核心功能所需的jar总共约为3M。

   Spring框架占用资源少,运行效率高。不要依赖其他罐子

   (2)界面编程的解耦。

   Spring提供Ioc控制反转,容器管理对象及其依赖关系。程序代码中最初的对象创建方法现在由容器完成了。解耦对象之间的依赖关系。

   (3)支持AOP编程

  通过Spring提供的AOP功能,方便了面向方面的编程。很多传统OOP不太好用的功能,在Spring中通过AOP都可以轻松搞定。开发人员可以摆脱复杂的事务管理代码,通过声明的方式灵活管理事务,提高开发效率和质量。

   (4)便于集成各种优秀的框架。

   Spring并不排斥各种优秀的开源框架。反而可以降低各种框架的使用难度。Spring直接支持各种优秀的框架(如Struts、Hibernate、MyBatis)。简化框架的使用。

  和弹簧插线板一样,其他的框架都是插头,很容易组装在一起。需要哪个框架,把这个插头插在插线板上。不需要,很容易去掉。

  春天建筑

   Spring由20多个模块组成,可以分为数据访问/集成、Web AOP、面向方面编程(AOP)、JVM的工具、消息传递、核心容器和测试。

   IoC(控制反转)是一个概念,一种思想。是指将程序代码直接控制的对象的调用权交给容器,通过容器实现对对象的组装和管理。反转是将对象的控制权从程序代码本身转移到外部容器。通过容器,我们可以创建对象、分配属性和管理依赖关系。

   IoC是一种理念,一种思想,可以通过多种方式实现。目前流行的实现方法是依赖注入。广泛使用。

  依赖:classA包含classB的一个实例,classB的完成函数在classA中调用,即classA对classB有依赖。

  国际奥委会的实施:

  依赖注入:DI(Dependency Injection),程序代码不做位置查询,这些任务由容器自己完成。

  依赖注入DI是指当程序需要调用另一个对象进行辅助时,不需要在代码中创建被调用者,而是依赖于外部容器,由外部容器创建,然后传递给程序。Spring的依赖注入对调用者和被调用者几乎没有要求,完全支持对象间依赖关系的管理。

   Spring框架使用依赖注入(DI)来实现IoC。

   Spring container是一个超级工厂,负责创建和管理所有Java对象,这些对象称为Bean。Spring容器管理容器中bean之间的依赖关系,Spring使用“依赖注入”来管理bean之间的依赖关系。使用IoC实现对象间的解耦。

  开发工具准备开发工具:idea2017以上依赖管理:maven3以上jdk:1.8以上

   Maven原生仓库需要设置:

  春季第一期节目示例:01-primay

  创建maven项目

   maven依赖pom.xml简介

  定义接口和实体类。

  创建一个Spring配置文件

  现在在src/main/resources/directory中创建一个xml文件。文件名可以是任意的,但是Spring建议的名称是applicationContext.xml

  弹簧配置中需要

  加入约束文件才能正常使用,约束文件是 xsd 扩展名。

   bean / :用于定义一个实例对象。一个实例对应一个bean 元素。

  id:该属性是 Bean 实例的唯一标识,程序通过 id 属性访问Bean,Bean与Bean 间的依赖关系也是通过 id 属性关联的。

  class:指定该 Bean 所属的类,注意这里只能是类,不能是接口。

  定义测试类

  使用spring 创建非自定义类对象

  spring 配置文件加入 java.util.Date 定义:

   bean id= myDate >

  MyTest 测试类中:

  调用getBean(“myDate”); 获取日期类对象。

  容器接口和实现类

  ApplicationContext 接口(容器)

  ApplicationContext 用于加载 Spring 的配置文件,在程序中充当“容器”的角色。其实现类有两个。

  A、 配置文件在类路径下

  若 Spring 配置文件存放在项目的类路径下,则使用ClassPathXmlApplicationContext 实现类进行加载。

  B、ApplicationContext 容器中对象的装配时机

  ApplicationContext 容器,会在容器对象初始化时,将其中的所有对象一次性全部装配好。以后代码中若要使用到这些对象,只需从内存中直接获取即可。执行效率较高。但占用内存。

  C、使用spring 容器创建的java 对象

  基于 XML 的 DI

  举例:项目di-xml

  注入分类

  bean 实例在调用无参构造器创建对象后,就要对bean 对象的属性进行初始化。初始化是由容器自动完成的,称为注入。

  根据注入方式的不同,常用的有两类:set 注入、构造注入。

  (1) set 注入(掌握)

  set 注入也叫设值注入是指,通过setter 传入被调用者的实例。这种注入方式简单、直观,因而在 Spring 的依赖注入中大量使用。

  A、 简单类型

  创建java.util.Date 并设置初始的日期时间:

  Spring 配置文件:

  测试 :

  B、引用类型

  当指定bean 的某属性值为另一bean 的实例时,通过ref 指定它们间的引用关系。ref 的值必须为某bean 的 id 值。

  对于其它Bean 对象的引用,使用 bean/ 标签的ref 属性

  测试 :

  (2) 构造注入(理解)

  构造注入是指,在构造调用者实例的同时,完成被调用者的实例化。即, 使用构造器设置依赖关系。

  举例 1:

   constructor-arg / 标签中用于指定参数的属性有:

  name:指定参数名称。

  index:指明该参数对应着构造器的第几个参数,从 0 开始。不过,该属性不要也行,但要注意,若参数类型相同,或之间有包含关系,则需要保证赋值顺序要与构造器中的参数顺序一致。

  举例 2:

  使用构造注入创建一个系统类 File 对象

  测试类:

  引用类型属性自动注入

  对于引用类型属性的注入,也可不在配置文件中显示的注入。可以通过为 bean/ 标签设置autowire 属性值,为引用类型属性进行隐式自动注入(默认是不自动注入引用类型属性)。根据自动注入判断标准的不同,可以分为两种:

  byName:根据名称自动注入

  byType: 根据类型自动注入

  (1) byName 方式自动注入

  当配置文件中被调用者bean 的id 值与代码中调用者bean 类的属性名相同时,可使用byName 方式,让容器自动将被调用者bean 注入给调用者bean。容器是通过调用者的bean 类的属性名与配置文件的被调用者bean 的id 进行比较而实现自动注入的。

  举例:

  (2)byType 方式自动注入

  使用byType 方式自动注入,要求:配置文件中被调用者 bean 的class 属性指定的类,要与代码中调用者bean 类的某引用类型属性类型同源。即要么相同,要么有 is-a 关系(子类,或是实现类)。但这样的同源的被调用bean 只能有一个。多于一个,容器就不知该匹配哪一个了。

  举例:

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

  在实际应用里,随着应用规模的增加,系统中Bean 数量也大量增加,导致配置文件变得非常庞大、臃肿。为了避免这种情况的产生,提高配置文件的可读性与可维护性,可以将 Spring 配置文件分解成多个配置文件。

  包含关系的配置文件:

  多个配置文件中有一个总文件,总配置文件将各其它子文件通过 import/ 引入。在Java 代码中只需要使用总配置文件对容器进行初始化即可。

  举例:

  代码:

  Spring 配置文件:

  也可使用通配符*。但,此时要求父配置文件名不能满足*所能匹配的格式,否则将出现循环递归包含。就本例而言,父配置文件不能匹配 spring-*.xml 的格式,即不能起名为spring-total.xml。

  基于注解的 DI

  举例:di-annotation 项目

  对于 DI 使用注解,将不再需要在 Spring 配置文件中声明bean 实例。Spring 中使用注解,需要在原有 Spring 运行环境基础上再做一些改变。

  需要在 Spring 配置文件中配置组件扫描器,用于在指定的基本包中扫描注解。

  指定多个包的三种方式:

  1) 使用多个context:component-scan 指定不同的包路径

  2) 指定 base-package 的值使用分隔符

  分隔符可以使用逗号(,)分号(;)还可以使用空格,不建议使用空格。

  逗号分隔:

  分号分隔:

  3) base-package 是指定到父包名

  base-package 的值表是基本包,容器启动会扫描包及其子包中的注解,当然也会扫描到子包下级的子包。所以base-package 可以指定一个父包就可以。

  或者最顶级的父包

  但不建议使用顶级的父包,扫描的路径比较多,导致容器启动时间变慢。指定到目标包和合适的。也就是注解所在包全路径。例如注解的类在com.bjpowernode.beans 包中

  定义Bean 的注解@Component(掌握)

  需要在类上使用注解@Component,该注解的value 属性用于指定该bean 的 id 值。

  举例:di01

  另外,Spring 还提供了 3 个创建对象的注解:

  @Repository 用于对DAO 实现类进行注解

  @Service 用于对Service 实现类进行注解

  @Controller 用于对Controller 实现类进行注解

  这三个注解与@Component 都可以创建对象,但这三个注解还有其他的含义,@Service 创建业务层对象,业务层对象可以加入事务功能, @Controller 注解创建的对象可以作为处理器接收用户的请求。

  @Repository,@Service,@Controller 是对@Component 注解的细化,标注不同层的对象。即持久层对象,业务层对象,控制层对象。

  @Component 不指定value 属性,bean 的 id 是类名的首字母小写。

  简单类型属性注入@Value(掌握)

  需要在属性上使用注解@Value,该注解的value 属性用于指定要注入的值。

  使用该注解完成属性注入时,类中无需setter。当然,若属性有setter, 则也可将其加到setter 上。

  举例:

  byType 自动注入@Autowired(掌握)

  需要在引用属性上使用注解@Autowired,该注解默认使用按类型自动装配Bean 的方式。

  使用该注解完成属性注入时,类中无需setter。当然若属性有setter,则也可将其加到setter上。

  举例:

  byName 自动注入@Autowired 与@Qualifier(掌握)

  需要在引用属性上联合使用注解@Autowired 与@Qualifier。@Qualifier 的value 属性用于指定要匹配的Bean 的id 值。类中无需set ,也可加到set 上。

  举例:

  @Autowired 还有一个属性required,默认值为true,表示当匹配失败后,会终止程序运行。若将其值设置为false,则匹配失败,将被忽略,未匹配的属性值为null。

  JDK 注解@Resource 自动注入(掌握)

  Spring 提供了对jdk 中@Resource 注解的支持。@Resource 注解既可以按名称匹配Bean,也可以按类型匹配Bean。默认是按名称注入。使用该注 解,要求JDK 必须是 6 及以上版本。@Resource 可在属性上,也可在set 上。

  (1) byType 注入引用类型属性

  @Resource 注解若不带任何参数,采用默认按名称的方式注入,按名称不能注入bean,则会按照类型进行Bean 的匹配注入。

  举例:

  (2) byName 注入引用类型属性

  @Resource 注解指定其name 属性,则name 的值即为按照名称进行匹配的Bean 的 id。

  举例:

  注解与 XML 的对比

  注解优点是:

  方便

  直观

  高效(代码少,没有配置文件的书写那么复杂)。

  其弊端也显而易见:以硬编码的方式写入到Java 代码中,修改是需要重新编译代码的。

  XML 方式优点是:

  配置和代码是分离的

  在xml 中做修改,无需编译代码,只需重启服务器即可将新的配置加载。xml 的缺点是:编写麻烦,效率低,大型项目过于复杂。

  spring

  更多spring框架搭建及详解(spring框架菜鸟教程)相关信息请关注本文章,本文仅仅做为展示!

Tags: 网络趣事  

很赞哦! ()

随机图文

留言与评论 (共有 条评论)
验证码:

本栏推荐