点击查看Spring系列文章

 

目录

一.基础概念

1.Spring有哪些组件

2.ApplicationContext类和BeanFactory接口 

3.BeanFactory接口 

4.XMLBeanFactory类

二.简单使用

1.导包

2、建立一个xml配置文件

3、导入约束

4、将对象交个spring容器管理

5.使用ApplicationContext加载配置文件,获取对象

各种概念与基础操作


一.基础概念

Spring是Spring Framework的总称,包含了许多Java开发和测试所需的组件,旨在提高Java开发者的开发效率和简化开发难度和维护难度。

1.Spring有哪些组件

 

Spring 4.0中有八大常用的组件,它们分别是:

  1. Spring Core: Spring框架其他模块的核心依赖组件,并且也提供Spring IoC功能
  2. Spring Aspects:可以与AspectJ提供集成支持(AOP支持)
  3. Spring AOP:提供了面向切面编程实现
  4. Spring JDBC:提供了Java与数据库连接的支持
  5. Spring JMS:提供Java消息相关支持
  6. Spring ORM:提供了Hibernate、JPA等持久化支持
  7. Spring Web:提供了Web支持
  8. Spring Test:提供了Junit和TestNG的支持

2.ApplicationContext接口和BeanFactory接口有什么不同


ApplicationContext接口和Beanfactory的关系相当于一辆完整的汽车与汽车引擎之间的关系:BeanFactory面向的是Spring容器使用,而ApplicationContext面向的是用户使用,它比BeanFactory提供了更加完善的功能:
1. 提供了支持国际化的文本消息
2. 统一的资源文件读取方式
3. 已在监听器中注册的bean的事件

3.BeanFactory接口有什么作用


BeanFactory接口是Spring框架管理Bean的核心容器,是以工厂模式来实现的,用于获取注册和获取Bean。

 

二.简单使用


 

1.导包

 

导入这几个基础的核心包:

 

2、建立一个xml配置文件

命名为:applicationContext.xml ,里面规定了Spring管理的对象。

3、导入约束

 视频链接:https://pan.baidu.com/s/1J9W2wi3y_tSXe_XXnoULzg

4、将对象交个spring容器管理

5.使用ApplicationContext加载配置文件,获取对象

package com.iteason.hello;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.iteason.bean.User;

public class Demo {
	
	@Test
	public void fun1(){
		//spring的helloworld
		
		//1、创建容器对象
		ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); 
		//2、向容器拿user对象
		User user = (User) ac.getBean("user");
		//3、打印user对象
		System.out.println(user);
		
	}
}

 

 

 

各种概念与基础操作

AO面向切面编程

EJB:JavaEE早期的服务器端组件模型

IoC:控制反转

DI:依赖注入

    1)set方法注入

    2)构造方法注入

    3)属性注入

 

spring的IoC容器:

1)BeanFactory(已过时)

2)ApplicationContext:BeanFactory的子接口,不仅提供BeanFactory的所有功能,还对其进行了增强,开发中使用

|-从硬盘的相对路径加载配置文件:

 
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");

|-从相对路径加载配置文件(不使用)

 

 

spring配置文件中的bean元素简单配置:

    bean元素:使用该元素表示要交给spring管理的对象

        |-name属性:给被管理的对象起个名字,获得该对象时可以使用这个名字去获取

        |-class属性:被spring管理的完整类名

        |-scope属性:1)singleton 默认使用,单例对象,多次请求只创建一个实例     

                              2) prototype 多例对象,多次请求,创建多个对象实例

                                

                                

tip:调用spring创建对象时,使用的是对象的空参构造方法(正常的调用情况)

 

 

 

生命周期属性:

init-method=”init“

destory-method=”destory“

----用于实例化对象后的前处理与后处理

 

 

分模块配置:导入其他配置文件,而不用把所有配置都放在一起

<import  resource="/其他配置的路径"></import>

 

 

spring的依赖注入配置:

1、set方式注入

   配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
	
	<!-- 将对象交给spring管理 -->
	<!-- 将对象交给spring管理 -->
	<bean name = "user1" class="com.iteason.bean.User" >
		<!-- 配置set注入 -->
		
		<property name="name" value="set方法注入"></property>
		<property name="age" value="15"></property>
	
	</bean>
	
</beans>
	<bean name = "user1" class="com.iteason.bean.User" >
		<!-- 配置set注入 -->
		
		<property name="name" value="set方法注入"></property>
		<property name="age" value="15"></property>
	
	</bean>
	
</beans>

    User:

package com.iteason.bean;

public class User {
	
	private String name;
	private Integer age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public User() {
		System.out.println("空参创建");
	}
	@Override
	public String toString() {
		return "User [name=" + name + ", age=" + age + "]";
	}
	
	
	
}

 

Demo:

 

package com.iteason.reject;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.iteason.bean.User;

public class RejectDemo {

	@Test
	public void fun1(){
		//演示set注入
		//创建容器对象
		ApplicationContext ac = new ClassPathXmlApplicationContext("com/iteason/reject/applicationContext.xml");
		//取出user
		User u = (User) ac.getBean("user1");
		//输出
		System.out.println(u);
	}
	
}

执行结果:

 

 

2、构造方式注入

先要为User提供无参和含参构造

配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
	
	<bean name = "user2" class="com.iteason.bean.User" >
		<!-- 构造方法注入 -->
		<constructor-arg name="name" value="构造方法注入"></constructor-arg>
		<constructor-arg name="age" value="16"></constructor-arg>
		
	</bean>
	
</beans>

 

Demo运行结果:

 

在构造方法注入时,还可选择的属性有index属性,type属性,分别用来标识输入的值在构造函数中的位置和类型

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