当前位置: 首页 > 编程日记 > 正文

Spring 学习笔记

Spring Ioc 容器
所有的组件都是被动的( Passive),所有的组件初始化和调用都由容器负责。组件处在一个容器当中,由容器负责管理。
BeanFactory 根据配置文件确定容器中 bean 的实现,管理 bean 之间的依赖关系。
通常,对属性值为容器中其他 bean 的情况,推荐采用 ref 元素指定,而不是 value 元素。
Spring开发包介绍 – 核心开发包
在建立Spring工程的时候,需要引入Spring的开发包,否则无法建立Spring的开发和运行环境,以下简单介绍一下Spring的核心开发包的基本用途:
Spring Core
Spring Beans
Spring AOP
Spring Context
以下开发包文件虽不是Spring核心开发包,但是提供了各种企业级服务:
Spring Aspects
Spring Context Support
Spring Expression
Spring Framework Bom
Spring Instrument
Spring Instrument Tomcat
Spring JDBC
Spring JMS
Spring orm
Spring oxm
Spring Struts
Spring test
Spring tx
Spring web
Spring webmvc
Spring webmvc portlet
IoC概述 – IoC的注入类型
从注入方法上看,主要划分为三种类型:
构造函数注入
属性注入
接口注入
资源访问工具类
JDK所提供的访问资源的类并不能很好的满足各种底层资源的访问需求,因此,Spring设计了一个Resource接口,它为应用提供了更强大的访问底层资源的能力:
主要方法:
boolean exists()
boolean isOpen()
URL getURL()
File getFile()
InputStream getInputStream()
具体实现类:
ByteArrayResource
ClassPathResource
FileSystemResource
InputStreamResource
ServletContextResource
UrlResource
为了访问不同类型的资源,必须使用相应的Resource实现类,这是比较麻烦的,Spring提供了一个强大的加载资源的机制,能够自动识别不同的资源类型:
资源类型地址前缀:
classpath classpath:com/jike/bean.xml
File file:/com/jike/bean.xml
http:// http://www.jike.com/bean.xml
ftp ftp://www.jike.com/bean.xml
无前缀 com/jike/bean.xml
Ant风格的匹配符:
?:匹配文件名中的一个字符
*:匹配文件名中的任意字符
**:匹配多层路径
Ant风格的资源路径示例:
Classpath:com/t*st.xml
File:D:/conf/*.xml
Classpath:com/**/test.xml
Classpath:org/springframework/**/*.xml
BeanFactory和ApplicationContext的介绍
BeanFactory是Spring框架最核心的接口,它提供了高级IoC的配置机制。ApplicationContext建立在BeanFactory基础之上,提供了更多面向应用的功能,它提供了国际化支持和框架事件体系,更易于创建实际应用一般称BeanFactory为IoC容器,而称ApplicationContext为应用上下文:
BeanFactory和ApplicationContext的介绍 – BeanFactory的介绍
BeanFactory是一个类工厂,可以创建并管理各种类的对象,Spring称这些创建和管理的Java对象为Bean。在Spring中,Java对象的范围更加宽泛。接下来我们对BeanFactory的类体系结构以及装载初始化顺序进行说明:
类体系结构:
XmlBeanFactory
ListableBeanFactory
HierarhicalBeanFactory
ConfigurableBeanFactory
AutowireCapableBeanFactory
SingletonBeanFactory
BeanDefinitionRegistry
初始化顺序:
1、创建配置文件
2、装载配置文件
3、启动IoC容器
4、获取Bean实例
BeanFactory和ApplicationContext的介绍 – ApplicationContext的介绍
ApplicationContext由BeanFactory派生而来,提供了更多面向实际应用的功能。在BeanFactory中,很多功能需要以编程的方式方式实现,而在ApplicationContext中则可以通过配置的方式实现。接下来介绍一下ApplicationContext的实现类以及类体系结构:
具体实现类:
ClassPathXmlApplicationContext
FileSystemXmlApplicationContext
ConfigurableApplicationContext
扩展接口:
ApplicationEventPublisher
MessageSource
ReaourcePatternResolver
LifeCycle
和BeanFactory初始化相似,ApplicationContext的初始化也很简单,根据配置文件路径不同可以选择不同的实现类加载:
ClassPathXmlApplicationContext
FileSystemXmlApplicationContext
Bean的实例化问题
Bean的生命周期
Spring容器中的Bean拥有明确的生命周期,由多个特定的生命阶段组成,每个生命阶段都允许外界对Bean施加控制。在Spring中,我们从Bean的作用范围和实例化Bean时所经历的一系列阶段来描述Bean的生命周期:
BeanFactory中的Bean的生命周期
ApplicationContext中的Bean的生命周期
Bean的生命周期 – BeanFactory中的Bean的生命周期
如下通过一个图形化的方式进行描述BeanFactory中的Bean的生命周期:
Spring的AOP容器
org.springframework.http.converter.json.MappingJacksonHttpMessageConverter
自动把map转换为son字符串
ApplicationContext: 实用的Bean工厂
如果说BeanFactory是spring的心脏,那么Application就是完整的身躯。ApplicationContext就是由BeanFactory派生出来的。
代理:
静态代理
jdk动态代理 项目中要有 一个拦截器实现 InvocationHandler
cglib动态代理 项目中要有 一个拦截器实现 MethodInterceptor
切面: log类、权限类、安全类
通知:切面中的方法
连接点:客户端调用哪个方法, 哪个方法就是连接点。
切入点:相当于条件,
可以通过切入点表达式,指定拦截哪些类的哪些方法; 给指定的类在运行的时候植入切面类代码。
切入点表达式:
织入:形成代理对象的方法的过程就称为织入。
什么是AOP(Aspect Oriented Programming),就是把反复使用的、非核心的代码提取出来。

