开发一个简单的Spring项目:

一、开发环境搭建:
1、引入源码jar :3.0以前的版本含有依赖jar包,3.0以后只有spring的核心jar

core的jar包
commons-logging-1.1.3.jar
spring-beans-3.2.5.RELEASE.jar
spring-context-3.2.5.RELEASE.jar
spring-core-3.2.5.RELEASE.jar
spring-expression-3.2.5.RELEASE.jar

jar包可以在官网下载:http://repo.spring.io/release/org/springframework/spring/

2、创建一个xml文档,命名为applicationContext.xml

导入必须的schema

     <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>

这些都需要,就不必删减了。留着吧。

3、创建例子

user

 package com.liuyang.spring;

 public class User {
String _id;
String _username; public User() {
System.out.println("========创建类========");
} public String get_id() {
return _id;
} public void set_id(String _id) {
this._id = _id;
} public String get_username() {
return _username;
} public void set_username(String _username) {
this._username = _username;
}
}

4、创建xml

 <?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">
<bean id="user" class="com.liuyang.spring.User"></bean> </beans>

5、创建测试类

 @SuppressWarnings({ "resource", "deprecation" })
public class TestApplication { // 通过工厂类创建IOC工程类对象
@Test
public void test1() {
// 把对象创建交给IOC
Resource resource = new ClassPathResource("com/liuyang/spring/applicationContext.xml");
// 创建器对象
BeanFactory beanFactory = new XmlBeanFactory(resource);
// 的到容器对象 IOC=工厂类+ApplicationContext.xml
User user = (User) beanFactory.getBean("user"); System.out.println(user);
} // 2.直接获取ApplicationContext.xml()方便
@Test
public void test2() { ApplicationContext aContext = new ClassPathXmlApplicationContext(
"com/liuyang/spring/applicationContext.xml"); // 的到容器对象 IOC=工厂类+ApplicationContext.xml
User user = (User) aContext.getBean("user"); System.out.println(user);
} @Test
public void test3() {
/*
* (1)修改
* <bean id="user" class="com.liuyang.spring.User" scope="singleton"></bean>
* // scope="singleton" scope属性的singleton(单利模式)加不加无影响,默认是单例模式 使用在与[service/dao/工具类]连接操作这样的连接类只需创建一次的情况
* (2)scope="prototype" 多例 用途:(1)用在类似[action对象]这样有多次创建对象时使用 (2)还有用到对象时创建 启动容器之前,整个应用只有一个
* (3)是否延迟创建
* scope="singleton" 才有效
* (4)懒加载问题 lazy-init="false" 默认为false, 使用懒加载就是在用到对象的时候才创建对象,改为true的时候才有效
* 不延迟创建,
* 即在启动时候就创建对象 lazy-init="true" 延迟初始化, 在用到对象的时候才创建对象
*
*
* (5) lazy-init要与scope="single"一起使用 当lazy-init="true"+scope="singleton" 效果跟单独设置scope="prototype"一样
46 lazy-init对多例无影响
*/
ApplicationContext aContext = new ClassPathXmlApplicationContext(
"com/liuyang/spring/applicationContext.xml");
System.out.println("========创建容器========");
// 得到容器对象 IOC=工厂类+ApplicationContext.xml
User user1 = (User) aContext.getBean("user");
User user2 = (User) aContext.getBean("user"); System.out.println(user1);
System.out.println(user2);
} }

单例模式:在容器创建之前就创建了对象,而且只创建一次

多例模式:在容器创建之后创建类,可以多次创建类

初始化和销毁测试:

在user类中加入两个方法

 public class User1 {
String _id;
String _username; public void init_user() {
System.out.println("创建对象之后,初始化");
} public void destroy_user() {
System.out.println("IOC容器销毁对象,user对象回收");
} public User1() {
System.out.println("========User1创建类========");
} public String get_id() {
return _id;
} public void set_id(String _id) {
this._id = _id;
} public String get_username() {
return _username;
} public void set_username(String _username) {
this._username = _username;
} }

然后再.xml文档中加入两个属性init-method和destroy-method="destroy_user"

 <?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">
<bean id="user" class="com.liuyang.spring.User" scope="singleton" lazy-init="true"></bean>
<bean id="user1" class="com.liuyang.destroy.User1" init-method="init_user"
destroy-method="destroy_user"></bean> </beans>

编写测试类:

 @Test
public void test2() { ClassPathXmlApplicationContext aContext = new ClassPathXmlApplicationContext(
"com/liuyang/destroy/applicationContext.xml");
System.out.println("======User1==创建容器========");
// 的到容器对象 IOC=工厂类+ApplicationContext.xml
User1 user1 = (User1) aContext.getBean("user1"); System.out.println(user1);
aContext.destroy();
}

