Spring概述
Spring框架两大核心机制
● IOC(控制反转)/DI(依赖注入)
● AOP(面向切面编程)
Spring是一个企业级开发框架,是软件设计层面的框架。优势在于可以将应用程序进行分层,开发者可以自主选择组件。
MVC:Struts2、SpringMVC
ORMapping:HIbernate、Mybatis、SpringData
企业级项目特点
● 大规模:用户数量多、数据规模大、功能模块众多
● 性能和安全要求高
● 业务复杂
● 灵活多变
Spring优点
● 低浸入式设计
● 独立于各种应用服务器
● 依赖注入特性将组件关系透明化、降低耦合度
● 面向切面编程特性允许将通用任务进行集中化处理
● 于第三方框架的良好整合
Spring核心技术
● 控制反转(IOC: Inversion of Control)
● 依赖注入(DL:Dependency Injection)
● 面切面编程(AOP:Aspect Orientend Programming)
SpringIOC
● 在传统的程序开发中,需要调用对象时,通常有调用者来创建被调用者的实例,几对象时由调用者主动new出来的。
● 但在Spring框架中创建对象的工作不再由调用者来完成,而是交给IOC容器来创建,在推给调用者,整个流程完成反转,所以是控制反转。
如何使用IOC
● 创建Maven工程,pop.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>SPringIOC_01</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.6</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>
    </dependencies>

</project>

● 创建实体类 Student

  package com.yin;
    
    public class Student {
        private  long id;
        private  String name;
        private  int age;
    
        public long getId() {
            return id;
        }
    
        public void setId(long id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "Student{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    }

● 传统的开发模式,手动new Student

package test;
import com.yin.Student;
public class test {
    public static  void main(String[] args){
        Student student =new Student();
        student.setId(1L);
        student.setAge(22);
        student.setName("张三");
        System.out.println(student);
    }
}

● 通过IOC创建对象,在配置文件中添加需要管理的对象,文件格式为xml格式,文件名可自定义。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"

       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                   http://www.springframework.org/schema/beans/spring-beans.xsd
                   http://www.springframework.org/schema/mvc

                   http://www.springframework.org/schema/context
                   http://www.springframework.org/schema/context/spring-context.xsd">

<bean id="student1" class="com.yin.Student">
    <property name="id" value="1"></property>
    <property name="age" value="27"></property>
    <property name="name" value="zhangsan"></property>
</bean>
</beans>

● 从IOC中获取对象

package test;
import com.yin.Student;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class test  {
    public static  void main(String[] args) throws Exception{

        ApplicationContext applicationContext =new ClassPathXmlApplicationContext("spring.xml");
        Student student =(Student) applicationContext.getBean("student1");
        System.out.println(student);

    }
}

最后修改:2021 年 05 月 10 日 09 : 13 PM
如果觉得我的文章对你有用,请随意赞赏