Spring框架总结(二)
开发一个简单的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框架总结(二)的更多相关文章
- OSGI企业应用开发(五)使用Blueprint整合Spring框架(二)
上篇文章中,我们开发了一个自定义的Bundle,接着从网络中下载到Spring和Blueprint的Bundle,然后复制到DynamicRuntime项目下. 需要注意的是,这些Bundle并不能在 ...
- 深入学习Spring框架(二)- 注解配置
1.为什么要学习Spring的注解配置? 基于注解配置的方式也已经逐渐代替xml.所以我们必须要掌握使用注解的方式配置Spring. 关于实际的开发中到底使用xml还是注解,每家公司有着不同的使用习惯 ...
- Spring框架学习(二)
一.依赖注入的三种注入方式 Spring框架为我们提供了三种注入方式:set注入.构造方法注入和接口注入. 1.set注入 规律:无论给什么赋值,配置文件中<property>标签的nam ...
- Spring 框架(二)
1AOP 1.1 AOP介绍 1.1.1 什么是AOP l 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功 ...
- Spring框架(二)
Spring反射机制: 1, 通过spring来获取一个对象的实例 <bean id="user" class="com.model.User"> ...
- Spring框架系列(二)--装配和注入Bean
企业日常开发中,几乎都是Spring系的框架,无论是SSM.还是现在大火的SpringBoot+JPA/MyBatis,使用最大的目的就是简化开发 基本模块: 核心容器:Beans.Core.Cont ...
- 使用Spring框架入门二:基于注解+XML配置的IOC/DI的使用
一.简述 本文主要讲使用注解+xml配合使用的几种使用方式.基础课程请看前一节. 二.步骤 1.为Pom.xml中引入依赖:本例中使用的是spring-context包,引入此包时系统会自动导入它的依 ...
- spring框架学习(二)——注解方式IOC/DI
什么是注解 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分 ...
- Spring框架学习总结(上)
目录 1.Spring的概述 2.Spring的入门(IOC) 3.Spring的工厂类 4.Spring的配置 5.Spring的属性注入 6.Spring的分模块开发的配置 @ 1.Spring的 ...
随机推荐
- PorterDuff.Mode
参考:http://weishu.me/2015/09/23/Xfermode-in-android/ Sa = Source alphaDa = Dest alphaSc = Source colo ...
- django-cbv模式-csrf中间件
1. django模式 def users(request): user_list = ['alex','oldboy'] return HttpResponse(json.dumps((user_l ...
- 2017百度之星初赛B-1002(HDU-6115)
一.思路 这题“看似”比较难搞的一点是,一个节点上有多个办公室,这怎么求?其他的,求树中任意两个节点的距离(注意:没有最远或最最进这一说法,因为树上任意两个节点之间有且仅有一条路径.不然就有回路了,对 ...
- js获取页面名称和路径参数
// 取当前页面名称(不带后缀名)function getPageName1(){ var a = location.href; var b = a.split("/" ...
- Shachar Fleishma的论文,做点云重建的几篇论文都不错
http://www.sci.utah.edu/~shachar/ 几篇论文都不错,但貌似05年之后就没有什么动作了.
- 关于OpenGL Framebuffer Object、glReadPixels与离屏渲染
最近写论文需要用到离屏渲染(主要是因为模型太大普通窗口绘制根本做不了),于是翻阅了红宝书查了下相关api和用法.中文版的红宝书可读性有点差,很多地方翻译地晦涩,但好歹读起来比较快,主要相关章节为第8章 ...
- 第八篇 实例化Flask的参数 及 对app的配置
Flask 是一个非常灵活且短小精干的web框架 , 那么灵活性从什么地方体现呢? 有一个神奇的东西叫 Flask配置 , 这个东西怎么用呢? 它能给我们带来怎么样的方便呢? 首先展示一下: from ...
- http协议及web框架
http协议简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web )服务器与本地浏览器之间传输超文本 ...
- [js方法pk]之instanceof() vs isPrototypeOf() hasOwnProperty() vs propertyIsEnumerable()
这几个方法在js的高级编程中经常用到,对于新手来说可能还不知道他们有什么区别,我把我的体会总结下来,供大家参考: 首先,定义一个对象: function Parent() {this.name = & ...
- leetcode451
public class Solution { public string FrequencySort(string s) { var dic = new Dictionary<char, in ...