核心:

控制反转(Inversion of Control-IOC)和依赖注入(Dependency Injection-DI)

Spring中两者是相同的, 控制反转是用依赖注入实现的. 这里, 依赖注入的含义是外部容器负责创建对象和维护对象间的依赖关系, 而不在对象的内部维护.

具体在Spring中实现的有两种形式:

  1. 注解配置

    容器是AnnotationConfigApplicationContext, 用来维护Application中的Bean的对象, 并根据注解的内容执行.

    对于注解配置中类的声明:
@Component 组件, 没有明确的角色;
@Service 在业务逻辑(service层)使用;
@Repository 在数据访问层(dao层)使用;
@Controller 在展现层(MVC->SpringMVC)使用;

注入Bean的注解

@Autowired Spring提供的注解, 默认值;
@Inject JSR-330提供的注解;
@Resource JSR-250提供的注解;

用在set方法或者属性上.

  1. Java配置

    在@Configuration修饰的Config类中, 利用@Bean来声明在容器中的Bean对象, 其他的对象不需要加注解.

Bean的Scope

Scope控制新建Bean. @Scope的值有以下几种:

== Singleton: == 一个Spring容器中只有一个Bean的实例, 是默认配置, 全容器共享.

== Prototype: == 每次调用新建一个实例

== Request: == Web项目中, 给每一个http request新建一个Bean实例

== Session: == Web项目中, 给每一个http session新建一个Bean实例

== GlobalSession: == 只在portal应用中有用, 给每一个global http session新建一个Bean实例

spring_boot入门的更多相关文章

  1. Spring_boot入门(1)

    Spring boot 将很多东西都集成在一起了,搭建maven项目的时候只需要引入很少的依赖就可以实现项目的搭建. 1.搭建maven项目结构 2.引入Spring boot 依赖 直接去官网找就可 ...

  2. Git将本地库内容推送到远程

    本地库与远程库的交互 1 .将本地库的内容推送到远程库 A.创建一个本地仓库 $ mkdir gitdemo B.初始化本地仓库 $ git init C.项目根目录下创建 .gitignore 文件 ...

  3. SpringBoot系列: RestTemplate 快速入门

    ====================================相关的文章====================================SpringBoot系列: 与Spring R ...

  4. SpringBoot学习(四)-->SpringBoot快速入门,开山篇

    Spring Boot简介 Spring Boot的目的在于创建和启动新的基于Spring框架的项目.Spring Boot会选择最适合的Spring子项目和第三方开源库进行整合.大部分Spring ...

  5. SpringBoot入门及深入

    一:SpringBoot简介 当前互联网后端开发中,JavaEE占据了主导地位.对JavaEE开发,首选框架是Spring框架.在传统的Spring开发中,需要使用大量的与业务无关的XML配置才能使S ...

  6. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  7. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  8. Oracle分析函数入门

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

  9. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

随机推荐

  1. B - Alyona and Mex

    Description Someone gave Alyona an array containing n positive integers a1, a2, ..., an. In one oper ...

  2. Flutter实战视频-移动电商-21.分类页_类别信息接口调试

    21.分类页_类别信息接口调试 先解决一个坑 取消上面的GridVIew的回弹效果.就是在拖这个gridview的时候有一个滚动的效果 physics: NeverScrollableScrollPh ...

  3. 精通BitmapData

    一.构造方法: var bmd:BitmapData=new BitmapData(200,100,true,0xffff0000); 参数说明: 1.宽 2.高 3.是否使用32位填充位图(包括al ...

  4. JQuery点击table获取点击行的数据

    $(function () {var TaskType = '';$("#data_table tr:gt(0)").click(function () { TaskType = ...

  5. 详细讲解:零知识证明 之 zk-SNARK 开篇

    作者:林冠宏 / 指尖下的幽灵 博客:http://www.cnblogs.com/linguanh/ 掘金:https://juejin.im/user/587f0dfe128fe100570ce2 ...

  6. C#基础知识回顾

    值类型和引用类型 值类型存在栈上,结构,枚举,数值类型 引用类型存在堆上,数组,类,接口,委托 把值类型存到引用类型中就是封箱,耗时 引用类型中的值类型是存在堆上,不是栈上,但是作为参数传递时,还是会 ...

  7. PJzhang:互联网是有国界

    猫宁!!! 参考链接:https://mp.weixin.qq.com/s/NFgps_5HBpl3ZjDoR5w8XA 上世纪90年代,互联网开始崛起,美国凭借超级大国的地位,先进技术优势,以美国公 ...

  8. 51Nod 1099 任务执行顺序 (贪心)

    #include <iostream> #include <algorithm> using namespace std; +; struct node{ int r, q; ...

  9. MongoDB 删除数据

    删除mongodb集合中的数据可以使用remove()函数.remove()函数可以接受一个查询文档作为可选参数来有选择性的删除符合条件的文档.remove()函数不会删除集合本身,同时,原有的索引也 ...

  10. celery (分布式系统)

    celery 介绍 Celery - 分布式任务队列. Celery 是一个简单.灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必需工具. ​ 它是一个专注于实时处理的任务队列,同 ...