Spring-IOC

Spring-IOC简介

IOC(Inversion of Controller)控制反转。把对象的控制权转移 Spring框架,由 Spring 框架来管理对象的生命周期(例如对象的创建和销毁),还可以管理对象之间的依赖关系。

所以 IOC 又叫作 DI

DI简介

DI(Dependency  Injection)依赖注入。当一个对象依赖另一个对象时,容器可以直接把另一个对象注入,直接使用。

依赖注入方式

依赖注入的方式有3种设值注入,构造注入,注解注入

准备工作:

pom依赖包:

<!--统一管理版本号-->
    <properties>
        <spring.version>5.3.12</spring.version>
    </properties>

    <dependencies>
        <!--Spring的核心包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--spring  核心包 结束-->
        <!--Lombok依赖包-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.28</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

User实体类:

package com.hrc.Test3;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @FileName: User
 * @Description:
 * @Author: hrc
 * @CreateTime: 2024/6/17 17:42
 * @Version: 1.0.0
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private  Integer userId;
    private  String userName;
    private  String realName;
    private  Integer age;
 
    private Animal animal;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
class Animal{
    private Integer id;
    private String name; 
}

    1. 设值注入

设值注入的前提:配置 set注入配置,一定要属性的set方法

举个例子:

//类中一定要有这个方法才可以被设值注入
public class A{
   private int a;
   //set方法
   public void setA(int a){
        this.a  =  a;
   }
}

设值注入存在两种方式:

value 方式,注入的类型为基本类型,如:int,char,double等

ref 方式,注入的类型为引用类型,如:String,类等

举个例子:

    2. 构造注入

构造注入前提:配置set注入时,必须有构造函数

举个例子:

public class A{
   private int a;
   
//空构造函数
   public A(){}

//全参构造函数
   public A(int  a){
        this.a = a;
   }  
}

 构造注入方式:

    3. 注解注入

   Spring针对 Bean对象的创建提供以下注解。

  ①@Component注解:用于放在三层(控制层,服务层,持久层)之外的对象

  ②@Controller注解:用于控制层

  ③@Service注解:用于服务层

  ④@Repository注解:用于持久层

当然,只写这些注解是不够的,需要在xml文件中扫描这些注解才可以放到SpringIOC中

举个例子:

xml文件扫描例子:

 如何进行对象之间依赖注入呢?

可以使用@Autowired注解注入其他对象

 扩展知识点

Spring中的 bean默认是单例模式,如果不想是单例,想要原型模式如何设置?

①xml文件配置bean的方式

②注解的方式配置bean

 

posted @ 2024-07-06 12:07  和哗  阅读(4)  评论(0编辑  收藏  举报