学习spring的第一天
1.首先在maven repository中找到Spring Context依赖添加进模块
2.配置xml,resources右键new→xml configuration file→Spring Config,例如取一个名字为applicationConfig.xml。该文件是元数据,再次文件里通过一个个的bean告诉spring管理那些类,这些类必须是要能够实例化的,接口和抽象类就不行
3.开始在xml中配置元素标签。
3.1<bean>,有属性如下,id:在java代码中通过getBean("id")来得到对象,
3.2 class:指定全称,表面这个bean取得的对象是什么类的,并且其destroy-method和init-method方法只能在此类中寻找
3.3 scope: 有4种,分别为prototype(原型,每次getBean的时候都重新创建一个),singleton(单例,同时也是默认的,在spring容器启动时就被创建,每次getBean的时候都从容器中获取,具体的java代码是:ApplicationContext context = new ClassPathXmlApplicationContext("applicationConfig.xml");),request(请求,它和session都是在web中才有用,被spring管理的bean,它的请求都在一个完整的请求周期里),session(会话,在一个会话里)
3.4 factory-method:工厂方法,调用在class属性中的类中有的方法,使得getBean的返回值可以为该方法的返回值类型。
3.5 destroy-method和init-method:销毁方法和初始化方法,调用class属性的类中有的方法,在初始化和销毁阶段会调用对应的方法。同时可以在<beans>标签中写全局的销毁和初始化方法,default-init-method和default-destroy-method,但是他们会被<bean>中的覆盖,同时,只有<bean>中的class属性的类中有这2个全局属性的方法时,才会调用。
3.6 factory-bean:先创建一个<bean>,用该<bean>的id作为属性值,配合factory-method属性,该属性是方法名。
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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"
default-destroy-method="ss" default-init-method="ss"> <bean id="first" class="com.util2.EmployeeDao" factory-method="getEmployee" scope="prototype"></bean> <bean id="second" class="com.util2.EmployeeDao" scope="prototype"></bean> <bean id="third" factory-bean="second" factory-method="getEmployee1" scope="prototype"></bean> <bean id="fourth" class="com.util2.EmployeeImpl" scope="prototype" ></bean> <bean id="emp" class="com.util.EmployeeDao" scope="prototype"></bean> </beans>
4.java代码实例:关于getBean方法是有重载的,也有一个参数的写法,不过没有指明具体的Class对象,返回值是Object
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationConfig2.xml");
Employee first = context.getBean("first", Employee.class);
System.out.println((Employee)context.getBean("first"));
System.out.println(first);
Employee third = context.getBean("third", Employee.class);
System.out.println(third);
EmployeeDao second = context.getBean("second", EmployeeDao.class);
System.out.println(second);
Employee fourth = context.getBean("fourth", Employee.class);//1,2,4不一样
com.util.EmployeeDao employeeDao = (com.util.EmployeeDao) context.getBean("emp");
System.out.println(fourth);
((ConfigurableApplicationContext) context).close();
}
其中可以将ApplicationContext转型为ConfigurableApplicationContext以启用close方法,测试xml中的destroy-method方法。
5.补充:今天还学了三个实现接口:一个是FactoryBean<T>,InitializingBean,DisposableBean,具体用法可以自己写个类实现以下,看看需要重写哪些方法,很容易理解。
示例:
public class EmployeeDaoLifeCycle2 implements InitializingBean, DisposableBean {
/**
* 这个方法名取名叫:"在属性设置完毕之后"
* 其意思就是此类中各种setter方法被调用后
* 才调用这个初始化方法
* @throws Exception
*/
public void afterPropertiesSet() throws Exception {
System.out.println("after properties set :初始化");
}
public void destroy() throws Exception {
System.out.println("destroy---");
}
public class MyFactoryBean implements FactoryBean<A> {
/**
* 这个方法用来创建一个对象
* @return
* @throws Exception
*/
public A getObject() throws Exception {
return new A();
}
/**
* 这个方法是用来表明此工厂Bean创建出来的对象的class
* @return
*/
public Class<?> getObjectType() {
return A.class;
}
/**
* 这个方法表明此工厂Bean创建出来的对象,在spinrg管理下的作用域
* true表示是singleton
* @return
*/
public boolean isSingleton() {
return true;
}
}
学习spring的第一天的更多相关文章
- Spring实战第一章学习笔记
Spring实战第一章学习笔记 Java开发的简化 为了降低Java开发的复杂性,Spring采取了以下四种策略: 基于POJO的轻量级和最小侵入性编程: 通过依赖注入和面向接口实现松耦合: 基于切面 ...
- 学习Spring——依赖注入
前言: 又开始动笔开了“学习Spring”系列的头…… 其实一开始写“学习SpringMVC”的几篇文章是出于想系统的了解下Spring以及SpringMVC,因为平时在公司中虽然每天都在使用Spri ...
- 深入浅出学习Spring框架(四):IoC和AOP的应用——事务配置
在前文 深入浅出学习Spring框架(一):通过Demo阐述IoC和DI的优势所在. 深入浅出学习Spring框架(三):AOP 详解 分别介绍了Spring的核心功能——IoC和AOP,光讲知识远远 ...
- 借助Maven入手Spring Boot第一个程序
目前网上有不少Spring Boot的入门文章,都很有帮助,本人最近在深入学习Spring Cloud,在搭建第一个Hello World程序时,感觉对于新手而言,介绍文章怎么详细都不为过,因为其中坑 ...
- 学习Spring Boot:(二十六)使用 RabbitMQ 消息队列
前言 前面学习了 RabbitMQ 基础,现在主要记录下学习 Spring Boot 整合 RabbitMQ ,调用它的 API ,以及中间使用的相关功能的记录. 相关的可以去我的博客/RabbitM ...
- Spring框架第一天
## 今天课程:Spring框架第一天 ## ---------- **Spring框架的学习路线** 1. Spring第一天:Spring的IOC容器之XML的方式,Spring框架与Web项目整 ...
- 【转】Spring学习---Spring IoC容器的核心原理
[原文] Spring的两个核心概念:IoC和AOP的雏形,Spring的历史变迁和如今的生态帝国. IoC和DI的基本概念 IoC(控制反转,英文含义:Inverse of Control)是Spr ...
- 从零开始手写 spring ioc 框架,深入学习 spring 源码
IoC Ioc 是一款 spring ioc 核心功能简化实现版本,便于学习和理解原理. 创作目的 使用 spring 很长时间,对于 spring 使用非常频繁,实际上对于源码一直没有静下心来学习过 ...
- 学习 Spring Boot 知识看这一篇就够了
从2016年因为工作原因开始研究 Spring Boot ,先后写了很多关于 Spring Boot 的文章,发表在技术社区.我的博客和我的公号内.粗略的统计了一下总共的文章加起来大概有六十多篇了,其 ...
随机推荐
- GCPC 2018
C.Coolest Ski Route 题意:n个点,m条边组成的有向图,求任意两点之间的最长路径 dfs记忆化搜索 #include<iostream> #include<stri ...
- Adapter之spinner
前言: 在写代码当中有时候会用到下拉列表,下面我们讲一下spinner 正文: 因为比较简单,和之前的listView很像,所以直接上代码 <Spinner android:layout_wid ...
- C++面试常见问题——17类模板的使用
类模板的使用 注意在每次类模板函数时都需要声明一个类模板 #include<iostream> using namespace std; template <class T,int ...
- Fiddler里面AutoResponder和mock用法
AutoResponder 1.找到对应图片请求的链接 2.操作步骤如下图: mock 使用场景:上一步骤模块没有完成,但是下一步模块完成了,需要使用到快速模拟,主要使用的地方就是测试接口
- 011.Oracle数据库分页,取前10条数据
SELECT ATA FROM LM_FAULT WHERE ( OCCUR_DATE BETWEEN to_date( '2017-05-01', 'yyyy-MM-DD' ) AND to_dat ...
- supervisor的介绍
1.supervisor 简介 Supervisor 是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统.它可以很方便的 ...
- nginx做维护页面
需求: 一个网站本来有好几个域名,然后也有好几个二级域名,现在停掉了,要求把所有的域名.二级域名,以及具体的文件请求,都指向一个维护页面. 1 单独在vhost里建一个conf文件 server { ...
- UVA - 11186 Circum Triangle (几何)
题意:有N个点,分布于一个圆心在原点的圆的边缘上,问所形成的所有三角形面积之和. 分析: 1.sin的内部实现是泰勒展开式,复杂度较高,所以需预处理. 2.求出每两点的距离以及该边所在弧所对应的圆周角 ...
- POJ 1061:青蛙的约会
青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 95878 Accepted: 17878 Descripti ...
- windowsXP下 使用live555搭建视频服务器,并使用ffplay和VLC播放
首先在官网下载live555:http://www.live555.com/mediaServer/#downloading当然是现在windows的版本了!!上官网下载FFmpeg:http://f ...