一. 基础介绍
Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,因此Java开发者可以专注于应用程序的开发。
Spring最根本的使命是解决企业级应用开发的复杂性,即简化Java开发。
Spring可以做很多事情,它为企业级开发提供了丰富的功能,但是这些功能的底层都依赖于它的两个核心特性,也就是依赖注入(dependency injection,DI)和面向切面编程(aspect-oriented programming,AOP)。
框架的核心:IoC容器和AOP模块
(1)IOC:控制反转,把创建对象的过程交给Spring来管理
(2)Aop:面向切面,不修改源代码进行功能增强
Spring的优缺点
优点
-
方便解耦,简化开发
Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护,交给Spring管理。
-
AOP编程的支持
Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能。
-
声明式事务的支持
只需要通过配置就可以完成对事务的管理,而无需手动编程。
-
方便程序的测试
Spring对Junit4支持,可以通过注解方便的测试Spring程序。
-
方便集成各种优秀框架
Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架的直接支持(如:Struts、Hibernate、MyBatis等)。
-
降低JavaEE API的使用难度
Spring对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低。
缺点
-
Spring明明一个很轻量级的框架,却给人感觉大而全
-
Spring依赖反射,反射影响性能
-
使用门槛升高,入门Spring需要较长时间
二. IOC(控制反转)
理解:在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。这样对象的控制权就反转了,程序员无需关心对象的各种创建。只需关注业务的本身,大大降低了程序的耦合性
有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。Spring容器在初始化时先读取配置文件,根据配置文件或元数据创建与组织对象存入容器中,程序使用时再从IOC容器中取出需要的对象进行依赖注入
控制反转IOC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IOC的一种方法
1. 搭建 Spring IOC环境
创建 maven 版的 Java 工程
2. 在pom.xml中加入相关依赖,导入Spring相关jar包
具体可以了解maven其依赖自动导入
3. 创建 Spring 配置文件
<?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">
</beans>
Spring框架的配置文件是基于xml的,Spring强大的功能依赖于类型繁多的配置项
起名为applicationContext.xml
4. 创建实体类
创建一个简单的HelloWorld类
public class Helloworld {
private String name;
public Helloworld(){
System.out.println("创建对象");
}
public void setName(String name) {
System.out.println("调用方法");
this.name = name;
}
public void sayHello(){
System.out.println("Hello!" + name);
}
}
5. 在applicationContext.xml文件中对类进行配置
<!--配置bean
id属性:给当前bean起一个名称,该名称必须保证是唯一的
class属性:设置bean的全类名-->
<bean id="helloworld" class="com.LSTAR.Helloworld">
<!--给属性赋值
name属性:设置bean属性名
value属性:设置bean属性值-->
<property name="name" value="LSTAR"></property>
</bean>
注意,bean标签必须放在beans标签里边
6. 测试类(记得导入测试的jar包---junit依赖)
public class test {
@Test
public void test(){
//1.创建IOC容器对象
ApplicationContext ioc = new ClassPathXmlApplicationContext("applicationContext.xml");
//2.从IOC容器中获取Helloworld对象
Helloworld hello = (Helloworld) ioc.getBean("helloworld");
//3.调用类中方法
hello.sayHello();
}
}
该测试是通过ApplicationContext:BeanFactory的子接口,加载配置文件的时候创建对象,再调用类中方法
三.Spring的两种IOC实现方式:
(1)BeanFactory:IOC容器基本实现,加载配置文件时不会创建对象,在获取对象时才创建对象。
(2)ApplicationContext:BeanFactory的子接口,加载配置文件的时候就会创建对象
标签:总结,容器,Java,配置文件,对象,Spring,基础知识,IOC From: https://blog.csdn.net/qq_73340809/article/details/140933982