Spring入门(一)

192 阅读2分钟

基本使用

Spring框架两大核心机制

  • IOC 反转/DI依赖注入
  • AOP面向切面

什么是控制反转
在spring里创建对象的工作不再是调用者来完成,而是交给IOC容器来创建,再推送给调用者,整个流程完成反转,所以是控制反转
IOC实现了解耦合
例子:
创建maven 工程,添加依赖

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.0.11.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.6</version>
</dependency>
<dependency>
    <groupId>dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>1.6.1</version>
</dependency>

dom4j用于解析xml
通过IOC创建对象,在配置文件中添加需要管理的对象,XML配置文件文件名可以自定义
放在source的文件夹底下
spring.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd" >
        

<bean id="student" class="cn.learnbyheart.bean.Student">
    <property name="age" value="11"></property>
    <property name="id" value="1"></property>
    <property name="name" value="gy"></property>
</bean>

使用bean标签来创建对象
propert标签里的name的pojo类的属性
Test类

public class Test {
    public static void main(String[] args) {
//        加载配置文件
        ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
        Student student = (Student) context.getBean("student");
        System.out.println(student);
    }
}

getBean()里的参数是spring.xml里bean标签的id
配置文件

  • 通过配置文件bean标签来完成对象的管理
  • id 对象名
  • class : 对象模板类(所有交给IOC容器管理的类必须有无参构造函数,因为spring底层是通过反射机制来创建对象的,调用的无参构造)
  • 对象的成员变量通过 property标签完成赋值
  • property里的name:成员变量名
  • value:成员变量值(基本类型,String类型可以直接赋值,但是引用类型不可以)
  • ref: 将IOC的另外一个bean 赋给当前的成员变量(DI)

ref使用

<bean id="student" class="cn.learnbyheart.Student">
    <property name="age" value="11"></property>
    <property name="id" value="1"></property>
    <property name="name" value="gy"></property>
    <property name="address" ref="address"></property>
</bean>
<bean id="address" class="cn.learnbyheart.Address">
    <property name="id" value="2"></property>
    <property name="name" value="hhh"></property>
</bean>

引用另一个对象时使用ref, 也就是依赖注入

IOC 底层原理实现 读取配置文件,解析xml 通过反射机制实例化配置文件中所配置所有的bean