IOC入门
Spring六大模块
1、SpringCore spring的核心功能:IOC容器,解决对象的创建及依赖关系
2、SpringWeb spring对Web模块的支持
3、SpringDAO spring对JDBC的支持
4、SpringORM spring对ORM的支持
5、SpringAOP 切面编程
6、SpringEE spring对JavaEE其他模块的支持
准备工作:从Spring官网上下载Spring的jar包,我这里下载的是4.1.6的版本 (这里分享一下http://pan.baidu.com/s/1gf67MDl,如果链接失效就去官网下载。)
从SpringCore开始
1、在eclipse中建立一个web项目,命名为HelloSpring.
2、导入SpringCore需要的jar包
spring-core-4.1.6.RELEASE.jar Spring核心功能
spring-context-4.1.6.RELEASE.jar Spring上下文节点
spring-expression-4.1.6.RELEASE.jar Sring表达示相关
spring-beans-4.1.6.RELEASE.jar Spring bean节点
commons-logging-1.1.3.jar Spring依赖的日志包,该包需要单独下载
3、Spring配置文件
applicationContext.xml
<!--在src下建包命名为com.isoftstone.xml.在该包下新建一个xml文件命名为applicationContext.xml 这里需要引入applicationContext的约束,其位置在
spring-framework-4.1.6\spring-framework-4.1.6.RELEASE\docs\spring-framework-reference\htmlsingle\index.html 这是一个schema约束,可直接搜索xmlns:,这里找的是一个带p名称空间的。搜索xmlns:p找到需要的约束
--> <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
</beans>
4、声明一个实体类
package com.isoftstone.bean;
public class User {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
5、声名一个action,但此时对象的创建交由Spring完成
<!-- IOC容器配置,要创建的所有对象都配置在这里 -->
<bean id="user" class="com.isoftstone.bean.User"></bean>
@Test
public void testIOC(){
/*new创建对象*/
//User user = new User(); //现在把对象的创建交给IOC容器
Resource resource = new ClassPathResource("com/isoftstone/xml/applicationContext.xml"); //创建容器对象(Bean的工厂)
BeanFactory factory = new XmlBeanFactory(resource); //得到容器创建的对象
User user = (User)factory.getBean("user");
System.out.println(user.getId());
} //方法二,这种方法更方便
@Test
public void testIC(){
ApplicationContext ac = new ClassPathXmlApplicationContext("com/isoftstone/xml/applicationContext.xml");
User user = (User)ac.getBean("user");
System.out.println(user);
}
IOC创建对象的细节
1、单例与多例
<!--IOC默认以单例模式创建对象
在bean里还有一个属性是 scope="singleton"。单例模式下可以不用写
如果是多例模式就需要加上 scope="prototype"-->
<bean id="user" class="com.isoftstone.xml.User" scope="prototype"> <!--多例模式下创建对象--> 2、对象的创建时机
单例模式下在启动(容器初始化前),就已经创建了bean,且整个应用只有一个
多例模式下在用到对象的时候才创建对象 3、懒加载 lazy-init
lazy-init="true" 配合单例模式使用,在用到对象的时候再创建对象 4、初始化方法与销毁方法
init-method="init_user"
destory-method="destory_user"
在用这两个属性前需要先在User实体类中编写好对应的方法
IOC入门的更多相关文章
- Spring框架[一]——spring概念和ioc入门(ioc操作xml配置文件)
Spring概念 spring是开源的轻量级框架(即不需要依赖其他东西,可用直接使用) spring核心主要两部分 aop:面向切面编程,扩展功能不是修改源代码来实现: ioc:控制反转,比如:有一个 ...
- Spring入门1. IoC入门实例
Spring入门1. IoC入门实例 Reference:Java EE轻量级解决方案——S2SH 前言: 之前学习过关于Spring的一点知识,曾经因为配置出现问题,而总是被迫放弃学习这些框架技术, ...
- 【Spring】---【IOC入门案例】
第一步:导入Jar包 第二步:创建类,在类里面创建方法 public class User { public void add(){ System.out.println("-------- ...
- 二 Spring的IOC入门,环境搭建,Spring测试类
IOC:inversion of Control 控制反转,Spring框架的核心.削减计算机程序的耦合问题,把对象(例如JDBC)的创建权交给Spring. IOC的两种类型: 依赖注入: 依赖查 ...
- 1、Spring简介及IOC入门案例
一.Spring框架介绍 1.介绍 Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅仅限于服务 ...
- Spring IoC入门
------------------siwuxie095 Spring IoC 环境搭建 1.先下载相关库文件,下载链接 ...
- IOC入门1
1.配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:/ ...
- Spring初识及其IOC入门
一.框架 框架是一些类和接口的集合,它一个半成品,已经对基础的代码进行了封装并提供相应的API,开发者在使用框架时直接调用封装好的api可以省去很多代码编写,从而提高工作效率和开发速度. 二.Spri ...
- Spring.Net的IOC入门
1.构造器注入 namespace Spring.Net { class Program { //构造器注入 static void Main(string[] args) { IApplicatio ...
随机推荐
- 【codeforces666E】Forensic Examination 广义后缀自动机+树上倍增+线段树合并
题目描述 给出 $S$ 串和 $m$ 个 $T_i$ 串,$q$ 次询问,每次询问给出 $l$ .$r$ .$x$ .$y$ ,求 $S_{x...y}$ 在 $T_l,T_{l+1},...,T_r ...
- iOS程序执行顺序 AppDelegate及 UIViewController 的生命周期
iOS程序的启动执行顺序 AppDelegate 及 UIViewController 的生命周期 iOS应用程序的状态切换很重要,而UIViewControler对于iOS这种MVC模式来说尤为重要 ...
- BZOJ2648 SJY摆棋子(KD-Tree)
板子题. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> # ...
- 【刷题】LOJ 6009 「网络流 24 题」软件补丁
题目描述 某公司发现其研制的一个软件中有 \(n\) 个错误,随即为该软件发放了一批共 \(m\) 个补丁程序.每一个补丁程序都有其特定的适用环境,某个补丁只有在软件中包含某些错误而同时又不包含另一些 ...
- Kruskal重构树学习笔记+BZOJ3732 Network
今天学了Kruskal重构树,似乎很有意思的样子~ 先看题面: BZOJ 题目大意:$n$ 个点 $m$ 条无向边的图,$k$ 个询问,每次询问从 $u$ 到 $v$ 的所有路径中,最长的边的最小值. ...
- (转)Maven学习总结(三)——使用Maven构建项目
孤傲苍狼 只为成功找方法,不为失败找借口! Maven学习总结(三)——使用Maven构建项目 maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使用maven构建项目的 ...
- Linux 之 crontab 使用
定时任务 任务调度的crond常驻命令crond 是linux用来定期执行程序的命令.当安装完成操作系统之后,默认便会启动此任务调度命令.crond命令每分锺会定期检查是否有要执行的工作,如果有要执行 ...
- SQL记录-PLSQL游标
PL/SQL游标 Oracle会创建一个存储区域,被称为上下文区域,用于处理SQL语句,其中包含需要处理的语句,例如所有的信息,行数处理,等等. 游标是指向这一上下文的区域. PL/SQL通过控制光标 ...
- 转载自知乎大神---this 的值到底是什么?一次说清楚
你可能遇到过这样的 JS 面试题: var obj = { foo: function(){ console.log(this) } } var bar = obj.foo obj.foo() // ...
- 一个简单的二叉搜索树(C++实现)
参考:http://www.cnblogs.com/skywang12345/p/3576373.html 这里主要就是自己实现的代码,删除动作有点不一样: #ifndef __BSTREE_H__ ...