Spring框架学习(一):为什么使用Spring?什么是IOC、AOP?

本文内容纲要:Spring框架学习(一):为什么使用Spring?什么是IOC、AOP?

这个系列,我们一起学习Spring框架,完全从小白的视角去学习它。在此之前,要先介绍一下几个基础概念,好让你遇到这些关键词时不蒙圈...

  1.POJO:老式的Java对象,也可以叫做普通Java对象,什么普通Java对象呢?

public class Student{

  private String name;

  public Student(){}

  //我省略getter and setter,如果想在自己PC上运行,建议每个类的空构造器和setter getter函数都要加上

}

  这个例子就是一个普通Java对象。

  2.容器:Spring有一个很厉害的技能,那就是可以为我们程序猿创建、管理对象,当然了,得你告诉他要创建哪一个类的对象才行。创建完对象之后,对象就存在于Spring的容器之中,我们可以从容器中获取创建好的对象,我们也可把这个容器称作是Spring上下文。

  3.依赖注入:上面说了,Spring可以为我们创建对象,那对象间的依赖关系是如何实现的呢?作为一个优秀的程序猿,不要问我什么是依赖关系...。依赖关系就好比,使用Mybatis的时候,你需要配置SqlSessionFactoryBean,而这个类的一个属性是DataSource的引用,所以你需要创建一个DataSource的对象,并通过set方法或者别的方式传递给SqlSessionFactoryBean。有点扯远了,Spring可以为我们创建对象,我们也可以配置对象的依赖关系,将一个对象注入到另一个对象中。Spring还可以实现自动注入,好比我举的Mybatis例子,如果容器中有DataSource对象,也有SqlSessionFactoryBean对象,开启自动创配模式,可以实现对象的依赖自动注入。

  展示一个小例子:学生做作业。一共是三个类,Student.java、Homework.java、App.java。还有一个Spring的配置文件:appContext.xml。要运行这个例子,需要引入Spring框架,我会在后面教大家如何创建基于Spring框架的Java项目。在这个例子中,学生要做的是看一下作业是什么,学生类依赖作业类。

public class Student {

private String name;

private Homework homework;

public Student(){}

public Student(String name, Homework homework) {

this.name = name;

this.homework = homework;

}

public void doHomeWork(){

System.out.println(homework.getContent());

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Homework getHomework() {

return homework;

}

public void setHomework(Homework homework) {

this.homework = homework;

}

}

public class Homework {

private String content;

public Homework(){}

public Homework(String content) {

this.content = content;

}

public String getContent() {

return content;

}

public void setContent(String content) {

this.content = content;

}

}

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {

public static void main(String[] args) {

ApplicationContext context = new ClassPathXmlApplicationContext("appContext.xml");

Student student = context.getBean(Student.class);

System.out.println(student.getName()+"的作业是:");

student.doHomeWork();

}

}

<?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">

<bean id="student" class="demo1.Student">

<property name="name" value="小明"></property>

<property name="homework" ref="homework"></property>

</bean>

<bean id="homework" class="demo1.Homework">

<property name="content" value="how to calc 3+2 ?"></property>

</bean>

</beans>

启动App.java中的main方法,控制台得到这样的消息:

Image

xml配置文件暂时不用过多解释,从man方法中我们可以看到,程序读取了xml配置文件,从上下文中拿到了Student对象并调用了相关方法。整个过程,我没有手动的去创建Student对象和Homework对象,但是我却可以使用它们,这要归功于Spring。

  4.IOC(控制反转):我的理解,对象创建控制权的反转。如果没有使用Spring,我要让学生做作业,我需要创建学生类和作业类,使用Spring的话,创建对象的权力交给Spring。不只是创建,bean的整个生命周期都由Spring管理。从此程序猿变成一个“伸手党”,只管向Spring容器要创建好的对象即可。

  **5.AOP(面向切面编程):**不要被这个花哨的词语吓到,面向切面编程其实就是提取程序执行流程中的公共部分做统一处理,从横向来看各个模块之间是否有共同的地方。比如同一个系统中的很多模块都要做事务管理,我们就可以使用AOP简化开发。

回归主题,为什么选择使用Spring?下面一一段回答摘自《Spring实战第四版》

Spring能够简化Java开发,具体体现:

  1. 基于POJO的轻量级和最小侵入式开发
  2. 通过依赖注入和面向接口实现松耦合
  3. 基于切面和管理进行声明式编程
  4. 通过切面和模板减少样式代码

以上这个4点,如果没有完全理解甚至根本就不理解,没关系,静下心来,多多看例子就明白了,一起加油哦!

本文内容总结:Spring框架学习(一):为什么使用Spring?什么是IOC、AOP?

原文链接:https://www.cnblogs.com/chenyulin/p/11206704.html

以上是 Spring框架学习(一):为什么使用Spring?什么是IOC、AOP? 的全部内容, 来源链接: utcz.com/z/296686.html

回到顶部