开发一个简单的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. Git回版本回退

    这里我们使用命令行的方式对已经提交的版本进行强行回退操作~~~ 一.将git的安装目录bin放到path路径中, 如下图所示: 二.进入cmd界面,依次输入下面内容即可(git 远程仓库 回退到指定版 ...

  2. scp 远程复制

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

  3. 关于linux网络基础记录

    1.linux操作系统是一套非常稳定的操作系统,作用永不止于提供网络服务那么简单.(www.Mail.FTP.DNS.DHCP.NAT.Router) 2.对于一个服务器而言,“搭建容易维护难”:维护 ...

  4. 06_java之类概述

    01引用数据类型_类 * A: 数据类型 * a: java中的数据类型分为:基本类型和引用类型 * B: 引用类型的分类 * a: Java为我们提供好的类,比如说:Scanner,Random等. ...

  5. scrapy框架的持久化存储

    一 . 基于终端指令的持久化存储 保证爬虫文件的parse方法中有可迭代类型对象(通常为列表or字典)的返回,该返回值可以通过终端指令的形式写入指定格式的文件中进行持久化操作. 执行输出指定格式进行存 ...

  6. Delphi IOS MusicPlayer 锁屏运行学习

    [weak] FMusicPlayer: TMusicPlayer; [weak]修饰, 编译器在处理这个变量的时候不会调用该变量内容的__ObjAddRef和__ObjRelease., proce ...

  7. MySQL 执行 'use databases;' 时很慢

    问题描述: 就是这么个情况,登录数据库切换库时感觉很卡,需要等待几秒钟. 案例: shell > mysql -uroot -ppassword mysql> use databases; ...

  8. Redis AOF 全持久化

    简介: Redis AOF 持久化,将每次接收到更改 redis 数据的操作都记录到一个 aof 文件,当服务器意外宕机或 redis 服务器非法关闭时,不会丢失数据. 可以做到数据安全化,但是性能会 ...

  9. Git 搭建私有仓库

    简介: 如果你不想把自己的代码公开让别人阅读.使用,也不想花钱购买 GitHub 私有仓库,那么你就需要自己动手做一个了. 当然你也可以使用 Coding.net ,上面可以创建免费的私有仓库.( 今 ...

  10. Boost在Linux 64 下的编译

    1. 下载最新版的boost wget https://dl.bintray.com/boostorg/release/1.67.0/source/boost_1_67_0.tar.gz 2. 解压 ...