首页 > 其他分享 >Spring-IOC

Spring-IOC

时间:2024-07-06 12:20:38浏览次数:16  
标签:Spring private spring 注解 IOC public 注入

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

 

标签:Spring,private,spring,注解,IOC,public,注入
From: https://www.cnblogs.com/gzyhrc/p/18253010

相关文章

  • 玩转springboot之springboot定制化tomcat
    定制化tomcatspringboot中是集成了tomcat容器的,如何定制化内置的tomcat呢?springboot提供了定制化的接口1.5.x版本在1.5.x版本中使用的是EmbeddedServletContainerCustomizer接口来进行定制化的public class MyTomcatCustomizer implements EmbeddedServletContaine......
  • 每天一道Java面试题系列之--Spring事务的实现原理
    面试题描述Spring事务的实现原理,并解释以下概念:PlatformTransactionManager 接口的作用是什么?什么是事务的传播行为?声明式事务和编程式事务有什么区别?@Transactional 注解是如何工作的?题解1. PlatformTransactionManager 接口PlatformTransactionManager是Spring事务......
  • 站在架构师角度:深入剖析Spring事务管理底层原理
    摘要Spring框架的事务管理是企业级应用开发中的一个核心特性,它为不同的事务使用场景提供了统一的抽象和实现。本文从架构师的角度出发,深入探讨Spring事务管理的底层原理,包括其设计哲学、核心组件、以及事务传播行为等。1.事务管理概述事务是数据库操作中的一个基本概念,它保......
  • SpringBoot集成Swagger+Knife4j
    在pom.xml中引入依赖<!--knife4j接口文档--><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><versi......
  • 毕业设计-基于Springboot+Vue的在线考试系统的设计与实现(源码+LW+包运行)
    源码获取:https://download.csdn.net/download/u011832806/89456184基于SpringBoot+Vue的在线考试系统开发语言:Java数据库:MySQL技术:SpringBoot+MyBatis+Vue.js工具:IDEA/Ecilpse、Navicat、Maven系统演示视频:链接:https://pan.baidu.com/s/1ylSj7umVPabcPHK9oO5psA?pwd=iw......
  • 毕业设计-基于Springboot+Vue的校园交友网站的设计与实现(源码+LW+包运行)
    源码获取:https://download.csdn.net/download/u011832806/89461651基于SpringBoot+Vue的校园交友网站开发语言:Java数据库:MySQL技术:SpringBoot+MyBatis+Vue.js工具:IDEA/Ecilpse、Navicat、Maven系统演示视频:链接:https://pan.baidu.com/s/146tUBgOIUaVG1IIsqVLy8A?pwd=xt......
  • 毕业设计-基于Springboot+Vue的线上教学平台的设计与实现(源码+LW+包运行)
    源码获取:https://download.csdn.net/download/u011832806/89421458基于SpringBoot+Vue的线上教学平台开发语言:Java数据库:MySQL技术:SpringBoot+MyBatis+Vue.js工具:IDEA/Ecilpse、Navicat、Maven视频演示地址:链接:https://pan.baidu.com/s/1_eN2FDY25D5XUIz4i7Jwcw?pwd=......
  • 免费分享一套SpringBoot+Vue校园求职人才招聘(企业招聘)网站系统【论文+源码+SQL脚本
    大家好,我是java1234_小锋老师,看到一个不错的SpringBoot+Vue校园求职人才招聘(企业招聘)网站系统,分享下哈。项目视频演示【免费】SpringBoot+Vue校园求职人才招聘网站(企业招聘)网站系统Java毕业设计_哔哩哔哩_bilibili【免费】SpringBoot+Vue校园求职人才招聘网站(企业招聘)......
  • Caused by: org.springframework.beans.factory.BeanCreationException: Error creati
    这个错误信息表明在初始化blogServiceImpl这个bean时遇到了问题,具体原因是Java类org.aspectj.util.PartialOrder$PartialComparable没有找到。这通常意味着你的项目中缺少AspectJ相关的依赖或配置。AspectJ是一个面向切面编程(AOP)的框架,它需要特定的编译器和运行时库。要......
  • springboot 自动配置原理
    @SpringBootApplication发现是一个复合注解@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan由三个注解组合而来@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfigurat......