Spring学习一(Spring介绍)

基于Spring Boot和Spring Cloud实现微服务架构学习(一)-Spring框架介绍 基于Spring Boot和Spring Cloud框架开发的微服务架构学习(一)-Spring框架介绍总结 看了几周Spring相关框架的书籍和官方demo,是时候开始总结下这中间的学习感悟。 首先,最想说的是,当你要学习一套最新的技术时,官网的英文文档是学习的最佳渠道。因为网上流传的多数资料是官网翻译而来,很多描述的重点也都偏向于作者自身碰到的问题,这样就很容易让你理解和操作出现偏差,最开始我就进入了这样误区。官网的技术导读真的描述的很详细,虽然对于我们看英文很费劲,但如果英文不是很差,请选 阅读详情

1、Spring介绍

通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。

2、Spring思想的核心

这里写图片描述

1、IOC控制反转

IOC(Inversion Of Control)可以减少代码的耦合问题。控制反转一般分为两种类型,依赖注入(Dependency injection)和依赖查找(Dependency loopup)。

1、IOC可以算是一种设计模式。
2、IOC可以看做是工厂模式的升华,可以把IOC看作一个大的工厂。在这个工厂中要生成的对象都是在XML文件中配置的。然后利用反射,获取XML类名中的对象,生成。从而把我们在java中一般需要new出来的对象,交给Spring来处理。提高代码的灵活性。
3、IOC的本质实现是用java的反射,在运行时期获取字段,生成对象,也可以得到对象的属性和方法。
反射在框架中应用广泛,像Hibernate,Spring很多地方都是通过运用反射来实现的。

IOC的优缺点

优点:

代码解耦,把生成对象放在xml中。


缺点:

  1. 生成一个对象的步骤变复杂了(事实上操作上还是挺简单的)
  2. 使用反射,性能损耗。但相对于IoC提高的维护性和灵活性来说,这点损耗是微不足道的,除非某对象的生成对效率要求特别高。
  3. 缺少IDE重构操作的支持,如果在Eclipse要对类改名,那么你还需要去XML文件里手工去改了,这似乎是所有XML方式的缺憾所在。

2、DI依赖注入

DI(Denpendency injection)IOC思想的核心。其实也就是IOC思想内部的具体实现。

当我们在一个java类中,需要使用另一个java类中,我们需要new也实例。但在Spring中,创建被调用的类不在由调用类来完成,因此成为反转。创建者被调用的实例化,由Spring来完成,然后注入到调用者中,也就是注入。

示例

依赖:A类使用B类,我们就成A类依赖与B类。
依赖注入:A类使用B类,将自动创建B类实例,自动设置给A类
例如:UserService 需要使用 UserDao,当从spring容器获得UserService时,spring将自动的创建UserDao,并设置给UserService。此时UserService不需要任何操作就可以使用UserDao。

3、AOP切面编程

AOP(Aspect Oriented Programming)面向切面编程。通过预编译方式和运行期动态代理实现程序功能的统一维护。
AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

1、这种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。
2、将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。

AOP其实是将琐碎的事务和逻辑代码相分离,以便我们更好的关注逻辑代码
代码逻辑比如是插入一条数据,那么琐碎事务就包括获取连接和关闭连接,事务开始,事务提交。
切面就是指在大堆繁琐事务中的逻辑代码。

2、Spring的好处

这里写图片描述

3、Spring框架

这里写图片描述
Spring的核心组件:
beans,core,context,el

4、入门Demo

1.导jar包
2.测试java类,User类
3.beans.xml文件配置
4.单元测试
示例代码如下
1、User类

package com.exmaple.spring;

public class User {

   public void hello(){
       System.out.println("hello  my spring");
   }
}

2、配置文件

<?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">
    <!-- 将对象配置给spring,id唯一名称,class为实现类全限定类名 -->
    <bean id="userId" class="com.exmaple.spring.User"></bean>
</beans>

3、测试代码

package com.exmaple.spring;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestSpring {
    // 不通过Spring代码
    @Test
    public void testHello() {
        User user = new User();
        user.hello();
    }

    // 通过使用Spring代码如下
    @Test
    public void testHelloSpring() {
        // /SpringDemo/src/com/exmaple/spring/beans.xml
        String xmlPath = "com/exmaple/spring/beans.xml";
        //获取Srping容器
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
                xmlPath);
        //通过容器获取配置文件中id,获取实例
        User user = (User) applicationContext.getBean("userId");
        //调用实例中的方法
        user.hello();
    }
}

