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的 ...
随机推荐
- JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
一般商业网站都有一个语言的需求,就是为了照顾使用正体中文的国人,会特地提供一个切换到正体中文的选项(或曰“繁体中文”).传统做法是在服务端完成的,即通过某些控件或者过滤器转换文本语言.这里笔者介绍一种 ...
- Web项目中定时任务无法绑定SessionFactory的问题解决
正常我们在web开发中,由于需要在页面上或者脱离事务时使用到懒加载对应的对象,一般都采用Open Session In View模式. Open Session In View OpenSes ...
- 网络 、osi 七层模型、tcp/ip 五层参考
网络 网络的本质就是通讯,比特传输 网络拓扑 物理布局pc -- 交换机 -- 路由器逻辑布局pc -- 路由器 交换机的产生 网络之初,是通过网线互相连通到各个主机,存在的问题就是2个pc都要与服务 ...
- PyQt5对话框
QinputDialog 输入的值可以是字符串,数字,或者一个项目从一个列表 def showDialog(self): text, ok = QInputDialog.getText(self, ' ...
- 将服务器上的SqlServer数据库备份到本地
如何将服务器上的SqlServer数据库备份到本地电脑 http://bbs.csdn.net/topics/370051204 有A数据库服务器,B本机: 我现在想通过在B机器上通过代码调用S ...
- python collections module's defaultdict
Collections is a high-performance container datatypes. defaultdict objects class collections.default ...
- js函数——倒计时模块和无缝滚动
倒计时 效果: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- http协议及web框架
http协议简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web )服务器与本地浏览器之间传输超文本 ...
- keil5破解
没有破解之前的keil只能编译限制大小的代码,72K好像我忘了?太长的话会报错. 注册机网址:http://bbs.armfly.com/read.php?tid=2346 1.在keil5左上角的F ...
- 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& ...