开发一个简单的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. java,js 解unicode

    import java.util.regex.Matcher; import java.util.regex.Pattern; public class UnicodeDecodeDataConver ...

  2. python中包和模块的使用说明

    python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包.只要模块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用. 如果想 ...

  3. PyQt 5的基本功能

    PyQt5常用的模块 PyQt5的类别分为几个模块,包括: QtCore:包含非核心的GUI功能,此模块用于处理时间.文件和目录.各种数据类型.流.URL.MIME类型.线程或进程 QtGui:包括窗 ...

  4. TIMEQUEST学习之黑金动力(四)

    现在知道时序约束主要是FPGA to ic,或者ic to FPGA. 上图可以表示FPGA to IC, IC to FPGA. fpga2ic:fpga2ext 是 fpga 致 ic 信号的走线 ...

  5. scp 远程复制

    1. 上传本地文件到远程机器指定目录 命令: scp /opt/soft/nginx-0.5.38.tar.gz root@192.168.120.204:/opt/soft/scptest 上传本地 ...

  6. 改变checkbox的背景颜色

    input:checked{-webkit-appearance:none;background-color: #f4a100;}

  7. C#并口操作

    using System;using System.Runtime.InteropServices;public class PortAccess { [DllImport("inpout3 ...

  8. Lnmp 源码编译安装、常见错误整理

    简介: Lnmp 环境的搭建还是非常简单的,之前由于博客迁移等原因,导致丢失了好多博文,这次重新整理记录一下. Lnmp 即:Linux .Nginx .Mysql .PHP Lnmp 是一套 Web ...

  9. php yii 学习笔记

    yii 归档安装 1,下载 yii  Yii2的高级应用程序模板 2,解压模板到目录,进入控制台进入目录 运行 php init 安装YII 3,进入 http://localhost/phpmyad ...

  10. CBCentralManagerDelegate Protocol 委托协议相关分析

    总体概述 CBCentralManagerDelegate 协议中定义了一系列方法列表,这些方法是委托对象必须要实现的方法(也有可选择的),当中央管理器的相应变化就会调用委托对象中实现的相应方法. M ...