示例2

这里写图片描述
1、BookDao和BookDaoImpl代码

package com.exmaple.spring2;

public interface BookDao {
    void save();
}
package com.exmaple.spring2;

public class BookDaoImpl implements BookDao{

    public void save() {
        // TODO Auto-generated method stub
        System.out.println("save book");
    }

}

2、BookService和BookServiceImpl代码

package com.exmaple.spring2;

public interface BookService {
    public void addBook();
}
package com.exmaple.spring2;

public class BookServiceImpl implements BookService {

    private BookDao bookDao;
    //依赖注入,service使用dao将由工厂自动创建并设置。提供接口对应setter方法
    public void setBookDao(BookDao bookDao){
        this.bookDao=bookDao;
    }

    public void addBook() {
        // TODO Auto-generated method stub
         this.bookDao.save();
    }

}

3、beans.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">
    <!-- 将对象配置给spring,id唯一名称,class为实现类全限定类名 -->
    <bean id="bookServiceId" class="com.exmaple.spring2.BookServiceImpl">
        <!-- 给指定bean的属性,确定设置的内容 * name : 表示 bean的属性名称(通过setter获得) * ref : 引用,表示 
            引用spring容器已经配置好的其他bean -->

        <property name="bookDao" ref="bookDaoId"></property>


    </bean>
    <bean id="bookDaoId" class="com.exmaple.spring2.BookDaoImpl"></bean>
</beans>

最后测试代码

public class TestSpring {
    // 不通过Spring代码

    // 通过使用Spring代码如下
    @Test
    public void testHelloSpring() {
        // /SpringDemo/src/com/exmaple/spring/beans.xml
        String xmlPath = "com/exmaple/spring2/beans.xml";
        // 获取Srping容器
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
                xmlPath);
        // 通过容器获取配置文件中id,获取实例
        BookService bookService = (BookService) applicationContext
                .getBean("bookServiceId");
        // 调用实例中的方法
        bookService.addBook();
    }
}

Spring学习二(Bean的配置)
http://blog.youkuaiyun.com/androidxiaogang/article/details/52662322
参考
http://blog.youkuaiyun.com/taijianyu/article/details/2338311/

如何缩减layout电路面积?减少晶体管的数量——以全加器为例【VLSI】 How to reduce the number of transistors to reduce circuit area? -- Take the Binary Full Adder as an example 优化面积的方法 1. 减少晶体管的数量 2. 改变gate matrix的布局 阅读详情

相关推荐

STM32 Modbus-RTU从零到实战:手把手教你用HAL库实现工业通信(附完整代码)

本文详细介绍了如何使用STM32 HAL库从零开始实现Modbus-RTU从机通信。内容涵盖RS485硬件设计、CubeMX串口与定时器配置、基于空闲中断的高效数据接收、协议栈状态机设计、CRC16校验实现以及常用功能码处理。文章提供了完整的代码框架和调试方法,帮助开发者快速构建稳定的工业通信节点。

weixin_28278377的博客 186

Spring-全面详解(基础知识)

Spring-全面详解(基础知识)入门级 持续更新中 Spring5框架 内容介绍: 1.Spring概念 2.IOC容器 3.Aop 4.JDBCTEmplate 5.事物管理 6.Spring5新特性

m0_63324772的博客 2万+

Go语言集成Ollama本地大模型:gollama库实战指南

在当今的AI应用开发中,大型语言模型(LLM)的集成已成为关键技术。其核心原理是通过API调用,将自然语言处理能力嵌入到各类应用中。从技术价值看,本地化部署的LLM解决了数据隐私、网络延迟和持续成本三大痛点,尤其适合处理敏感数据或对实时性要求高的场景。在工程实践中,开发者常使用专门的客户端库来简化与模型服务的交互,例如通过封装REST API、提供类型安全接口和流式处理支持,从而提升开发效率和代码健壮性。具体到Go语言生态,结合Ollama这一流行的本地大模型运行工具,可以实现完全离线、低延迟的AI功能集成

weixin_28728443的博客 604

Spring简介

一、spring简介 1.1.1 Spring是什么 Spring是分层的 Java SE/EE应用full- stack轻量级开源框架,以IoC(Inversion of Control:反转控制)和AOP( Aspect Oriented Programming:面向切面编程)为内核,提供了展现层 Spring MVC和持久层 Spring JDBC以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的 Java EE企业应用开源框架。 1.1.2Spr

