Spring 框架两大核心机制介绍

Spring 框架两大核心机制介绍

  • IoC:Inversion of Control(控制反转)/ DI:Dependency Injection(依赖注入
  • AOP:Aspect Oriented Programming(面向切面编程)

Spring是一个企业级开发框架,是软件设计层面的框架,优势在于可以将应用程序进行分成,开发者可以自主选择组件。

什么是控制反转

在传统的程序开发中,需要调用对象时,通常由调用者来创建被调用者的实例,即对象是由调用者主动new出来的

但是,在Spring框架中,创建对象的工作不再由调用者完成,而是交给IoC容器来创建,再推送给调用者,整个流程完成反转,所以是控制反转。具体的操作步骤请往下阅读!

如何使用IoC

传统方式创建对象
1、创建一个Maven工程,配置pom.xml文件,添加依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>IoCCreateObject</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>
    </dependencies>


</project>
2、创建实体类,按照传统的方式创建一个对象。实体类需要写set和get方法,如果不想写,可以再pom.xml中配置lombok
<!--简化实体类的开发-->
<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <version>1.18.6</version>
   <scope>provided</scope>
</dependency>
那么实体类代码就可以这样写
package com.mubanjun.enity;

import lombok.Data;

@Data
public class Student {
    private Long id;
    private String name;
    private int age;
}

这里就可以不写get和set方法,包括toString,这些lombok可以自动生成! 手动new一个Student对象
package com.mubanjun.test;

import com.mubanjun.enity.Student;

public class CreateObject {
    public static void main(String[] args) {
        Student student = new Student();
        student.setId(1L);
        student.setName("mbj");
        student.setAge(18);
        System.out.println(student);
    }
}
IoC创建对象
在配置文件中配置好需要管理的对象,格式为XML,名字可自定义,一般存在resources文件夹
<?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,创建类对象 存放在Map中 (id值,对象)-->
    <bean id="student" class="com.mubanjun.enity.Student">
        <property name="id" value="1"></property>
        <property name="name" value="mbj"></property>
        <property name="age" value="18"></property>
    </bean>

</beans>
从IoC中获取对象
public class CreateObject {
    public static void main(String[] args) {
        // 加载配置文件
        ApplicationContext applicationContext = new ClassPathXmlApplication();
        Student student = (Student)applicationContext.getBean("student");
        System.out.println(student);

    }
}
分享到 :

发表评论

登录... 后才能评论