• Spring 学习笔记(一):Spring 入门


    1 Spring简介

    Spring是一个轻量级Java开发框架,最早由Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题,是一个分层的Java SE/EE full-stack轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。

    2 Spring体系结构

    目前Spring已经集成了20多个模块,分布在以下模块中:

    • Core Container:核心容器
    • Data Access/Integration:数据访问/集成
    • WebWeb模块
    • AOPAspect Oriented Programming,面向切面编程
    • Instrumentation:植入模块
    • Messaging:消息传输
    • Test:测试模块

    如图所示:

    在这里插入图片描述

    2.1 核心容器

    Spring-coreSpring-beansSpring-contextSpring-context-supportSpring-expression等模块组成:

    • Spring-core:提供了框架的基本组成部分,包括IocInversion of Control,控制反转)以及DIDependency Injection,依赖注入)功能
    • Spring-beans:提供了BeanFactory,是工厂模式的一个典型实现,Spring将管理的对象称为Bean
    • Spring-context:建立在CoreBeans模块的基础上,提供了一个框架式的对象访问方式,是访问定义和配置的任何对象的媒介,ApplicationContext接口是Context模块的焦点
    • Spring-context-support:支持整合第三方库到Spring应用程序上下文,特别是用于高速缓存(EhCacheJCache)和任务调度(CommonJQuartz)的支持
    • Spring-expression:提供了强大的表达式语言去支持运行时查询和操作对象图,是JSP 2.1规定的统一表达式语言的扩展

    2.2 AOPInstrumentation

    • Spring-aop:提供了一个符合AOP要求的面向切面的编程实现,允许定义方法拦截器和切入点
    • Spring-aspects:提供了与AspectJ的集成功能,AspectJ是一个功能强大且成熟的AOP框架
    • Spring-instrumentation:提供了类植入支持和类加载器的实现

    2.3 消息

    Spring 4.0后增加了消息模块,提供了对消息传递体系结构和协议的支持。

    2.4 数据访问/集成

    数据访问/集成层由JDBCORMOXMJMS和事务模块组成。

    • Spring-JDBC:提供了一个JDBC抽象层,消除了繁琐的JDBC编码和数据库厂商特有的错误代码解析
    • Spring-ORM:为流行的ORMObject-Relational Mapping,对象关系映射)框架提供了支持,包括JPAHibernate,使用Spring-ORM框架可以将这些O/R映射框架与Spring提供的所有其他功能结合使用
    • Spring-OXM:提供了一个支持对象/XML映射的抽象层实现,例如JAXBCastorJiBXXStream
    • Spring-JMSJMSJava Messaging ServiceJava消息传递服务),包含用于生产和使用消息的功能
    • Spring-TX:事务管理模块,支持用于实现特殊接口和所有POJO类的编程和声明式事务管理

    2.5 Web

    WebSpring-WebSpring-WebMVCSpring-WebSocketPortlet模块组成。

    • Spring-Web:提供了基本的Web开发集成功能,例如多文件上传等
    • Spring-WebMVC:也叫Web-Servlet模块,包含用于Web应用程序的Spring MVCREST Web Services的实现。
    • Spring-WebSocket:提供了WebSocketSockJS的实现
    • Porlet:类似于Servlet模块的功能,提供了Porlet环境下MVC的实现

    2.6 测试

    Spring-test模块支持使用JUnitTestNGSpring组件进行单元测试和集成测试。

    3 环境

    • OpenJDK 11.0.8
    • IDEA 2020.2
    • Maven/Gradle

    4 入门DemoJava版)

    4.1 新建Maven工程

    在这里插入图片描述

    在这里插入图片描述

    4.2 引入依赖

    pom.xml文件加入:

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.2.8.RELEASE</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
    	<dependency>
    	    <groupId>org.junit.jupiter</groupId>
    	    <artifactId>junit-jupiter-api</artifactId>
    	    <version>5.6.2</version>
    	    <scope>test</scope>
    	</dependency>
    </dependencies>
    

    可以戳这里查看最新的版本。

    4.3 新建文件

    新建如下5个空文件:

    在这里插入图片描述

    4.4 applicationContext.xml

    该文件是Spring的配置文件,习惯命名为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 id="test" class="TestImpl"/>
    </beans>
    

    这里声明了一个idtest,类为TestImplBean

    4.5 TestInterface

    public interface TestInterface {
        void hello();
    }
    
    

    4.6 TestImpl

    public class TestImpl implements TestInterface {
        @Override
        public void hello() {
            System.out.println("Hello Spring.");
        }
    }
    

    4.7 Main

    public class Main {
        public static void main(String[] args) {
            System.out.println("Hello");
            ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
            ((TestInterface)context.getBean("test")).hello();
        }
    }
    

    4.8 Tests

    public class Tests {
        @Test
        public void test()
        {
            ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
            TestInterface testInterface = (TestInterface)context.getBean("test");
            testInterface.hello();
        }
    }
    

    4.9 运行

    4.9.1 测试

    直接点击测试类旁边的按钮即可:

    在这里插入图片描述

    若出现如下错误:

    在这里插入图片描述

    JDK版本设置错误的问题,先打开Project Structure,修改Modules下的JDK版本:

    在这里插入图片描述

    下一步是打开设置,修改Comiler下的JDK版本:

    在这里插入图片描述

    输出:

    在这里插入图片描述

    4.9.2 Main

    默认不能直接运行Main函数,需要添加运行配置:

    在这里插入图片描述

    选择Application添加配置,并且指定Name以及Main class

    在这里插入图片描述

    这样就可以运行了:

    在这里插入图片描述

    5 KotlinDemo

    使用Gradle+Kotlin的入门Demo

    5.1 新建Gradle工程

    在这里插入图片描述

    在这里插入图片描述

    5.2 build.gradle

    完整文件如下:

    plugins {
        id 'java'
        id 'org.jetbrains.kotlin.jvm' version '1.4.0'
    }
    
    group 'org.example'
    version '1.0-SNAPSHOT'
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        compile group: 'org.springframework', name: 'spring-context', version: '5.2.8.RELEASE'
        compile group: 'org.springframework', name: 'spring-core', version: '5.2.8.RELEASE'
        compile group: 'org.springframework', name: 'spring-beans', version: '5.2.8.RELEASE'
        testCompile group: 'junit', name: 'junit', version: '4.12'
        implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    }
    compileKotlin {
        kotlinOptions {
            jvmTarget = "11"
        }
    }
    

    除了添加依赖以外还添加了一些其他参数。

    5.3 新建文件夹以及文件

    在这里插入图片描述

    5.4 TestInterface

    interface TestInterface {
        fun hello()
    }
    

    5.5 TestImpl

    class TestImpl:TestInterface
    {
        override fun hello() {
            println("Hello Spring")
        }
    }
    

    5.6 Main

    fun main() {
        println("Hello")
        val context: ApplicationContext = ClassPathXmlApplicationContext("applicationContext.xml")
        val test: TestInterface = context.getBean("test") as TestInterface
        test.hello()
    }
    

    5.7 applicationContext.xml

    同上。

    5.8 Tests

    class Tests {
        @Test
        fun test()
        {
            val context:ApplicationContext = ClassPathXmlApplicationContext("applicationContext.xml")
            val test:TestInterface = context.getBean("test") as TestInterface
            test.hello()
        }
    }
    

    5.9 运行

    5.9.1 测试

    在这里插入图片描述

    同样直接点击旁边的按钮即可运行:

    在这里插入图片描述

    5.9.2 Main

    同样点击按钮即可:

    在这里插入图片描述

    在这里插入图片描述

    6 源码

  • 相关阅读:
    Cordova Android源代码分析系列一(项目总览和CordovaActivity分析)
    codeforces A. Supercentral Point 题解
    Codeforces441A_Valera and Antique Items(水题)
    POJ 2407 Relatives 欧拉函数题解
    用Qt制作的Android独立游戏《吃药了》公布
    Webserver管理系列:12、开启关闭Ping命令
    高性能 Socket 组件 HP-Socket v3.2.1-RC3 公布
    00092_字符输出流Writer
    np.vstack()和np.hstack()
    用 Python 检验数据正态分布的几种方法
  • 原文地址:https://www.cnblogs.com/6b7b5fc3/p/13630148.html
Copyright © 2020-2023  润新知