1.初识Spring

Posted 小马Mark

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.初识Spring相关的知识,希望对你有一定的参考价值。

Spring概述

Spring框架介绍

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

主要作用:为代码“解耦”,降低代码间的耦合度。(让对象和对象(模块与模块)之间关系不是使用代码关联,而是通过配置来说明。)

Spring 根据代码的功能特点,使用 Ioc 降低业务对象之间耦合度。IoC 使得主业务在相互调用过程中,不用再自己维护关系了,即不用再自己创建要使用的对象了。而是由 Spring容器统一管理,自动“注入”,注入即赋值。 而 AOP 使得系统级服务得到了最大复用,且不用再由程序员手工将系统级服务“混杂”到主业务逻辑中了,而是由 Spring 容器统一完成“织入”。

Spring优点

Spring 是一个框架,是一个半成品的软件。有 20 个模块组成。它是一个容器管理对象,容器是装东西的,Spring 容器不装文本,数字。装的是对象。Spring 是存储对象的容器。

主要优点:

  1. 轻量:
    • Spring 框架使用的 jar 都比较小,一般在 1M 以下或者几百 kb。Spring 核心功能的所需的 jar 总共在 3M 左右。
    • Spring 框架运行占用的资源少,运行效率高。不依赖其他 jar
  2. 针对接口编程,解耦合
    • Spring 提供了 Ioc 控制反转,由容器管理对象,对象的依赖关系。原来在程序代码中的对象创建方式,现在由容器完成。对象之间的依赖解耦合。
  3. AOP 编程的支持
    • 通过 Spring 提供的 AOP 功能,方便进行面向切面的编程,许多不容易用传统 OOP 实现的功能可以通过 AOP 轻松应付
    • 在 Spring 中,开发人员可以从繁杂的事务管理代码中解脱出来,通过声明式方式灵活地
      进行事务的管理,提高开发效率和质量。
  4. 方便集成各种优秀框架
  • Spring 不排斥各种优秀的开源框架,相反 Spring 可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如 Struts,Hibernate、MyBatis)等的直接支持。简化框架的使用。Spring 像插线板一样,其他框架是插头,可以容易的组合到一起。需要使用哪个框架,就把这个插头放入插线板。不需要可以轻易的移除。

Spring体系结构

Spring 由 20 多个模块组成,它们可以分为数据访问/集成(Data Access/Integration)、Web、面向切面编程(AOP, Aspects)、提供JVM的代理(Instrumentation)、消息发送(Messaging)、核心容器(Core Container)和测试(Test)。

Spring的第一个程序

环境准备

  • 开发工具:idea2019 以上
  • 依赖管理:maven3 以上
  • jdk:1.8 以上

使用步骤

  1. 在pom.xml文件中导入spring依赖:(spring版本5以上的大同小异)

    <!--  spring框架依赖  -->
    <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>5.2.5.RELEASE</version>
    </dependency>
    
  2. 创建一个applicationContext.xml文件(spring配置文件)

    • 在maven项目中的src/main/resources目录下创建xml,命名随意,但是推荐使用applicationContext.xml

<?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">

    <!--
    <bean />:用于定义一个实例对象。一个实例对应一个 bean 元素。
    id:该属性是 Bean 实例的唯一标识,程序通过 id 属性访问 Bean,Bean 与 Bean 间的依
    赖关系也是通过 id 属性关联的。
    class:指定该 Bean 所属的类,注意这里只能是类,不能是接口。
	scope属性:
        值:prototype ==> 是指非单例模式,不共享一个对象
            singleton ==> 默认就是单例模式,无论获取多少次,都是这一个对象

    这里完成了  SomeService someService = new SomeServiceImpl();
    创建好的对象是放在map中,用于保存随时使用,
    springMap.put(id的值, 对象):例如下面bean代码就是完成了(springMap.put("someService", new SomeServiceImpl()))

    一个bean标签声明一个类的对象
   -->
    <bean id="someService" class="com.maj.service.impl.SomeServiceImpl"/>
    <bean id="someService2" class="com.maj.service.impl.SomeServiceImpl" scope="prototype" />

</beans>
  1. 自己创建一个类和接口(这里就略过了)

  2. 测试类

    /*
    	spring 默认创建对象是调用无参的构造方法
    */
    @Test
    public void test02()
        // spring配置文件在类路径下(classepath)
        String config = "applicationContext.xml";
    
        // 创建spring容器对象(同时这里也是容器中所有对象的装配)
        ApplicationContext ac = new ClassPathXmlApplicationContext(config);
    
        // 从spring容器中获取对象,通过bean的id
        SomeService service = (SomeService) ac.getBean("someService");
        System.out.println(service);
    
        // 拿到对象后就可以使用对象了
        service.doSome();
    
    

    补充:

    // 获取容器中的对象有多少个
    int count = ac.getBeanDefinitionCount();
    System.out.println("容器中对象的个数:" + count);
    
    // 获取容器中所有对象的名称
    String[] name = ac.getBeanDefinitionNames();
    System.out.println(Arrays.toString(name));
    
    ---------------------------------------------
    容器中对象的个数:2
    [someService, someService2]
    

以上是关于1.初识Spring的主要内容,如果未能解决你的问题,请参考以下文章

Spring学习1-初识Spring

Spring初识Spring--Spring介绍

1.初识Spring

1.初识Spring

Spring初识新建工程

Spring框架初识