Spring入门详解

准备开始看看Spring源码, 所以把Spring复习一遍,做下笔记..


一. Spring的4种关键策略:

1. 基于POJO的轻量级和最小入侵编程(基本不出现在业务逻辑中, 不用强制实现接口之类的);

2. 通过依赖注入和面向接口来实现松耦合;

3. 基于切面和惯例进行声明式编程;

4. 通过切面(减少重复调用)和模版减少样板式代码(比如JDBC那些重复的连接配置)。




二. 两个核心概念:依赖注入和AOP

Bean的依赖注入:

1. 构造器注入属性 (及通过构造器注入所需的类, 在XML中作相应配置)

    - 使用类默认public构造器

    - 使用<bean><constructor-arg value="传普通类型参数" 或用 ref="传对象引用"><bean>定义public构造器          参数

    - 如果没有public的构造器, 用<bean id="" class="" factory-method="获取单例的方法" />


2. 设值注入属性(getter和setter:实例化时注入) 

    - <bean><property name="" value="传普通类型参数" 或用 ref="传对象引用"><bean>

    - 如果Bean不想被共享可以设置成内部Bean, <bean><property name="" ref=""><bean class=""></property><bean> 


3. SpEL(Spring表达式语言 : #{expression},Spring3.0开始支持) 

    - 使用Bean的ID来引用Bean

    - 调用方法和访问对象属性 

    - 对值进行算术、关系和逻辑运算

    - 正则表达式匹配

    - 集合操作


4. 注解(XML配置<context:annotation-config>【不用写<property>和<constructor-arg>】---升级---》》<context:component-scan base-package="">【连Bean都可以不用写了】)

    - @Autowired [ (required=false) ]这样没有Bean也行: byType自动装配,如果找不到还可以用@Qualifier("")通过byName方式缩小范围

    - @Inject 与@Autowired不同的是无required属性,但有与@Qualifier("")对应的@Named("")

     - @Bean 基于Java方式的注入, 有编译检查, 不能同名。

component-scan扫描的类(stereotype):

@Component -- 表示为Spring组件(它的具体化有@Controller等)

@Controller -- SpringMVC的Controller  相当于Struts2的控制

@Repository -- 表示数据仓库

@Service -- 服务层



Bean的作用域(通过scope属性定义):



Bean的初始化和销毁:

<bean id="" class="" init-method="执行一些Bean实例化时调用的方法" destroy-method="执行一些Bean销毁时调用的方法" />



AOP:

通过声明的方式将他们应用(在Spring配置文件中配置)到它们需要影响的组件中去, 是各个组件专注于自身的业务, 而不用把日志、事务之类的代码耦合(调用或者直接在组件实现)到组件的业务逻辑中去。



AOP在Spring配置文件中的配置:

<aop : config><aop:aspect ref="logBean , safeBean Or...切面."> 
    <aop:pointcut id="you logistic bean" expression="execution(* *.切点业务方法)" /><aop:before pointcut-ref="you logistic bean" method="前置切面方法"><aop:after pointcut-ref="you logistic bean" method="后置切面方法"></aop:aspect></aop : config>

  execution[在方法执行时触发](*[返回任意类型] com.weniuwuren[包名].method[方法名](..[参数]))  

  && [ || ] [ ! ] within(com.wenniuwuren.*)


表达式:

  


通知器:




AOP核心名词:


其中,切点(where)定义了哪些连接点会得到通知(what,when)。


当然,切面还有个很强大的功能。为Java这个非动态语言, 添加新Method(以上描述的是新增功能:安全,日志)。

<aop:declare-parents

  types-matching="实现类"

  implement-interface="要被实现的接口"

  default-impl="" or deltegate-ref=""/>


三. Spring容器(创建Bean, 装配他们, 配置他们, 管理他们的整个生命周期):

  Bean Factory最基本容器 ---- 基于这个之上又建立Application(应用上下文)

  Application分为三类:

    -ClassPathXmlApplicationContext : 读取类路径下的XML配置文件加载Application

    -FileSystemXmlApplicationContext : 读取文件系统下的XML配置文件并加载Application

    -XmlWebApplicationContext : 读取Web应用下的XML配置文件并加载Application


通过下图命名空间配置容器(常用就是Beans了)





四. Spring生命周期



上图解释:

1. Bean实例化

2. 填充属性----Spring将值和Bean的引用注入Bean对应属性中

3. 如果Bean实现了BeanNameAware接口, Spring将Bean的ID传给setBeanName()方法

4. 如果Bean实现了BeanFactoryAware接口, 将调用setBeanFatory()方法将Beanfactory实例传入

5. 如果Bean实现了ApplicationContextAware接口, 将调用setApplicationContext()方法将上下文引用传入

6. 如果实现了BeanPostProcessor接口, 将调用相应初始化方法

7. InitializingBean初始化

8. 如果实现了BeanPostProcessor接口, 将调用相应初始化方法

9. Bean可以使用了, 它们将在ApplicationContext中直到, ApplicationContext被销毁

10.  DisposableBean销毁

以上步骤均可自定义一些操作。



五. 事务(在XML中用tx命名空间定义, <tx:annotation-driven transaction-manager="transactionManager"/>)

  Spring以来以下5个参数来控制如何管理事务。

  <1> propagation behavior(传播行为):客户端与被调用方法之间的事务边界。 [事务应该被启动还是挂起,方法是否在事务中运行]



  <2> isolation level(隔离级别):一个事务可能受其他并发事务影响的程度。



<3> read only(只读):是否为只读事务。只读优化是由事务启动时数据库实施的, 只对启动一个新事务(PROPAGATION_REQUIRED,PROPAGATION_REQUIRES_NEW, PROPAGATION_NESTED)才有意义。


<4> timeout(事务超时)  事务开始时启动,所以只对启动一个新事务(PROPAGATION_REQUIRED,PROPAGATION_REQUIRES_NEW, PROPAGATION_NESTED)才有意义。


<5> roll back(回滚原则) 




六. Spring框架模块




     


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/250899.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

1.Spring入门

一、Spring入门 1.Spring 入门 Spring 整体框架&#xff1a; 什么是IOC&#xff1f; IOC&#xff1a;Inversion of Control&#xff08;控制反转&#xff09;&#xff0c;即将对象的创建权反转给&#xff08;交给&#xff09;spring。 spring包含的文件&#xff1a; docs&am…

spring入门例子

Hello World入门 2.5.1、准备开发环境和运行环境&#xff1a; ☆开发工具&#xff1a;eclipse ☆运行环境&#xff1a;tomcat6.0.20 ☆工程&#xff1a;动态web工程&#xff08;springmvc-chapter2&#xff09; ☆spring框架下载&#xff1a; spring-framework-3.1.1.RELEASE-w…

Spring入门

Spring框架的设计理念 Spring的骨骼架构 Spring总共有十几个组件&#xff0c;但真正核心的组件只有几个&#xff0c;下面是Spring框架的总体架构图 图1 .Spring 框架的总体架构图 从图中可以看出&#xff0c;Spring框架中的核心组件只有三个&#xff1a;Context&#xff0c;Co…

【Spring入门】

Spring01loc&DI 概念&#xff1a;Spring是一种分层的Javaee、Javase应用full-stack&#xff08;全栈&#xff09;轻量级开源框架&#xff0c;以ioc&#xff08;反转控制&#xff09;和aop&#xff08;面向切面编程为内核&#xff09;&#xff0c;提供了SpringMVC和SpringJD…

GIT | 日常命令查阅表

最近公司代码管控比较乱&#xff0c;有天就利用分支进行了代码梳理&#xff0c;当时就遇到一些困惑&#xff0c;抽空就把git 再学了一下。 以前我是用git命令的&#xff0c;但是敲命令对我来说还是有点麻烦&#xff08;主要是git 功力不够&#xff09;&#xff0c;看到有同事用…

Spring入门篇

第1章 概述 本章对课程的情况进行介绍&#xff0c;并介绍框架和Spring概况。 1-1 Spring入门课程简介 (05:56) 1-2 Spring概况 (09:39) 1-3 Spring框架 (04:24) 第2章 Spring IOC容器 介绍Spring IOC容器的基本概念和应用 2-1 IOC及Bean容器 (20:18) 容器中的对象就是Bean…

spring入门总结

spring入门总结 一、spring介绍1、spring是什么2、理念&#xff1a;3、Spring优点&#xff1a;4、缺点5、主要内容&#xff1a; 二、IOC&DI1、使用IOC创建对象的三种方法a、无参构造方法创建b、通过有参构造方法来创建c、通过工厂方法来创建对象 2、配置文件详解3、依赖注入…

Spring 入门

引自&#xff1a;http://www.ibm.com/developerworks/cn/java/wa-spring1/ Spring 系列: Spring 框架简介 Spring AOP 和 IOC 容器入门 2005 年 8 月 18 日 在这由三部分组成的介绍 Spring 框架的系列文章的第一期中&#xff0c;将开始学习如何用 Spring 技术构建轻量级的、强…

Spring入门须知

Hi ~o(*&#xffe3;▽&#xffe3;*)ブ大家好呀&#xff01; 我是【小阿飞_】&#xff0c;我又来给大家分享知识啦&#x1f61c; 今天分享的是spring入门需要理解的一些概念和一些基础的使用操作&#xff0c;有哪里讲解的不好还请大佬们评论区多多指点&#x1f61c; 本期精彩&…

Spring入门基础

目录 1.Spring的相关概念 2.Spring的核心与设计思想 3.Spring创建与使用 4.更简单地去使用Spring 5.Bean的作用域与生命周期 1.Spring相关概念 1.1 什么是Spring 我们通常所说的 Spring 指的是 Spring Framework&#xff08;Spring 框架&#xff09;&#xff0c;它是⼀个…

Spring入门程序

目录 一、Spring概述二、Spring的体系结构三、Spring的核心容器四、实现步骤 一、Spring概述 spring是当前主流的JavaWeb框架&#xff0c;它是为了解决应用开发复杂性问题而产生的。对于一个Java应用程序员来说&#xff0c;掌握spring框架的使用&#xff0c;是我们基本的一项技…

Spring入门这一篇就够了

前言 前面已经学习了Struts2和Hibernate框架了。接下来学习的是Spring框架…本博文主要是引入Spring框架… Spring介绍 Spring诞生&#xff1a; 侵入式概念 Spring是一种非侵入式的框架… 侵入式 非侵入式 松耦合 前面我们在写程序的时候&#xff0c;都是面向接口编程&#xff…

Spring入门,看这篇就够了

Spring入门&#xff0c;看这篇就够了 文章目录 Spring入门&#xff0c;看这篇就够了一、 初识Spring二、Spring Framework系统架构三、核心概念1.IoC&#xff08;inversion of control&#xff09;控制反转2.Bean3.DI&#xff08;dependency injection&#xff09;依赖注入 四、…

Spring 入门教程

Spring 入门教程 1、参考资料 尚硅谷-Spring5框架最新版教程&#xff08;idea版&#xff09;雷丰阳spring、springmvc、mybatis、spring一站式学习 项目地址&#xff1a;Oneby / spring-learn 2、Spring 概述 2.1、Spring 框架概述 Spring 是轻量级的开源的 JavaEE 框架 Sp…

一文学会Spring,Spring最简单的入门教程(万字好文)

1.Spring概述 1.1 Spring框架是什么 ​ Spring是与2003年兴起的一个轻量级的Java开发框架&#xff0c;它是为了解决企业应用开发的复杂性而创建的。Spring的核心是控制反转(IOC)和面向切面编程(AOP)。Spring是可以在Java SE/EE中使用的轻量级开源框架。 ​ Spring的主要作用…

阿里云的内容识别技术可以实现哪些场景下的智能化应用?

阿里云的内容识别技术可以实现哪些场景下的智能化应用&#xff1f; [本文由阿里云代理商[聚搜云]撰写]   随着人工智能技术的快速发展&#xff0c;阿里云借助自身的技术和资源优势&#xff0c;开发了一种名为“内容识别”的技术。这项技术能够高效、准确地识别出图片、视频、…

装饰器模式:实现类功能的动态扩展

一&#xff0c;简介 装饰器模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许在不修改原有类结构的情况下&#xff0c;给一个对象动态添加额外的职责。通常情况下&#xff0c;扩展一个类的功能我们首先会想到用继承方式来实现&#xff0c…

One2Multi Graph Autoencoder for Multi-view Graph Clustering

One2Multi Graph Autoencoder for Multi-view Graph Clustering | Proceedings of The Web Conference 2020 (acm.org) 目录 Abstract 1 Introduction 2 Model 2.1 Overview 2.2 One2Multi Graph Convolutional Autoencoder Informative graph convolutional encoder M…

linux常见的二十多个指令

目录 一、指令的概念 二、28个常见的指令 ⭐2.1 ls指令 ⭐2.2 pwd指令 ⭐2.3 cd指令 ⭐2.4tree指令 ⭐2.5 mkdir指令 ⭐2.6 touch指令 ⭐2.7 rmdir指令 ⭐2.8 rm指令 ⭐2.9 clear指令 ⭐2.10 man指令 ⭐2.11 cp指令 ⭐2.12 mv指令 ⭐2.13 cat指令&#xff08;适…

Python画五角星(turtle初识)

Python可以做很多事情&#xff0c;主要归功于python下的各种模块。画图也不例外&#xff0c;通过简单地turtle模块&#xff0c;可以画出各种图案。 首先&#xff0c;使用python画图&#xff0c;需要安装turtle模块。在控制台输入pip install turtle执行 import turtle turtle.…