Spring介绍

Spring一站式框架

  1. 正是因为spring框架性质是属于容器性质的.
  2. 容器中装什么对象就有什么功能.所以可以一站式.
  3. 不仅不排斥其他框架,还能帮其他框架管理对象.
  4. aop支持
  5. ioc思想
  6. spring jdbc
  7. aop 事务
  8. 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相关推荐

  1. IDEA下——Spring入门程序

    创建一个Maven的项目,我的项目结构如下: 在pom文件里写下需要导入的依赖: <?xml version="1.0" encoding="UTF-8" ...

  2. spring入门详细教程(五)

    前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...

  3. Spring入门详细教程(四)

    前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...

  4. Spring入门详细教程(三)

    前言 本篇紧接着spring入门详细教程(二),建议阅读本篇前,先阅读第一篇和第二篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/101 ...

  5. Spring入门详细教程(二)

    前言 本篇紧接着spring入门详细教程(一),建议阅读本篇前,先阅读第一篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/1016553 ...

  6. Spring入门介绍:

    Spring入门介绍 Spring诞生: 创建Spring的目的就是用来替代更加重量级的的企业级Java技术 简化Java的开发 基于POJO轻量级和最小侵入式开发 通过依赖注入和面向接口实现松耦合 ...

  7. Spring入门5.事务管理机制

    Spring入门5.事务管理机制 20131126 代码下载 : 链接: http://pan.baidu.com/s/1kYc6c 密码: 233t 回顾之前的知识,Spring 最为核心的两个部分 ...

  8. “Spring入门”教程系列

    大家好, 我很高兴向您介绍"Spring入门"教程系列! 这是一系列文章,最初由我们的JCG合作伙伴 Michal Vrtiak在vrtoonjava博客上撰写 . 本系列中将逐步 ...

  9. Spring入门与常用配置

    什么是Spring Spring:SE/EE开发的一站式框架. 一站式框架:有EE开发的每一层解决方案.  WEB层 :SpringMVC   Service层 :Spring的Bean管理,Spri ...

  10. Spring入门示例及相关概念介绍

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Spri ...

最新文章

  1. VScode的撤销操作的快捷键
  2. 属性匹配工具_测试工具链——高效构建Mock服务
  3. SQL Server 中update的小计
  4. 国内丨中国人工智能标准化体系建设提速
  5. Python :集合推导式和字典推导式
  6. 仿百度文库方案[openoffice.org 3+swftools+flexpaper](八) 之 常见问题集FAQ
  7. 边缘计算精华问答 | 边缘计算有哪些应用场景?
  8. 2021年国货彩妆品牌推广营销趋势
  9. (转)Java任务调度框架Quartz入门教程指南(三)任务调度框架Quartz实例详解深入理解Scheduler,Job,Trigger,JobDetail...
  10. 双11节后“回血” 85后们来转转上“摆地摊”出售 闲置物品
  11. 如何查看电脑是32位还是64位的
  12. ZeroC IceBox介绍及demo构建
  13. 嵌入式Linux环境变量如何参与程序运行
  14. Latex转word的一款软件-Pandoc
  15. 计算机打印怎么取消,电脑怎么取消打印任务_打印机取消打印任务的详细步骤...
  16. SOLIDWORKS启动时出现脚本错误问题
  17. Android各版本的版本号、版本名、API及发布时间
  18. perl 产生随机数
  19. VB.net byval和byref
  20. 两个一维数组相加求和

热门文章

  1. WordPress前台后台出现一片空白的原因以及解决办法
  2. LocalReport Print with C# C#打印RDLC
  3. [BZOJ 3629][JLOI2014]聪明的燕姿
  4. [转] Mysql命令基础
  5. 【bzoj2693】jzptab 莫比乌斯反演+线性筛
  6. less css用法思维导图
  7. win7下安装Oracle10g解决方案
  8. 在save中重写 AdminModel 方法 和 Signals
  9. matlab神经网络每次相差大,GA-BP网络为什么每次训练的结果相差很大呢?
  10. unity循环滚动列表_【unity游戏开发】LoopScrollRect组件