qq_45834459的博客 1万+

Ubuntu 24.04.3 LTS 安装 OpenClaw 图文版

OpenClow安装指南

qq_17204557的博客 2551

(南京观海微电子)——TCON介绍

TCON又称:逻辑板,控制板,在液晶电视里的作用和CRT中的视放板相当,但有本质的区别,逻辑板不是一个纯粹的信号放大器,它输入是LVDS格式信号,而不是RGB。逻辑板的作用是把数字板送来的LVDS或TTL图像数据信号,时钟信号进行处理移位寄存器存储将图像数据信号,时钟信号转换成屏能够识别的控制信号行列信号RSDS控制屏内的MOSFET管工作而控制液晶分子的扭曲度。目前国内主要的TCON板生产商有视显光电。传统TCON的布局主要分为以下两种:X+C分离式和X+C一体式。

m0_75095200的博客 3834

Spring全面详解

Spring是个Java企业级应用JavaEE(13种规范)的开源开发框架。Spring主要用来开发Java应用,是针对构建JavaEE平台的web应用。

White-Camellia 4721

SAP 分期付款,付款条件的要件定义方法

以上内容做好后,可以在F-02或者F-60里看设置后的结果。找到相关路径选择【维护支付条件】点击进入后,选择【新条目】再设置一个总的支付规则,注意这里【付款条款】一定要选择。例:默认付款条件SP00,改成刚定义好的0028即可。将刚才基础创建的付款条件,以以下方式录入,注意。028A- 30天到期,过账日期基础。028B- 60天到期,过账日期基础。028C- 90天到期,过账日期基础。目的:新建支付条款(本次以。的选择,然后保存后,完成。,【基准日期缺省值】选择。基础创建好了以后,选择【

晴天的博客分享技术知识 2936

Spring介绍

Spring是一个开放源代码的设计层面框架,解决业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。 Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。

m0_38033199的博客 2557

GNSS差分码偏差(DCB)从原理到实战:如何避免数据处理中的常见错误

本文深入解析GNSS差分码偏差(DCB)的原理及其对高精度定位的关键影响。针对数据处理中因忽略DCB校正导致的常见错误,如单系统PPP高程偏差、多系统融合精度下降及电离层研究失真等,提供了实战解决方案与主流DCB产品获取、集成方法,帮助用户有效规避陷阱,提升数据处理精度。

k5l6m的博客 224

【北大核心-代码复现】基于 VMD-FFCM-iTransformer 光伏功率短期预测

【北大核心-代码复现】基于 VMD-FFCM-iTransformer 光伏功率短期预测

766

Spring的学习(一,spring的介绍)

当我们学习完JavaSE,接下来就必须要学习框架相关的知识,好了废话不多说,和小编一起学习起来吧! Spring的介绍 1、什么是Spring框架 Spring的官网https://spring.io/ Spring使lava编程对每个人来说更快、更容易、更安全。*spring对速度、简单性和生产率的关注使它成为世界上最流行的Java框架。 (1) spring 在哪里使用 Spring灵活的库受到世界各地开发人员的信任,无论是流媒体电视,在线购物,还是无数其他创新的解决方案,Spring.

weixin_47514459的博客 635

挂载(Mount)是什么意思

挂载 = 把一个存储设备或文件系统“接入”到现有的目录树,使其内容能够被访问。

天赐好车的博客 287

学习 Spring (一) Spring 介绍

Spring入门篇 学习笔记 Spring 是什么 Spring 是一个轻量级的 IoC (控制反转)和 AOP (面向切面)的容器框架 框架与类库的区别 框架一般是封装了逻辑、高内聚的,类库则是松散的工具组合 框架专注于某一领域,类库则是更通用的 IoC 与 DI 的关系 IoC: 控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护(获得依赖对象的过程...

weixin_34388207的博客 87

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Spring Boot 学习[一] 介绍与入门

因为最近项目不是很急(进入测试阶段),后期项目可能会用到spring boot相关技术,今天来了解下spring boot入门.主要是介绍和编写第一个HelloWorld示例!Spring Boot可以以jar包的形式来运行,运行一个Spring Boot项目我们只需要通过java -jar xx.jar类运行。非常方便。“越来越多的企业选择使用spring boot 开发系统,spring bo...

xiao雷博客 643

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Spring源码学习(一)Spring框架介绍

这里写自定义目录标题

vipchenwei的博客 176

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Spring基础学习(一)——Spring介绍

1.Spring框架概述      Spring是一个轻量级的Java开源框架,是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一是其分层结构,分构允许使用者选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。Spring的核心是控制反转(IOC)和面向切面(AOP).  简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。

cc_梅 358

Spring学习总结【一】--介绍

文章目录简介特点组成架构图 简介 Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 2002年,首次推出Spring框架的雏形:interface21框架 2003年Spring正式应运而生 自 2004 年 4 月,Spring 1.0 版本正式发布

weixin_42190209的博客 256

Spring学习(一):Spring 概述与介绍

Spring 概述与介绍一 Spring 概述二 Spring 优良特性三 Spring框架体系结构四 Spring优点 一 Spring 概述 1.Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。 2.Spring 框架是一个开源的 Java 平台,它最初是由 Rod Johnson 编写的,并且于 2003 年 6 月首次在 Apache 2.0 许可下发布。 3.Spring 是轻量级的框架,其

qq_43478581的博客 378

Spring学习笔记(一)Spring简单介绍及IOC思想

1.Spring介绍 Spring理念 使现有技术更容易使用,本身是个技术大杂烩(融合器),整合了现有的技术框架 Spring文档 官网:https://spring.io/projects/spring-framework 官方文档:https://docs.spring.io/spring/docs/5.2.0.RELEASE/spring-framework-reference/core.html#spring-core 官方下载地址:https://repo.spring.io/release/or

Pop3yeThink2的博客 3073

Spring学习笔记(一)基础介绍

spring概述 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架。它是为了解决企业应用开发的复杂性而创建的。 框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring 使用基本的 JavaBean来完成以前只可能由 EJB 完成的事情。然而,Spring 的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何 Java 应用都可以从 Spring 中受益。Spring 的

qq_36730954的博客 381

Spring学习笔记一(Spring简单介绍)

1.前言 从今天起开始写几篇关于Spring的文章,来总结一下,近来的学习情况,也想与大家分享一下学习Spring的心得和体会。希望大家能够多多指正。  2.Spring简单介绍 上图是有关Spring的整个架构图,从图中我们可以看出,Spring主要包括AOP、数据访问,WEB访问等几大块内容。 Spring是一个基于JAVA的轻量级J2EE的应用框架

2877

Spring学习(一)Spring框架介绍及初体验

Spring框架介绍及初体验 一、什么是框架 官方解释: 框架就是一些类和接口的集合,通过这些类和接口协调来完成一系列的程序实现。JAVA框架可以分为三层:表示层,业务层和物理层。框架又叫做开发中的半成品,它不能提供整个WEB应用程序的所有东西,但是有了框架,我们就可以集中精力进行业务逻辑的开发而不用去关心它的技术实现以及一些辅助的业务逻辑。大家熟知的Structs和Spring就是表示层和业务层框架的强力代表。 人话版本: 框架就是某些个人或者组织定义了一系列的类或者接口,提前定义好了一些实现,用

周帅傅 265

spring学习笔记(一):spring介绍

背景 目前公司技术栈包含spring boot,在学习spring boot的过程中总会涉及到很多关于spring框架的内容。关于spring框架,一直没有系统的学习过,对于spring核心思想的IOC和AOP不是很了解,为了更好的掌握这些东西,从今天开始,投入一定时间系统的去学习spring,并将学习过程中的内容整理为系列笔记,在帮助自己巩固这些内容的同时也希望分享给需要的朋友。 内容 整...

测试极客 387

Spring学习(一)-介绍

框架图:          优点:    使Java方法在数据库事务中执行,而不必处理事务API。 使本地Java方法成为HTTP端点,而无需处理Servlet API。 使本地Java方法成为消息处理程序,而无需处理JMS API。 使本地Java方法成为管理操作,而无需处理JMX API。  核心容器: 1.核心容器(Core Container):    核心容器包括spri...

喝醉的咕咕鸟 247

Spring框架学习 (一) 总体介绍

1、Sping框架介绍 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而

qq_43170213的博客 291
上一篇: Mybatis学习一
下一篇: Spring学习二(Bean配置)
android_xiaogang
博客等级 码龄12年 89粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值