spring in action第一章小结1
1 spring基本理念是简化java开发。
使用以下4个策略简化java开发
1) 基于POJO的轻量级和最小侵入性编程
2)通过使用DI和AOP实现松耦合
3)基于切面和惯例进行声明式编程
4)通过切面和模板减少样板式代码
2 依赖注入:对象的依赖关系将由负责协调系统中各个对象的第三方组件在创建对象时设定。对象无需自行创建或管理他们的依赖关系---依赖关系将会被自动注入到需要他们的对象中。
3 装配:创建应用组件之间协作的行为称为装配。
4 面向切面编程被定义为促使应用程序分离关注点的一项技术。横切关注点总是跨越系统的多个组件。
主要作用是帮助对象解耦。
5 使用模板消除样板式代码。比如jJDBC/JMS/JNDI/REST都是使用模板代码的场景。
6 spring 容器,负责创建对象、装配他们,配置它们并管理他们的整个生命周期。
spring容器可以分为两种类型,bean工厂和ApplicationContext。一般更倾向使用ApplicationContext.
常见的有AnnotationConfigApplicationContext/AnnotationConfigWebApplicationContext/ClassPathXmlApplicationContext/FileSystemXmlApplicationContext/XmlWebApplicationContext
ClassPathXmlApplicationContext是在所有类路径下查找文件上下文。
7 bean对象的配置,三种方法。1)自动化装配 2)通过java代码装配bean 3)通过xml装配bean
7.1 自动化装配
@Component在一个类上面使用,在类上使用表明该类是一个组件类,不过组件扫描默认是不开启的。
可以使用如下技术进行开启扫描
@Configuration
@ComponentScan
public class PlayerConfig {
}
@ComponentScan默认会扫描与配置类相同的包以及这个包下所有子包。 当然也可以在xml配置文件中使用<context:component-scan />元素开启扫描。 为组件扫描的bean命名。可以有两种方式
1)@Component("lonelyHeartsClub")
2)@Named("lonelyHeartsClub")
字符串相当于是xml配置文件中的id
一般使用第一种方式。
7.1.1 组件扫描(component scanning)
7.1.2 自动装配(autowiring)
自动装配就是让Spring自动满足bean依赖的一种方法,在满足依赖的过程中,会在spring应用上下文寻找匹配某个bean需求的其他bean。
关键词:@Autowired,@Inject。不过一般使用第一种方式。
说明:
1)如果没有发现需要的bean,spring会抛出异常。
spring in action第一章小结1的更多相关文章
- Spring in Action --- 第一章 简介
简化java开发 基于POJO的轻量级和最小入侵性编程 通过依赖注入和面向接口实现松耦合 基于切面和管理进行声明式编程 通过切面和模板减少样板式代码 bean的生命周期 Spring对bean进行实例 ...
- Spring in Action 第一章 Spring之旅
1.1 简化Java开发 1.1.2 依赖注入(DI) 松耦合:如果一个对象只通过接口(而不是具体实现或初始化过程)来表明依赖关系,那么这种依赖就能在对象本身毫不知情的情况下,用不同的具体实现进行替代 ...
- Unity 游戏框架搭建 2019 (九~十二) 第一章小结&第二章简介&第八个示例
第一章小结 为了强化教程的重点,会在合适的时候进行总结与快速复习. 第二章 简介 在第一章我们做了知识库的准备,从而让我们更高效地收集示例. 在第二章,我们就用准备好的导出工具试着收集几个示例,这些示 ...
- 《SDN核心技术剖析和实战指南》第一章小结
第一章主要是概况.新技术有一个特点是,每家都有不同的说法.这里我只说说我比较认同的部分. SDN的核心概念大概有两个:转发面与控制面分离.开发可编程化.书里还说逻辑上集中控制,其实这个就可以从转发与控 ...
- 学习spring in action 第一天
这段时间,开始学习java吧,因为C sharp 学习了java的大量语法格式,所以,留意下,就不会错了,java 有的c sharp也有,而且之前我也学习过java的桌面开发,但是一下子上来就要自己 ...
- 《STL源码剖析》学习半生记:第一章小结与反思
不学STL,无以立.--陈轶阳 从1.1节到1.8节大部分都是从各方面介绍STL, 包括历史之类的(大致上是这样,因为实在看不下去我就直接略到了1.9节(其实还有一点1.8.3的内容)). 第一章里比 ...
- spring in action 7.2 小结
1 对于二进制文件上传功能的实现.在spring中使用multipart来处理,处理方式有两种. CommonsMultipartResolver:使用Jakarta Commons FileUplo ...
- spring in action 5.1 小结 spring mvc起步
0 配置 DispatcherServlet 是 spring mvc的核心,常规配置方法可以查看之前博客.springMVC简单例子 在此使用servlet 3 规范和 spring3.1 功能增强 ...
- 8.HBase In Action 第一章-HBase简介(1.2.2 捕获增量数据)
Data often trickles in and is added to an existing data store for further usage, such as analytics, ...
随机推荐
- WebAPI 操作返回
定义了一个返回枚举: public enum ResultExceptionEnum { 积分不足 = , 支付失败 = , 用户不存在 = , 验证码发送失败 = , 验证码不正确 = , 账号已存 ...
- 微软工具ILMerge
释义 ILMerge是一个可用于将多个.NET程序集合并为单个程序集的实用程序. ILMerge接收一组输入程序集并将它们合并到一个目标程序集中.输入程序集列表中的第一个程序集是主程序集. 当主组件是 ...
- material design动画
这是一篇material design 文档动画部分的学习! Summary: Material Design动画交互 动画速度的3个原则 3种交互方式 如何设计有意义的动画 使人高兴的动画细节 1 ...
- Lua学习笔记之开始
在这节课的开始,按照国际惯例,一般学习一门新的语言,都是要打印出“Hello,world”,那么我们也不例外. Lua语言的打印跟其他语言一样,只要print(“Hello,World”),然后保存为 ...
- 万里长征第二步——django个人博客(第二步 ——日志记录器)
定义日志记录器 可以在setting.py里设置日志记录器 # 自定义日志输出信息 LOGGING = { 'version': 1, 'disable_existing_loggers': True ...
- pymongo 目标计算机积极拒绝
今天在使用pymongo连接服务器上的mongodb数据库时出现该问题 其实原因是mongodb本身配置只允许本机连接数据库 打开mongod.conf即mongodb的配置文件 一般来说是vim / ...
- Razor语法(五)
约定:客户端代码称C域,服务器端代码称S域 0. 基本原则Razor模板默认是C域(与php.aspx相同)任何C域都可以内嵌S域行内S域不可内嵌C域,多行S域可内嵌任何C域@符号是关键符号,使用@从 ...
- Getting to grips with CakePHP’s events system
CakePHP seems to get a slightly unfavourable reputation when compared to the likes of Symfony or Zen ...
- (转)IntelliJ IDEA下的使用git
1.git简介 Git是目前流行的分布式版本管理系统.它拥有两套版本库,本地库和远程库,在不进行合并和删除之类的操作时这两套版本库互不影响.也因此其近乎所有的操作都是本地执行,所以在断网的情况下任然可 ...
- PHP-时间小结
//获得本周(本天)时间戳的起始和结束//本周星期一时间戳$monday = mktime(0, 0, 0, date("m",strtotime("last Monda ...