spring-01
- Spring概述
- 概述
- Spring是一个开源框架
- 为企业级开发而生
- 是一个IOC[DI]和AOP容器框架
- 有许多优良特性
- 非侵入式:基于Spring开发的应用中的对象可以不依赖Spring的API。
- 依赖注入:DI--Dependency Injection,IOC是最经典实现。
- 面向切面编程:AOP
- 容器:Spring管理应用对象的生命周期。
- 组件化:Spring实现了使用简单的组件合成一个复杂的应用。使用XML和注解来组合这些对象。
- 一站式:在IOC和AOP的基础上可以整合各种企业级应用的开源框架和优秀的第三方类库。(实际上spring自身也提供了表示层SpringMVC和持久层的SpringJDBC)
- Spring模块
- 第一个spring
- 创建普通java项目,新建lib,添加jar包
- bean\context\core\expression 还有log包
- 在src目录下创建source folder,命名为config,config下新建applicationContext.xml
- 创建普通java项目,新建lib,添加jar包
- 第一个spring
2.创建com.ruixing.bean包,并穿件类
1.Employee.java
2.Dept.java
3.在pplicaltionContext.xml里面配置对象
1.通过set注入属性
2.通过构造器注入属性值 当name属性省略时,可以通过index属性指定为哪个属性赋值
3.为list类型属性赋值
4.为map属性赋值 entry标签,确定一组键值对
5.属性值为null
<property name="属性名">
<null></null>
public class TestSpring{
//根据配置文件创建容器对象
ApplicationContext context = new ClassPathXmlApplicationContext("application"); //方式1:根据<bean>的id值获取对象,返回类型是Object,需要强转
Employee e1 = (Employee) context.getBean("e1");
System.out.println("根据id获取:"+e1); //方式2:根据对象的类型获取,但是要求对象只有唯一一个
Employee e2 = context.getBean(Employee.class);
System.out.println("根据类型获取:"+e2); //方式3:根据id+类型 常用
Employee e3 = context.getBean("e1", Employee.class);
System.out.println("根据id和类型获取:"+e3);
}
2.FactoryBean(注意:BeanFactory是Spring的顶层接口,面向开发spring的开发人员,并不是使用spring的开发者)
1.Spring中有两种bean
* 普通bean
* 工厂bean:即FactoryBean
2. 普通bean和工厂bean的区别
* 普通bean就是该类的一个实体对象
* 工厂bean返回的是:getObject()返回的对象
3. 工厂bean必须实现org.springframework.beans.factory.FactoryBean接口
3.bean的作用域
类别
|
说明
|
singleton 默认的 | 在SpringIOC容器中仅存在一个Bean实例,也就是单例 |
propertype | 多例,每次调用getBean()都会返回一个新的实例 |
request | 每个HTTP请求,都会创建一个新的Bean |
session | 一次会话中共享一个bean,不同的Http session 使用不同的bean |
注意:当bean为单例的时候,会在容器初始化时,初始化单例的bean。而propertype时,IOC容器获取实例时,才会创建bean实例对象。
4. IOC容器的结构
spring-01的更多相关文章
- Spring 01基础
一.Spring作用:管理项目中各种业务Bean(service类.Dao类.Action类),实例化类,属性赋值 二.Spring IOC(Inversion of Control )控制反转,也被 ...
- Spring → 01:概述
一.了解Spring发展 Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE Dev ...
- Spring 01 概述
简介 Spring 是开源的轻量级 J2EE 框架 我们常说的 Spring 实际上是指 Spring Framework,它是 Spring 家族中的一个重要分支. 官方文档 https://doc ...
- Spring 01: Spring配置 + IOC控制反转 + Setter注入
简介 Spring框架是一个容器,是整合其他框架的框架 他的核心是IOC(控制反转)和AOP(面向切面编程),由20多个模块构成,在很多领域都提供了优秀的问题解决方案 特点 轻量级:由20多个模块构成 ...
- Spring 02: Spring接管下的三层项目架构
业务背景 需求:使用三层架构开发,将用户信息导入到数据库中 目标:初步熟悉三层架构开发 核心操作:开发两套项目,对比Spring接管下的三层项目构建和传统三层项目构建的区别 注意:本例中的数据访问层, ...
- c# 使用OracleParameter,同时使用replace函数
也算不上是手误吧,这个问题竟然困扰了我那么多天,就是更新代码的时候,使用replace,但是oracle在.net下竟然是不支持汉字,所谓使用类似update x set y='m' where y= ...
- Java基础(十)——枚举与注解
一.枚举 1.介绍 枚举类:类的对象只有有限个,确定的.当需要定义一组常量时,强烈建议使用枚举类.如果枚举类中只有一个对象,则可以作为单例模式的实现. 使用 enum 定义的枚举类默认继承了 java ...
- Spring知识点回顾(01)Java Config
Spring知识点回顾(01) 一.Java Config 1.服务和服务注入 2.Java 注解 :功能更强一些 3.测试验证 二.注解注入 1.服务和服务注入 2.配置加载 3.测试验证 三.总结 ...
- spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包
下载spring http://spring.io/ 最重要是在特征下面的这段话,需要注意: All avaible features and modules are described in the ...
- spring mvc注解版01
spring mvc是基于servlet实现的在spring mvc xml版中已经说过了,注解版相较于xml版更加简洁灵活. web项目的jar包: commons-logging-1.1.3.ja ...
随机推荐
- 启动线程用start方法
启动线程用start方法而不是用run方法 public static void main(String[] args) { Thread t=new Thread("Thread-TEST ...
- Doc2vec实现原理
论文来源:https://www.eecs.yorku.ca/course_archive/2016-17/W/6412/reading/DistributedRepresentationsofSen ...
- [HEOI2016/TJOI2016]字符串
嘟嘟嘟 今天复习一下SAM. lcp固然不好做,干脆直接翻过来变成后缀.首先答案一定满足单调性,所以我们二分lcp的长度\(mid\),然后判断\(s[d \ldots d + mid - 1]\)是 ...
- [AH2017/HNOI2017]影魔
嘟嘟嘟 这题真的挺神的,我是真没想出来. 洛谷的第一篇题解说的非常妙,实在是佩服. 就是我们首先预处理出对于第\(i\)个数,在\(i\)左边比第一个比\(i\)大的数\(l_i\),在\(i\)右边 ...
- springboot配置文件中使用当前配置的变量
在开发中,有时我们的application.properties某些值需要重复使用,比如配置redis和数据库或者mongodb连接地址,日志,文件上传地址等,且这些地址如果都是相同或者父路径是相同的 ...
- Python这么强大, 怎样才能快速入坑?
作为一种年轻的编程语言,Python为何能在短短几年的时间内就以迅雷不及掩耳之势驰骋编程界?答案很简单,在人工智能时代,AlphaGo 都在使用的 Python语言,是最接近 AI 的编程语言. 随着 ...
- Ext中 grid 设置行样式
//设置样式 JS var SetRowClass = function(record, rowIndex, rowParams, store) { if (record.data.status ...
- SQL Server-索引故事的遥远由来,原来是这样的?(二十八)
前言 前段时间工作比较忙,每天回来也时不时去写有关ASP.NET Core的文章,无论是项目当中遇到的也好还是自学的也好都比较严谨的去叙述,喜欢分享,乐于分享这是我一直以来的态度,当然从中也会有些许错 ...
- Python通过pip方式安装第三方模块的两种方式
一:环境 python3.6 windows 10 二:常用命令 如果直接执行pip命令报错,说明pip不在path环境变量中 解决方法: python -m pip list 以下默认可直接使用pi ...
- Java执行JavaScript脚本破解encodeInp()加密
一:背景 在模拟登录某网站时遇到了用户名和密码被JS进行加密提交的问题,如图: 二:解决方法 1.我们首先需要获得该JS加密函数,一般如下: conwork.js var keyStr = " ...