spring(1)Spring之旅
s1)基于POJO的轻量级和最小侵入性编程;(POJO == plain ordinary java object,简单java对象 == 普通javabean)s2)通过依赖注入和面向接口实现松耦合;s3)基于切面和惯例进行声明式编程;s4)通过切面和模板减少样板式代码;
1.1)一方面:紧密耦合的代码难以测试,难以复用,难以理解,并且典型地表现出打地鼠式的bug特性(修复一个bug,将会出现一个或更多新的bug);(干货——新贵词汇——打地鼠式的bug特性)1.2)另一方面:一定程度的耦合又是必须的——完全没有耦合的代码什么都做不了;(总而言之,耦合是必须的,但应该被小心谨慎地管理);
public class KnightMain {public static void main(String[] args) throws Exception {String dir = System.getProperty("user.dir") + File.separator + "META-INF" + File.separator;FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext(dir+"knight.xml");Knight knight = context.getBean(Knight.class);knight.embarkOnQuest();context.close();}
}
A1)使用FileSystemXmlApplicationContext 和 使用 ClassPathXmlApplicaitonContext的区别在于:FileSystemXmlApplicationContext 在指定的文件系统路径下查找 knight.xml 文件,而 ClassPathXmlApplicationContext 是所有的类路径(包含 JAR文件)下查找knight.xml 文件;A2)如果你想从java 配置中加载应用上下文,那么可以使用 AnnotationConfigApplicationContext:ApplicationContext context = new AnnotationConfigApplicationContext(com.spring.chapter1.KnightConfig.class);
五月 26, 2016 4:37:43 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.FileSystemXmlApplicationContext@179d3b25: startup date [Thu May 26 16:37:42 CST 2016]; root of context hierarchy
五月 26, 2016 4:37:43 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from file [E:\bench-cluster\cloud-data-preprocess\SpringInAction4\META-INF\knight.xml]
before: Fa la la, the knight is so brave! // higglight line.
Embarking on quest to slay the dragon! // highlight line.
after: Tee hee hee, the brave knight did embark on a quest! // highlight lien.
五月 26, 2016 4:37:43 下午 org.springframework.context.support.AbstractApplicationContext doClose
信息: Closing org.springframework.context.support.FileSystemXmlApplicationContext@179d3b25: startup date [Thu May 26 16:37:42 CST 2016]; root of context hierarchy
type1)bean工厂(org.springframework.beans.factory.eanFactory.context.ApplicationContext接口定义)是最简单的 容器,提供基本的DI支持;type2)应用上下文(由 org.springframework.context.ApplicationContext接口定义)基于BeanFactory构建,并提供应用框架级别的访问;
case1)AnnotationConfigApplicationContext:从一个或多个基于java 的配置类中加载Spring应用上下文;case2)AnnotationConifgWebApplicationContext:从一个或多个基于java 的配置类中加载Spring Web应用上下文;case3)ClassPathXmlApplicationContext:从类路径下的一个或多个XML配置文件中加载上下文定义,把应用上下文的定义文件作为类资源;case4)FileSystemXmlApplicationContext:从文件系统下的一个或多个XML配置文件中加载上下文定义;case5)XmlWebApplicationContext:从web 应用下的一个或多个XML 配置文件中加载上下文定义;
spring(1)Spring之旅相关推荐
- Kotlin 企业级应用开发教程(Spring 5 + Spring Boot 2.0 + MyBatis)
Kotlin 企业级应用开发教程 -- Spring 5 + Spring Boot 2.0 + MyBatis 内容简介 Kotlin编程语言是一种现代语言,它简洁,安全,实用,同时专注于与Java ...
- 手动创建Spring项目 Spring framework
之前学习框架一直是看的视频教程,并且在都配套有项目源码,跟着视频敲代码总是很简单,现在想深入了解,自己从官网下载文件手动搭建,就遇到了很多问题记载如下. 首先熟悉一下spring的官方网站:http: ...
- Spring Boot Spring MVC 异常处理的N种方法
默认行为 根据Spring Boot官方文档的说法: For machine clients it will produce a JSON response with details of the e ...
- Spring 系列: Spring 框架简介
Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架. 在这篇由三部 ...
- Spring 与 Spring Boot 中的事件机制
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 温安适 来源 | https://my.osc ...
- Spring、Spring MVC、Spring Boot三者的关系还傻傻分不清楚?
点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 在本文中,你将获取到有关于Spring,Spring MVC和Spring Boot的概述, ...
- spring boot + spring batch 读数据库文件写入文本文件读文本文件写入数据库
好久没有写博客,换了一家新公司,原来的公司用的是spring,现在这家公司用的是spring boot.然后,项目组布置了一个任务,关于两个数据库之间的表同步,我首先想到的就是spring batch ...
- spring(16)------spring的数据源配置
spring(16)------spring的数据源配置 在spring中,通过XML的形式实现数据源的注入有三种形式. 一.使用spring自带的DriverManagerDataSource 使用 ...
- 如何在Spring和Spring MVC项目中进行测试
Spring框架概述 Spring大约包含了20个模块,这些模块组成了核心容器(Core Container).数据访问/集成(Data Access/Integration).Web.AOP(面向切 ...
- spring:《spring实战》读后感一
1.spring所做的一切都是为了简化java开发. 2.为了降低java开发的复杂性,spring采取了以下4种关键策略: 1).基于POJO的轻量级和最小侵入性编程. 2).通过依赖注入和面向接口 ...
最新文章
- java第k大的数字,JAVA中寻找最大的K个数解法
- error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCR... 2011年08月05日 09:08:15
- haproxy,lvs keepalived || heartbeat,nginx对比
- c语言建立顺序表 存储并输出,请教数据结构课程中怎么建立顺序表,显示,输出,从头到尾详细点最好加讲解,希望大家能帮这个小忙...
- Java基础————理解Integer对象的缓存策略
- 结构体全局变量_nginx源码分析—内存池结构ngx_pool_t及内存管理
- c语言删除文件remove_「Python」 - 文件基本操作
- html图标与文字对齐,如何实现css图标与文字对齐
- 计算机网络ospf配置命令,华为OSPF协议基本配置 -电脑资料
- 彻底卸载vscode Linux,Linux环境中Visual Studio Code 安装配置及其卸载(详细教程)
- hdu 6184 Counting Stars(三元环计数)
- matlab 圣诞树,搞气氛!用MATLAB画一棵Bling Bling的圣诞树
- java 首字母小写_Java中属性名首字母大小写问题
- 【安全知识分享】2021年安全生产月主题宣讲课件(附下载)
- GTK 框架(Frames)
- 小程序疑难杂症破解(一)
- 【Python代码】文件查重(01)-简易版
- mysql为什么需要中间件_为什么要用数据库中间件
- 大数据概述:传统数据与大数据的区别
- ks值和auc值的关系
热门文章
- CF1342E. Placing Rooks
- P2446 [SDOI2010]大陆争霸
- CodeCraft-21 and Codeforces Round #711 (Div. 2)
- Codeforces Round #727 (Div. 2) 题解
- [国家集训队]middle(二分+主席树[中位数思维题])
- P7293-[USACO21JAN]Sum of Distances P【统计,bfs】
- CF889E-Mod Mod Mod【dp】
- 2021“MINIEYE杯”中国大学生算法设计超级联赛(7)部分题解
- NOI.AC#2139-选择【斜率优化dp,树状数组】
- Codeforces274B