Sqring核心概念
Spring 是大规模企业级框架,用户数量多,数据规模大,功能众多,业务复杂,
性能和安全要求高 灵活多变
Spring框架是轻量级的框架,javaEE的春天,当前主流的框架,一站式的企业应用开发框架
Spring 目标:是使现有的技术更加易用,推进代码的最佳实践
Spring 内容:IOC容器 控制反转。
Aop实现 面向切面编程
数据访问支持 1 简化jdbc/orm框架
2 声明式事务
1. Spring容器的主要目的:降低业务逻辑层和其他层的耦合度(IOC)
2. Spring容器 用来创建和管理(管理对象和对象之间的关系)程序中的所有对象的实例
3. 非侵入式框架轻量级开源框架
侵入式余姚我们显示使用框架中的API才能实现某种功能。--框架强行的将功能推送给我们。
非侵入式不需要改变我们之间的编码。--我们资源从框架中获取想要的功能。
Spring的核心 ( IOC ,AOP )
IOC(Inversin Of Control) 控制反转
在没有使用框架之前我们都是在Service 层创建dao的实例对象!控制权在service !
现在我们使用了Spring框架,创建dao的实例对象---使用Spring容器 控制权在 Spring容器!
这种控制权从程序的代码中转到Spring容器的行为就称为 IOC 控制反转
studentDao dao=null;
public void setDao(StudentDao dao){
this.dao=dao;
}
Spring 容器给我们创建了对象的实例,然后通过setxxx(); 把对象的实例给我们需要的地方,这个过程称为
DI依赖注入 (Dependency Injection)
下面我们看一个Spring的小例子:
public class HelloSpring {
private String who;//定义变量who 他的值通过Spring框架进行注入
public HelloSpring() {
}
public void print(){
System.out.println("Hello"+this.getWho()+"okokokok!");
}
public HelloSpring(String who) {
this.who = who;
}
@Override
public String toString() {
return "HelloSpring{" +
"who='" + who + '\'' +
'}';
}
public String getWho() {
return who;
}
public void setWho(String who) {
this.who = who;
}
}
applicationContext.xml Spring容器 <!--bean 对象声明Spring创建的对象实例--> 通过Spring框架进行注入
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="HelloSpring" class="cn.bean.HelloSpring">
<!-- 未声明的实例对象的类 类的位置和类名-->
<property name="who" value="Spring hhahhahah"></property>
<!-- name 被指定赋值的属性名set 后的 。value 赋值的内容 -->
</bean>
<!--bean 对象声明Spring创建的对象实例-->
public class SpringOneTest {
@Test
public void SpringHello(){
ApplicationContext context=new ClassPathXmlApplicationContext("ApplicationContext.xml");
//Spring 提供的接口 实现类 配置文件路径
HelloSpring helloSpring = (HelloSpring)context.getBean("HelloSpring");//id
helloSpring.print();
}
}
运行结果

Sqring核心概念的更多相关文章
- 领域驱动设计(DDD)部分核心概念的个人理解
领域驱动设计(DDD)是一种基于模型驱动的软件设计方式.它以领域为核心,分析领域中的问题,通过建立一个领域模型来有效的解决领域中的核心的复杂问题.Eric Ivans为领域驱动设计提出了大量的最佳实践 ...
- Javascript本质第一篇:核心概念
很多人在使用Javascript之前都至少使用过C++.C#或Java,面向对象的编程思想已经根深蒂固,恰好Javascript在语法上借鉴了Java,虽然方便了Javascript的入门,但要深入理 ...
- [程序设计语言]-[核心概念]-02:名字、作用域和约束(Bindings)
本系列导航 本系列其他文章目录请戳这里. 1.名字.约束时间(Binding Time) 在本篇博文开始前先介绍两个约定:第一个是“对象”,除非在介绍面向对象语言时,本系列中出现的对象均是指任何可以有 ...
- spring技术核心概念纪要
一.背景 springframework 从最初的2.5版本发展至今,期间已经发生了非常多的修正及优化.许多新特性及模块的出现,使得整个框架体系显得越趋庞大,同时也带来了学习及理解上的困难. 本文阐述 ...
- ElasticSearch学习笔记-01 简介、安装、配置与核心概念
一.简介 ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便.支持通过HTTP使用JSON进 ...
- Playmaker Input篇教程之引入的核心概念
Playmaker Input篇教程之引入的核心概念 Playmaker Input引入的核心概念 Playmaker引入了4个核心概念:状态机.动作.变量和事件.了解它们是学习操作Playmaker ...
- Maven的几个核心概念
POM (Project Object Model) 一个项目所有的配置都放置在 POM 文件中:定义项目的类型.名字,管理依赖关系,定制插件的行为等等.比如说,你可以配置 compiler 插件让它 ...
- 刀哥多线程GCD核心概念gcd
GCD GCD 核心概念 将任务添加到队列,并且指定执行任务的函数 任务使用 block 封装 任务的 block 没有参数也没有返回值 执行任务的函数 异步 dispatch_async 不用等待当 ...
- cocos2d-x一些核心概念截杀
Cocos2d-x中有很多概念,这些概念很多来源于动画.动漫和电影等行业,例如:导演.场景和层等概念,当然也有些有传统的游戏的概念.Cocos2d-x中核心概念:导演, 场景,层,节点,精灵,菜单动作 ...
随机推荐
- 小程序-formdata传参
项目背景,后端接口要求formData传参: 在util.js文件中封装转化函数,代码如下: const formatTime = date => { const year = date.get ...
- vue常用插件汇总
UI-框架element - 饿了么出品的Vue2的web UI工具套件 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开源 UI 组件库 Keen-UI - 轻量 ...
- centos7 cpanm安装,及perl模块安装
1. cpan安装 yum安装 yum install perl-App-cpanminus.noarch 注意:安装完成后,root及非root用户都可以使用cpanm安装模块,root用户直接用c ...
- React对比Vue(一些小细节的差异)
@1===>发现一个神奇的地方在对数组进行增加删除的时候 react中一个输入框点击enter键,然后数组push,然后渲染 <input ref='valInput' onKeyUp={ ...
- Python对list列表及子列表进行排序
python代码,对list进行升序排序,所有子列表也要进行排序 def iterList(listVar): listVar = sorted(listVar) for i,v in enumera ...
- vuex的使用二
1.先看项目的目录结构 2.在main.js里需要引入store这个文件并挂在实例上 import store from './store/store' ............ new Vue({ ...
- 219. 存在重复元素 II
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k. 示例 1: 输入: nums = ...
- java中的锁之Lock接口与Condition接口
一.Lock源码. 1.是一个接口.一共有6个方法. 2.方法详细如下: (1)当前线程尝试获取锁.结果分两种情况,一是成功获取到锁,则返回:二是获取锁失败,则一直等待.不响应中断请求. (2)当前线 ...
- python pillow
https://www.cnblogs.com/morethink/p/8419151.html#%E7%9B%B4%E6%8E%A5%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA ...
- 5.无监督学习-DBSCAN聚类算法及应用
DBSCAN方法及应用 1.DBSCAN密度聚类简介 DBSCAN 算法是一种基于密度的聚类算法: 1.聚类的时候不需要预先指定簇的个数 2.最终的簇的个数不确定DBSCAN算法将数据点分为三类: 1 ...