Spring初探–对Spring的基本概念的理解

  • Post author:
  • Post category:其他




什么是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 版权协议,转载请附上原文出处链接和本声明。