什么是Spring
概念
Spring是一个开源框架;
Spring是为了简化企业级应用而生的,使用Spring可以使简单的JavaBean实现EJB(Enterprice Java Bean)才能实现的功能。
特点
- 轻量级
- 依赖注入
- 面向切面编程
- 容器
-
一站式
Spring中最重要的两个概念:IOC(Spring的容器)、AOP(面向切面编程)
核心容器
- Beans (在IOC容器中,所有的类都看作JavaBean)
- Core
- Context (上下文,就是.xml文件)
- SpEL (Spring 中的EL 表达式,简化代码)
IOC容器的基本使用
下面以代码为例,解释IOC容器的基本使用
//Main方法
public class Main {
public static void main(String[] args){
ApplicationContext ioc = new ClassPathXmlApplicationContext("config/applicationContext.xml");
/*创建一个Spring IOC容器
ApplicationContext :IOC容器的类型
ClassPathXmlApplicationContext:IOC容器的构造方法
"config/applicationContext.xml":这里写上配置上下文文件的路径
*/
Apple apple0 = ioc.getBean("apple", Apple.class);
/*
在Ioc容器中,要获取一个对象不用new,只需调用getBean方法即可。
使用IOC容器中的getBean方法获得Ioc容器中一个类的实例;
"apple", Apple.class: 参数是一个键值对
参数 "apple "是key:也是我们在上下文中配置的JavaBean的id
Apple.class:是"apple"这个id对应的JavaBean;
*/
Apple apple1 = ioc.getBean("apple", Apple.class);
Apple apple2 = ioc.getBean("apple", Apple.class);
System.out.println(apple1 + "---------------->:" + (apple0 == apple2));
System.exit(0);
}
}
<?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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="apple" class="com.zzxtit.spring.ioc.dev.Apple" scope="prototype" init-method="appleInit" destroy-method="appleEaten"></bean> ,
<!--
id:在当前IOC容器内 BEAN描述的唯一ID,不可以重复;
class: 表示类全名: 包名 + 类名
属性scope 表示对象的作用域,默认值为 singleton,其它可能取值如下:
容器中Bean的作用域
1、singleton: 单例模式,在整个Spring IoC容器中,singleton作用域的Bean将只生成一个实例。
对象在加载IOC容器时实例化
2、prototype: 每次通过容器的getBean()方法获取prototype作用域的Bean时,都将产生一个新的Bean实例。
对象在被获取时IOC容器才实例化对象
3、request: 对于一次HTTP请求,request作用域的Bean将只生成一个实例,这意味着,在同一次HTTP请求内,程序每次请求该Bean,得到的总是同一个实例。
对象在请求时实例化
只有在Web应用中使用Spring时,该作用域才真正有效。
4、session:该作用域将 bean 的定义限制为 HTTP 会话。
只在web-aware Spring ApplicationContext的上下文中有效。
对象在会话时实例化
5、global session: 每个全局的HTTP Session对应一个Bean实例。在典型的情况下,仅在使用portlet context的时候有效,同样只在Web应用中有效。
当赋值为:prototype 表示对象在被获取时IOC容器才实例化对象
属性:init-method:对象被初始化时触发的方法
-->
<bean id="banana" class="com.zzxtit.spring.ioc.dev.Banana" init-method = "init" destroy-method = "destroy"></bean>
/*
init-method = "init"
destroy-method = "destroy"
创建JavaBean实例-->引入其属性值--> 调用init-method进行初始化 --> 调用destroy-method方法关闭容器。
*/
</beans>
版权声明:本文为weixin_43641971原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。