转载于:https://www.cnblogs.com/YangBinChina/p/8966160.html

相关文章:

【spring】初识aop(面向切面编程) 使用jdk动态代理

BankServiceIImple.java 代码实现: package com.zzxtit.aop;import java.math.BigDecimal;public interface BankServiceImple {public void transfer(String source, String target, BigDecimal money);public void withdraw(String account, BigDecimal money);…

sigaction

#include <signal.h> int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact); struct sigaction {   void (*sa_handler)(int);   void (*sa_sigaction)(int, siginfo_t *, void *);   sigset_t sa_mask;   int sa_flags;   void …

003本周总结报告

本周对java的循坏结构和条件语句以及switch分支进行了复习并通过九九乘法表和制作日历来更加熟练使用和理解循环&#xff0c;并用eclipse替代了记事本来编写程序&#xff0c;同时针对记事本编写java程序后台运行出现的GBK不可映射字符问题先后采用了 javac -encoding UTF-8 …

HDU-1203 I NEED A OFFER!-0、1背包及空间优化

I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5280 Accepted Submission(s): 1799Problem DescriptionSpeakless很早就想出国&#xff0c;现在他已经考完了所有需要的考试&#xff0c;准备了…

docker监控系统

第一&#xff1a;docker监控系统之命令行式监控 第二&#xff1a;docker监控系统之cadvisor 第三&#xff1a;docker监控系统之 第四&#xff1a;docker监控系统之 转载于:https://www.cnblogs.com/fengjunhua/p/8968210.html

Visual Studio 2005 Team System下载地址

注册一个msn就可以去微软下载了&#xff0c;关于替换序列号变成正版的方法我没有试&#xff0c;team suite我在用&#xff0c;但Team Foundation Server 我还没有安装好Microsoft Visual Studio 2005 简体中文正式版Visual Studio 2005 Team Suite 180 天试用版(可更换key变为正…

【spring】springAop开发

xml开发方式 springboot的使用 1、声明一个parent 代码实现&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.0.RELEASE</version><relati…

使用 SqlHelperParameterCache 类管理参数

SqlHelperParameterCache类是位于 Microsoft.ApplicationBlocks.Data命名空间底下。它底下有三个方法&#xff0c;分别是&#xff1a; CacheParameterSet&#xff1a;用于将SqlParameters 数组存储到缓存中GetCachedParameterSet&#xff1a;用于检索读取缓存中SqlParameters数…

改善C#程序的建议6:在线程同步中使用信号量

所谓线程同步&#xff0c;就是多个线程之间在某个对象上执行等待&#xff08;也可理解为锁定该对象&#xff09;&#xff0c;直到该对象被解除锁定。C#中对象的类型分为引用类型和值类型。CLR在这两种类型上的等待是不一样的。我们可以简单的理解为在CLR中&#xff0c;值类型是…

Jerry眼中的SAP客户数据模型

本文Jerry将介绍八款SAP产品中的客户模型。希望您在阅读完本文之后&#xff0c;能对SAP客户模型设计的思路有一个最最粗浅的了解。 由于Jerry水平和精力所限&#xff0c;本文不会详细阐述这些产品里的客户模型设计细节&#xff0c;而是介绍了一种方法&#xff0c;如果您对这些模…

【spring】spring JDBC开发 、 将创建表生成sql语句的方法

将navicate中已存在表的创建转化成sql语句的方法 1、右击表&#xff0c;选择对象信息 2、点击DDL jar包引入 1、spring-starter-jdbc 代码实现&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-star…

PL/SQL ——分页编程

通过PL/SQL编程&#xff0c;编写分页存储过程。代码如下所示&#xff1a; 1 --PL/SQL开发编写分页代码 2 --创建包 3 create or replace package Page as 4 type test_cursor is ref cursor 5 end Page; 6 --创建存储过程 7 create or replace procedure Page( 8 (tablenam…

My view towards Machine Learning

Introduction:[to be continued]转载于:https://www.cnblogs.com/JVKing/articles/2290780.html

两个表的更新、表的复制

update 表1 set from 表1&#xff0c;表2 where 条件 表的复制数据 1.select * into newtable from table 2.insert into table select table2 select identity(int,1,1),* into newtable from .. 这条语句有时挺管用的转载于:https://www.cnblogs.com/leshang/archive/2…

Java数据结构简述

1、数组 概念&#xff1a;一个存储元素的线性集合。 数组声明和创建&#xff1a; dataType[] arrayRefVar new dataType[arraySize]; 二维数组&#xff08;多维数组&#xff09;声明和创建&#xff1a; dataType[][] arrayName new dataType[arraylenght1][arraylenght2]; PS…

CORS漏洞利用检测和利用方式

CORS全称Cross-Origin Resource Sharing, 跨域资源共享&#xff0c;是HTML5的一个新特性&#xff0c;已被所有浏览器支持&#xff0c;不同于古老的jsonp只能get请求。 检测方式&#xff1a; 1.curl访问网站   curl https://www.huasec.com -H "Origin: https://test.com…

【spring】具名参数

具名参数 配置xml文件 1、配置dataSource&#xff08;数据源&#xff09; 代码实现&#xff1a; <context:property-placeholderlocation"DB.properties"></context:property-placeholder><bean id"dataSource"class"com.alibaba.d…

利用委托和泛型实现树的常用操作

在日常开发中&#xff0c;经常遇到对树的操作&#xff0c;我们可以利用泛型和委托对这些树进行操作&#xff0c;这样就不需要每有一个树就要实现相应的功能了。 源码在http://files.cnblogs.com/haiconc/LangTest.zip 首先&#xff0c;使用类泛型声明&#xff1a; public class…

Scott的ASP.net MVC框架系列文章之四:处理表单数据(2)

前几周我发表了一系列文章介绍我们正在研究的ASP.NET MVC框架。ASP.NET MVC框架为你提供了一种新的开发Web应用程序的途径&#xff0c;这种途径可以让应用程序变得更加层次清晰&#xff0c;而且更加有利于对代码进行单元测试和支持TDD&#xff08;测试驱动开发&#xff09;开发…

eclipse工作空间配置导出

由于工作与学习的需求&#xff0c;需要使用不同的工作空间。而eclipse的新建工作空间其他以前的配置都没有继承过来&#xff0c;那么就得重新配置一遍。 经过学习其他前辈们的经验与自己的摸索总结一下3种方法&#xff1a; 方法一&#xff1a;使用eclipse的导出功能。 工作目录…

探讨UnsupportedOperationException的原因及解决方案

[原文链接]{https://blog.csdn.net/liu_005/article/details/74091805} 转载于:https://www.cnblogs.com/Wbin01/p/11222483.html

成长轨迹44 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2799、2976、2975、2742】...

一次ac的就不说啥了。。 2799:浮点数格式 View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <ctype.h> 4 #include <cmath> 5 6 char flo[10050][55]; 7 int poi[10050]; 8 9 int main()10 {11 int num;12 scanf("%d…

【转载】xmind的使用安装方法

原文链接&#xff1a;https://blog.csdn.net/qq_16093323/article/details/80967867

BCB Access violateion at Address 0000 0003. Read of address 0000 0003

来自网页&#xff1a;&#xff08;我的电脑做不到&#xff09; 运行一个程序&#xff0c;莫名出现一个对话框:access violation at address 0000.. read of address000试了几次问题依旧&#xff0c;网上搜了下解决办法&#xff1a;原文&#xff1a;baidu&#xff0b;google&…

与 Scott Guthrie 一道感受技术激情 1月13日于北京

可能很多朋友已经知道了这个消息&#xff0c;我觉得还是写一下&#xff0c;别让这个机会白白溜走。Scott Guthrie是谁&#xff0c;我就不介绍了&#xff0c;简单说&#xff1a;ASP.NET之父&#xff0c;Silverlight 的主要创始人&#xff0c;还管着太多微软的开发技术和工具&…

【web】将一个jar包更改成war包

可以看到&#xff0c;向tomcat中发布工程刚创建的工程不在可添加的范围内&#xff0c;所以可以看出该工程是一个jar包 1、在pom文件中添加一行代码 代码实现&#xff1a; <artifactId>jar.to.war</artifactId> 2、更新maven工程 此时发现main文件夹下出现了一个w…

牛腩44 整合登陆页 RequiredFieldValidator 和 ValidationSummary 以及 asp.net 自带的MD5 加密...

在我们后台登陆的时候,有 用户名,密码和验证码3个必选项,所以我们托3个验证控件过来 例如这里,如果没有填写用户名,当点提交的时候,显示 红色的 * 号,并且弹出一个 alert 效果如下 这个是怎么做到的呢? 用户名后面的 * 号和弹出的 alert 分别用到 RequiredFieldValida…

HDU-1268 找新朋友 (素数筛选)

找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2518 Accepted Submission(s): 1183Problem Description新年快到了&#xff0c;“猪头帮协会”准备搞一个聚会&#xff0c;已经知道现有会员N人&#x…

硬盘无法访问文件系统损坏,里面的资料怎样恢复

文件系统损坏说明这个盘的文件系统结构损坏了。在平时如果数据不重要&#xff0c;那么可以直接格式化就能用了。但是有的时候里面的数据很重要&#xff0c;那么就必须先恢复出数据再格式化。具体恢复方法可以看正文了解&#xff08;不格式化的恢复方法&#xff09; 工具/软件&a…

【spring】第二个springmvc helloworld 以及 spring模糊路径

第二个helloword 配置文件&#xff1a; 1、添加pom文件 &#xff08;1&#xff09;配置parent 代码实现&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version…