Explication détaillée de Spring IOC et DI
Qu'est-ce que Spring
Spring est un framework avec IoC et AOP comme noyau.
IoC (Inversion of Control, Inversion of Control) est le fondement de Spring.
IoC signifie simplement que lors de la création d'un objet, le programmeur précédent a appelé la nouvelle méthode constructeur au lieu de laisser Spring créer l'objet.
DI (Dependency Inject, injection de dépendances) a la même signification que IoC, mais ces deux termes décrivent le même concept sous deux angles.
En termes simples, DI est l'attribut de l'objet. Les valeurs pertinentes ont été injectées et peuvent être utilisées directement.
IoC-Inversion de contrôle
Après avoir encapsulé chaque classe d'objets, associez ces classes d'objets via le conteneur IoC. De cette manière, les objets sont connectés via le conteneur IoC et il n'y a pas de connexion directe entre les objets.
Avant que l'application n'introduise le conteneur IoC, l'objet A dépend de l'objet B. Ensuite, lorsque l'objet A est instancié ou s'exécute jusqu'à un certain point, il doit créer activement l'objet B ou l'utiliser. Objet créé B, qu'il s'agisse de créer ou d'utiliser l'objet B créé, le contrôle appartient à l'application elle-même.
Si l'application introduit le conteneur IoC, la connexion directe entre l'objet A et l'objet B est perdue. Par conséquent, lorsque l'objet A est instancié et exécuté, si l'objet B est nécessaire, le conteneur IoC le fera activement. créez un objet B et injectez-le (c'est-à-dire une injection de dépendances) à l'endroit où l'objet A en a besoin. En conséquence, le processus par lequel l'objet A devient dépendant de l'objet B passe d'un comportement actif à un comportement passif, c'est-à-dire que la création de l'objet est confiée au conteneur IoC pour traitement et les droits de contrôle sont inversés. ce qu'on appelle l'inversion du contrôle.
Injection de dépendances DI
Le conteneur IoC injecte dynamiquement certaines dépendances dans les objets pendant l'exécution. Par exemple, injectez (attribuez) l’objet B à une variable membre de l’objet A.
En fait, l'injection de dépendance (DI) et l'inversion de contrôle (IoC) sont des descriptions différentes de la même chose, d'une certaine manière, elles la décrivent sous des perspectives différentes. L'injection de dépendances est décrite du point de vue de l'application, c'est-à-dire que l'application s'appuie sur le conteneur pour créer et injecter les ressources externes dont elle a besoin, tandis que l'inversion de contrôle est décrite du point de vue du conteneur, c'est-à-dire que le conteneur contrôle le ; application, et le conteneur à l'envers L'application injecte les ressources externes requises par l'application. Les ressources externes mentionnées ici peuvent être des objets d'instance externes, des objets fichiers externes, etc.
Implémentation IoC et DI
(1) Injection de la méthode de définition de propriété : fait référence au conteneur IoC utilisant la méthode de définition pour injecter des instances dépendantes. Après avoir instancié un Bean en appelant le constructeur sans paramètre ou la méthode de fabrique statique sans paramètre et en appelant la méthode setter du Bean, l'injection de dépendances basée sur la méthode setter peut être implémentée. Cette méthode est simple, intuitive et facile à comprendre, c'est pourquoi l'injection de paramètres de Spring est largement utilisée.
package com.ssm.entry; public class UserServiceImpl implements UserService { private UserDao userDao; // setter()实现依赖注入 public void setUserDao(UserDao userDao){ this.userDao = userDao; } public void login() { this.userDao.login(); System.out.println("UserService login"); } }
(2) Injection de méthode constructeur : fait référence au conteneur IoC utilisant la méthode constructeur pour injecter des instances dépendantes. L'injection de dépendances basée sur le constructeur est implémentée en appelant le constructeur avec des paramètres, chaque paramètre représente une dépendance.
applicationContext.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 http://www.springframework.org/schema/beans/spring-beans-4.3.xsd"> <!-- 将指定类配置给Spring,让Spring创建其对象的实例 控制反转 --> <bean id="UserDao" class="com.ssm.entry.UserDaoImpl"></bean> <!-- 添加一个id为userService的Bean 依赖注入--> <bean id="UserService" class="com.ssm.entry.UserServiceImpl"> <!-- 将name为UserDao的Bean注入UserService实例中 --> <property name="UserDao" ref="UserDao"/> </bean> </beans>
Test IoC
package com.ssm.entry; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class IoC { public static void main(String[] args) { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); UserDao userDao = (UserDao)applicationContext.getBean("UserDao"); userDao.login(); } }
Test DI
package com.ssm.entry; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class DI { public static void main(String[] args) { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); UserService userService = (UserService)applicationContext.getBean("UserService"); userService.login(); } }
Tutoriel recommandé : "Tutoriel Java"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