使用场景:

创建对象之后,初始化/销毁
 init-method="init_user" 【对应对象的init_user方法,在对象创建爱之后执行 】
 destroy-method="destroy_user" 【在调用容器对象的destriy方法时候执行,(容器用实现类)】

Spring框架总结(二)的更多相关文章

  1. OSGI企业应用开发(五)使用Blueprint整合Spring框架(二)

    上篇文章中,我们开发了一个自定义的Bundle,接着从网络中下载到Spring和Blueprint的Bundle,然后复制到DynamicRuntime项目下. 需要注意的是,这些Bundle并不能在 ...

  2. 深入学习Spring框架(二)- 注解配置

    1.为什么要学习Spring的注解配置? 基于注解配置的方式也已经逐渐代替xml.所以我们必须要掌握使用注解的方式配置Spring. 关于实际的开发中到底使用xml还是注解,每家公司有着不同的使用习惯 ...

  3. Spring框架学习(二)

    一.依赖注入的三种注入方式 Spring框架为我们提供了三种注入方式:set注入.构造方法注入和接口注入. 1.set注入 规律:无论给什么赋值,配置文件中<property>标签的nam ...

  4. Spring 框架(二)

    1AOP 1.1 AOP介绍 1.1.1 什么是AOP l 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功 ...

  5. Spring框架(二)

    Spring反射机制: 1, 通过spring来获取一个对象的实例 <bean id="user" class="com.model.User"> ...

  6. Spring框架系列(二)--装配和注入Bean

    企业日常开发中,几乎都是Spring系的框架,无论是SSM.还是现在大火的SpringBoot+JPA/MyBatis,使用最大的目的就是简化开发 基本模块: 核心容器:Beans.Core.Cont ...

  7. 使用Spring框架入门二:基于注解+XML配置的IOC/DI的使用

    一.简述 本文主要讲使用注解+xml配合使用的几种使用方式.基础课程请看前一节. 二.步骤 1.为Pom.xml中引入依赖:本例中使用的是spring-context包,引入此包时系统会自动导入它的依 ...

  8. spring框架学习(二)——注解方式IOC/DI

    什么是注解 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分 ...

  9. Spring框架学习总结(上)

    目录 1.Spring的概述 2.Spring的入门(IOC) 3.Spring的工厂类 4.Spring的配置 5.Spring的属性注入 6.Spring的分模块开发的配置 @ 1.Spring的 ...

随机推荐

  1. JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招

    一般商业网站都有一个语言的需求,就是为了照顾使用正体中文的国人,会特地提供一个切换到正体中文的选项(或曰“繁体中文”).传统做法是在服务端完成的,即通过某些控件或者过滤器转换文本语言.这里笔者介绍一种 ...

  2. Web项目中定时任务无法绑定SessionFactory的问题解决

    正常我们在web开发中,由于需要在页面上或者脱离事务时使用到懒加载对应的对象,一般都采用Open Session In View模式.   Open Session In View   OpenSes ...

  3. 网络 、osi 七层模型、tcp/ip 五层参考

    网络 网络的本质就是通讯,比特传输 网络拓扑 物理布局pc -- 交换机 -- 路由器逻辑布局pc -- 路由器 交换机的产生 网络之初,是通过网线互相连通到各个主机,存在的问题就是2个pc都要与服务 ...

  4. PyQt5对话框

    QinputDialog 输入的值可以是字符串,数字,或者一个项目从一个列表 def showDialog(self): text, ok = QInputDialog.getText(self, ' ...

  5. 将服务器上的SqlServer数据库备份到本地

    如何将服务器上的SqlServer数据库备份到本地电脑 http://bbs.csdn.net/topics/370051204 有A数据库服务器,B本机:    我现在想通过在B机器上通过代码调用S ...

  6. python collections module's defaultdict

    Collections is a high-performance container datatypes. defaultdict objects class collections.default ...

  7. js函数——倒计时模块和无缝滚动

    倒计时 效果: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  8. http协议及web框架

    http协议简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web )服务器与本地浏览器之间传输超文本 ...

  9. keil5破解

    没有破解之前的keil只能编译限制大小的代码,72K好像我忘了?太长的话会报错. 注册机网址:http://bbs.armfly.com/read.php?tid=2346 1.在keil5左上角的F ...

  10. URL里面的中文参数到底转换成了什么?

    https://www.amazon.cn/s/ref=nb_sb_noss?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99& ...