spring 入门 1
Spring介绍
Spring一站式框架
- 正是因为spring框架性质是属于容器性质的.
- 容器中装什么对象就有什么功能.所以可以一站式.
- 不仅不排斥其他框架,还能帮其他框架管理对象.
- aop支持
- ioc思想
- spring jdbc
- aop 事务
- junit 测试支持
Spring搭建
1.导包
2.创建一个对象
package cn.zhli13.bean;public class User {private String name;private String add; public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAdd() {return add;}public void setAdd(String add) {this.add = add;}
}
3.书写配置注册对象到容器
位置任意(建议放到src下)
配置文件名任意(建议applicationContext.xml)
导入schema约束
注册对象到容器(applicationContext.xml配置文件)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://www.springframework.org/schema/beans"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd "><bean name="user" class="cn.zhli13.bean.User"></bean>
</beans>
4、编写测试类
@Test
public void name() {ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");User bean = ac.getBean(User.class);System.out.println(bean);
}
Spring 概念
1.思想
IOC Inverse of Control 控制反转
将我们创建对象的方式反转了
以前对象的创建时由我们开发人员自己维护,包括依赖关系也是自己注入
使用了spring之后,对象的创建以及依赖关系可以由spring完成创建以及注入。
控制反转就是反转了对象的创建方式,从我们自己创建反转给了程序(spring)。
DI Dependency Injection 依赖注入
实现IOC思想需要DI支持
注入方式:set方法注入构造方法注入字段注入
注入类型:值类型注入 8大基本数据类型引用类型注入 将依赖带下注入
2.applicationContext&BeanFactory
BeanFactory接口(在资源匮乏的环境可以使用BeanFactory,基本用不到)
spring原始接口.针对原始接口的实现类功能较为单一
BeanFactory接口实现类的容器.特点是每次在获得对象时才会创建对象
ApplicationContext
每次容器启动时就会创建容器中配置的所有对象.并提供更多功能
丛类路径下加载配置文件:ClassPathXmlApplicationContext(常用)
从硬盘绝对路径下加载配置件:FileSystemXmlApplicationContext("d:/xxx/yyy/xxx")
spring配置详解
1.Bean元素
<!-- Bean元素:使用该元素描述需要spring容器管理的对象class属性:被管理对象的完整类名.name属性:给被管理的对象起个名字.获得对象时根据该名称获得对象. 可以重复.可以使用特殊字符.id属性: 与name属性一模一样. 名称不可重复.不能使用特殊字符.结论: 尽量使用name属性.scope属性:singleton(默认值):单例对象.被标识为单例的对象在spring容器中只会存在一个实例prototype:多例原型.被标识为多例的对象,每次再获得才会创建.每次创建都是新的对象.整合struts2时,ActionBean必须配置为多例的.request:web环境下.对象与request生命周期一致.session:web环境下,对象与session生命周期一致.生命周期属性:init-method:配置一个方法作为生命周期初始化方法.spring会在对象创建之后立即调用.destroy-method:配置一个方法作为生命周期的销毁方法.spring容器在关闭并销毁所有容器中的对象之前调用.-->
<bean name="user"class="cn.zhli13.bean.User"scope="prototype"init-method="init"destroy-method="beforeDestory"></bean>
spring创建对象的方式
1.空参构造方式
<bean name="user" class="cn.zhli13.bean.User"></bean>
2.静态工厂(了解)
public class UserFactory{public static User createUser(){return new User();}
}
<bean name="user2" class="cn.zhli13.bean.UserFactory" factory-method="createUser"></bean>
3.实例工厂(了解)
public User createUser2(){return new User();
}
<bean name="user3" factory-bean="userFactory" factory-method="createUser2"></bean>
<!--创建工场实例-->
<bean name="userFactory" class="cn.zhli13.bean.UserFactory"></bean>
4.多模块配置
<!--主配置文件导入其他spring配置文件-->
<import resource="cn/zhli13/xxxxx/xxx/applicationContext.xml" />
spring属性注入
1.注入方式
<!-- set方式注入: -->
<bean name="user" class="cn.zhli13.bean.User" ><!--值类型注入: 为User对象中名为name的属性注入tom作为值 --><property name="name" value="tom" ></property><property name="age" value="18" ></property><!-- 引用类型注入: 为car属性注入下方配置的car对象 --><property name="car" ref="car" ></property>
</bean>
<!-- 将car对象配置到容器中 -->
<bean name="car" class="cn.zhli13.bean.Car" ><property name="name" value="兰博基尼" ></property><property name="color" value="黄色" ></property>
</bean><!-- 构造函数注入 -->
<bean name="user2" class="cn.zhli13.bean.User" ><!-- name属性: 构造函数的参数名 --><!-- index属性: 构造函数的参数索引 --><!-- type属性: 构造函数的参数类型--><constructor-arg name="name" index="0" type="java.lang.Integer" value="999" ></constructor-arg><constructor-arg name="car" ref="car" index="1" ></constructor-arg>
</bean>
<!-- 复杂类型注入 -->
<bean name="cb" class="cn.zhli13.bean.CollectionBean" ><!-- 如果数组中只准备注入一个值(对象),直接使用value|ref即可 <property name="arr" value="tom" ></property>--><!-- array注入,多个元素注入 --><property name="arr"><array><value>tom</value><value>jerry</value><ref bean="user4" /></array></property><!-- 如果List中只准备注入一个值(对象),直接使用value|ref即可 <property name="list" value="jack" ></property>--><property name="list" ><list><value>jack</value><value>rose</value><ref bean="user3" /></list></property><!-- map类型注入 --><property name="map" ><map><entry key="url" value="jdbc:mysql:///crm" ></entry><entry key="user" value-ref="user4" ></entry><entry key-ref="user3" value-ref="user2" ></entry></map> </property><!-- prperties 类型注入 --><property name="prop" ><props><prop key="driverClass">com.jdbc.mysql.Driver</prop><prop key="userName">root</prop><prop key="password">1234</prop></props></property>
</bean>
spring 入门 1相关推荐
- IDEA下——Spring入门程序
创建一个Maven的项目,我的项目结构如下: 在pom文件里写下需要导入的依赖: <?xml version="1.0" encoding="UTF-8" ...
- spring入门详细教程(五)
前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...
- Spring入门详细教程(四)
前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...
- Spring入门详细教程(三)
前言 本篇紧接着spring入门详细教程(二),建议阅读本篇前,先阅读第一篇和第二篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/101 ...
- Spring入门详细教程(二)
前言 本篇紧接着spring入门详细教程(一),建议阅读本篇前,先阅读第一篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/1016553 ...
- Spring入门介绍:
Spring入门介绍 Spring诞生: 创建Spring的目的就是用来替代更加重量级的的企业级Java技术 简化Java的开发 基于POJO轻量级和最小侵入式开发 通过依赖注入和面向接口实现松耦合 ...
- Spring入门5.事务管理机制
Spring入门5.事务管理机制 20131126 代码下载 : 链接: http://pan.baidu.com/s/1kYc6c 密码: 233t 回顾之前的知识,Spring 最为核心的两个部分 ...
- “Spring入门”教程系列
大家好, 我很高兴向您介绍"Spring入门"教程系列! 这是一系列文章,最初由我们的JCG合作伙伴 Michal Vrtiak在vrtoonjava博客上撰写 . 本系列中将逐步 ...
- Spring入门与常用配置
什么是Spring Spring:SE/EE开发的一站式框架. 一站式框架:有EE开发的每一层解决方案. WEB层 :SpringMVC Service层 :Spring的Bean管理,Spri ...
- Spring入门示例及相关概念介绍
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Spri ...
最新文章
- VScode的撤销操作的快捷键
- 属性匹配工具_测试工具链——高效构建Mock服务
- SQL Server 中update的小计
- 国内丨中国人工智能标准化体系建设提速
- Python :集合推导式和字典推导式
- 仿百度文库方案[openoffice.org 3+swftools+flexpaper](八) 之 常见问题集FAQ
- 边缘计算精华问答 | 边缘计算有哪些应用场景?
- 2021年国货彩妆品牌推广营销趋势
- (转)Java任务调度框架Quartz入门教程指南(三)任务调度框架Quartz实例详解深入理解Scheduler,Job,Trigger,JobDetail...
- 双11节后“回血” 85后们来转转上“摆地摊”出售 闲置物品
- 如何查看电脑是32位还是64位的
- ZeroC IceBox介绍及demo构建
- 嵌入式Linux环境变量如何参与程序运行
- Latex转word的一款软件-Pandoc
- 计算机打印怎么取消,电脑怎么取消打印任务_打印机取消打印任务的详细步骤...
- SOLIDWORKS启动时出现脚本错误问题
- Android各版本的版本号、版本名、API及发布时间
- perl 产生随机数
- VB.net byval和byref
- 两个一维数组相加求和
热门文章
- WordPress前台后台出现一片空白的原因以及解决办法
- LocalReport Print with C# C#打印RDLC
- [BZOJ 3629][JLOI2014]聪明的燕姿
- [转] Mysql命令基础
- 【bzoj2693】jzptab 莫比乌斯反演+线性筛
- less css用法思维导图
- win7下安装Oracle10g解决方案
- 在save中重写 AdminModel 方法 和 Signals
- matlab神经网络每次相差大,GA-BP网络为什么每次训练的结果相差很大呢?
- unity循环滚动列表_【unity游戏开发】LoopScrollRect组件