En 2023, la technologie de l’IA est devenue un sujet brûlant et a un impact énorme sur diverses industries, notamment dans le domaine de la programmation. Les gens sont de plus en plus conscients de l’importance de la technologie de l’IA, et la communauté Spring ne fait pas exception. Avec l’évolution continue de la technologie GenAI (Intelligence Artificielle Générale), il est devenu crucial et urgent de simplifier la création d’applications dotées de fonctions d’IA. Dans ce contexte, « SpringAI » a émergé, visant à simplifier le processus de développement d'applications fonctionnelles d'IA, en le rendant simple et intuitif et en évitant une complexité inutile. Grâce à « SpringAI », les développeurs peuvent plus facilement créer des applications dotées de fonctions d'IA, ce qui les rend plus faciles à utiliser et à exploiter.

En tant que leader du secteur, Spring+AI fournit des solutions de pointe pour divers secteurs grâce à son API puissante et flexible et ses fonctions avancées. Dans cette rubrique, nous examinerons les exemples d'application de Spring+AI dans divers domaines. Chaque cas montrera comment Spring+AI répond à des besoins spécifiques, atteint ses objectifs et étend ces LEÇONS APPRISES à une gamme plus large d'applications. J'espère que ce sujet pourra vous inciter à comprendre et à utiliser plus profondément les possibilités infinies de Spring+AI. Le framework Spring a une histoire de plus de 20 ans dans le domaine du développement logiciel, et cela fait 10 ans que la version Spring Boot 1.0 est sortie. Maintenant, personne ne peut contester ce printemps

Comment implémenter les transactions programmatiques Spring : 1. Utilisez TransactionTemplate ; 2. Utilisez TransactionCallback et TransactionCallbackWithoutResult ; 3. Utilisez les annotations Transactional ; 4. Utilisez TransactionTemplate en combinaison avec @Transactional ;

SpringBoot et SpringCloud sont tous deux des extensions de Spring Framework qui aident les développeurs à créer et déployer des applications de microservices plus rapidement, mais elles ont chacune des objectifs et des fonctions différents. SpringBoot est un framework permettant de créer rapidement des applications Java, permettant aux développeurs de créer et de déployer plus rapidement des applications basées sur Spring. Il fournit un moyen simple et facile à comprendre de créer des applications Spring autonomes et exécutables.

Avec la mise à jour et l'itération de la technologie, Java5.0 a commencé à prendre en charge les annotations. En tant que framework leader en Java, Spring a lentement commencé à abandonner la configuration XML depuis sa mise à jour vers la version 2.5, et davantage d'annotations sont utilisées pour contrôler le framework Spring.

Comment définir le niveau d'isolement des transactions dans Spring : 1. Utilisez l'annotation @Transactional ; 2. Définissez-le dans le fichier de configuration Spring ; 3. Utilisez PlatformTransactionManager ; Introduction détaillée : 1. Utilisez l'annotation @Transactional, ajoutez l'annotation @Transactional à la classe ou à la méthode qui nécessite la gestion des transactions et définissez le niveau d'isolement dans l'attribut 2. Dans le fichier de configuration Spring, etc.

Dans le langage Java, IoC (Inversion of Control) et AOP (AspectOriented Programming) sont deux idées et technologies de programmation très importantes. Leur application peut grandement améliorer la maintenabilité, l'évolutivité et la réutilisabilité du code, aidant ainsi les développeurs à développer et à maintenir plus efficacement les systèmes logiciels. IoC est un modèle de conception orienté objet, également connu sous le nom d'« injection de dépendances ».

En tant que développeur Java, apprendre et utiliser le framework Spring est une compétence essentielle. Avec la popularité du cloud computing et des microservices, apprendre et utiliser Spring Cloud est devenu une autre compétence qui doit être maîtrisée. SpringCloud est un ensemble d'outils de développement basé sur SpringBoot permettant de créer rapidement des systèmes distribués. Il fournit aux développeurs une série de composants, notamment l'enregistrement et la découverte de services, un centre de configuration, l'équilibrage de charge et des disjoncteurs, etc., permettant aux développeurs de créer des micro-ordinateurs.
