IoC 소개
일반적인 Java 개발에서 프로그래머는 클래스 내 다른 클래스의 메서드에 의존해야 합니다.
보통 new는 클래스에 의존한 후 클래스 인스턴스를 호출하는 방식입니다. 이런 개발의 문제점은 새로운 클래스 인스턴스를 균일하게 관리하기가 쉽지 않다는 것입니다.
Spring은 종속성 주입이라는 아이디어를 제안했습니다. 즉, 종속 클래스는 프로그래머에 의해 인스턴스화되지 않지만 Spring 컨테이너는 새 인스턴스를 지정하고 객체가 필요한 클래스에 인스턴스를 주입하는 데 도움이 됩니다.
의존성 주입의 또 다른 용어는 "제어 역전"입니다. 대중적인 이해는 다음과 같습니다: 일반적으로 우리는 새로운 인스턴스를 생성하고 이 인스턴스의 제어는 프로그래머입니다.
제어 반전이란 새로운 인스턴스 작업이 프로그래머에 의해 수행되지 않고 Spring 컨테이너로 넘겨진다는 것을 의미합니다.
Spring에는 다양한 형태의 종속성 주입이 있습니다. 이 기사에서는 Spring이 xml을 통해 IOC 구성을 수행하는 방법만 소개합니다.
1.Set 주입
가장 간단한 주입 방법입니다. SpringAction이 있고 클래스에서 SpringDao 객체를 인스턴스화해야 한다고 가정하면 다음과 같이 정의할 수 있습니다. 개인 SpringDao 멤버 변수를 만들고 SpringDao set 메서드를 만듭니다(이것은 ioc의 주입 항목입니다).
그런 다음 spring xml 파일을 작성합니다.
<!--配置bean,配置后该类由spring管理--> <bean name="springAction" class="com.bless.springdemo.action.SpringAction"> <!--(1)依赖注入,配置当前类中相应的属性--> <property name="springDao" ref="springDao"></property> </bean> <bean name="springDao" class="com.bless.springdemo.dao.impl.SpringDaoImpl"></bean>
2. 생성자 주입
이 주입 방법은 매개변수를 이용한 주입을 말합니다 생성자 주입, 아래 예를 보세요. 두 개의 멤버 변수 SpringDao와 User를 생성했지만 객체의 set 메서드를 설정하지 않았으므로 여기서 주입 방법은 지원되지 않습니다. 즉, SpringAction 객체를 생성할 때 SpringDao와 User의 두 매개변수 값인
public class SpringAction { //注入对象springDao private SpringDao springDao; private User user; public SpringAction(SpringDao springDao,User user){ this.springDao = springDao; this.user = user; System.out.println("构造方法调用springDao和user"); } public void save(){ user.setName("卡卡"); springDao.save(user); } }를 전달해야 합니다.
은 또한 XML 파일 형식에서
<!--配置bean,配置后该类由spring管理--> <bean name="springAction" class="com.bless.springdemo.action.SpringAction"> <!--(2)创建构造器注入,如果主类有带参的构造方法则需添加此配置--> <constructor-arg ref="springDao"></constructor-arg> <constructor-arg ref="user"></constructor-arg> </bean> <bean name="springDao" class="com.bless.springdemo.dao.impl.SpringDaoImpl"></bean> <bean name="user" class="com.bless.springdemo.vo.User"></bean>
메소드 매개변수의 구성 불확실성을 해결하기 위해 생성자가 전달한 두 매개변수가 동일한 유형인지를 구별해야 할 수도 있습니다. 해당 값을 찾으려면 약간의 처리가 필요합니다:
다음은 매개변수 위치인 인덱스를 설정하는 것입니다:
<bean name="springAction" class="com.bless.springdemo.action.SpringAction"> <constructor-arg index="0" ref="springDao"></constructor-arg> <constructor-arg index="1" ref="user"></constructor-arg> </bean>
다른 하나는 매개변수 유형을 설정하는 것입니다:
<constructor-arg type="java.lang.String" ref=""/>정적 팩토리 메소드 주입
정적 팩토리는 이름에서 알 수 있듯이 정적 팩토리 메소드를 호출하여 필요한 객체를 얻는 것입니다. 스프링이 모든 객체를 관리하기 위해서는 "Engineering Class.Static Method()"를 통해 직접 객체를 얻을 수는 없지만, 여전히 스프링 주입을 통해 얻습니다.
package com.bless.springdemo.factory; import com.bless.springdemo.dao.FactoryDao; import com.bless.springdemo.dao.impl.FactoryDaoImpl; import com.bless.springdemo.dao.impl.StaticFacotryDaoImpl; public class DaoFactory { //静态工厂 public static final FactoryDao getStaticFactoryDaoImpl(){ return new StaticFacotryDaoImpl(); } }
또한 주요 클래스를 살펴보세요. 여기서는 FactoryDao 객체를 주입해야 합니다. 첫 번째 객체와 완전히 동일해 보입니다. 그러나 후속 XML을 보면 큰 차이점을 발견할 수 있습니다.
public class SpringAction { //注入对象 private FactoryDao staticFactoryDao; public void staticFactoryOk(){ staticFactoryDao.saveFactory(); } //注入对象的set方法 public void setStaticFactoryDao(FactoryDao staticFactoryDao) { this.staticFactoryDao = staticFactoryDao; } }
Spring IOC 구성 파일, <가 가리키는 클래스에 유의하세요. ;bean name="staticFactoryDao">는 FactoryDao의 구현 클래스가 아니지만 정적 팩토리 DaoFactory를 가리키며 호출할 팩토리 메서드를 지정하도록 Factory-method="getStaticFactoryDaoImpl"을 구성합니다.
<!--配置bean,配置后该类由spring管理--> <bean name="springAction" class="com.bless.springdemo.action.SpringAction" > <!--(3)使用静态工厂的方法注入对象,对应下面的配置文件(3)--> <property name="staticFactoryDao" ref="staticFactoryDao"></property> </property> </bean> <!--(3)此处获取对象的方式是从工厂类中获取静态方法--> <bean name="staticFactoryDao" class="com.bless.springdemo.factory.DaoFactory" factory-method="getStaticFactoryDaoImpl"></bean>4. 인스턴스 팩토리의 메소드 주입
인스턴스 팩토리의 의미는 객체 인스턴스를 얻는 방법이 정적이지 않다는 것입니다. 먼저 새 팩토리 클래스를 생성한 다음 일반 인스턴스 메서드를 호출해야 합니다.
public class DaoFactory { //实例工厂 public FactoryDao getFactoryDaoImpl(){ return new FactoryDaoImpl(); } }
그런 다음 다음 클래스는 할 말이 없으며 다음과 매우 유사합니다. 이전 것, 그러나 FactoryDao 객체는 인스턴스 팩토리 클래스를 통해 생성되어야 합니다:
public class SpringAction { //注入对象 private FactoryDao factoryDao; public void factoryOk(){ factoryDao.saveFactory(); } public void setFactoryDao(FactoryDao factoryDao) { this.factoryDao = factoryDao; } }
마지막으로 스프링 구성 파일을 살펴보세요:
<!--配置bean,配置后该类由spring管理--> <bean name="springAction" class="com.bless.springdemo.action.SpringAction"> <!--(4)使用实例工厂的方法注入对象,对应下面的配置文件(4)--> <property name="factoryDao" ref="factoryDao"></property> </bean> <!--(4)此处获取对象的方式是从工厂类中获取实例方法--> <bean name="daoFactory" class="com.bless.springdemo.factory.DaoFactory"></bean> <bean name="factoryDao" factory-bean="daoFactory" factory-method="getFactoryDaoImpl"></bean>5. 요약
가장 일반적으로 사용되는 Spring IOC 주입 방법은 (1)(2)입니다. 글을 쓰고 연습할수록 당신은 더욱 능숙해질 것입니다.
참고: Spring을 통해 생성된 객체는 기본적으로 싱글톤입니다. 여러 인스턴스 객체를 생성해야 하는 경우
<bean name="..." class="..." scope="prototype">
위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다. 또한 PHP 중국어 웹사이트를 지원해 주시기 바랍니다.
Spring 종속성 주입의 여러 방법과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

Java는 JVM (Java Virtual Machines) 및 바이트 코드에 의존하는 "Write Once, Everywhere 어디에서나 Run Everywhere"디자인 철학으로 인해 플랫폼 독립적입니다. 1) Java Code는 JVM에 의해 해석되거나 로컬로 계산 된 바이트 코드로 컴파일됩니다. 2) 라이브러리 의존성, 성능 차이 및 환경 구성에주의하십시오. 3) 표준 라이브러리를 사용하여 크로스 플랫폼 테스트 및 버전 관리가 플랫폼 독립성을 보장하기위한 모범 사례입니다.

java'splatformincceldenceisisnotsimple; itinvolvescomplex

Java'SplatformIndenceBenefitsWebApplicationScodetorUnonySystemwithajvm, simplifyingDeploymentandScaling.Itenables : 1) EasyDeploymentAcrossDifferentservers, 2) SeamlessScalingAcrossCloudPlatforms, 3))

thejvmistheruntimeenvironmenmentforexecutingjavabytecode, Crucialforjava의 "WriteOnce, runanywhere"capability.itmanagesmemory, executesThreads, andensuressecurity, makingestement ofjavadeveloperStandStandStandStandStandStandStandStandStandStandStandStandStandStandStandStandStandStandStandStandStandStandStandStandStandStandStandStandStandStandStandStandSmetsmentsMemory

javaremainsatopchoicefordevelopersdueToitsplatformindence, 객체 지향 데 디자인, 강력한, 자동 메모리 관리 및 compehensiveStandardlibrary

Java'splatforminceldenceMeansdeveloperscanwriteCodeOnceAndrunitonAnyDevicewithoutRecompiling.thisiSocievedTheRoughthejavirtualMachine (JVM), thisTecodeIntomachine-specificinstructions, hallyslatslatsplatforms.howev

JVM을 설정하려면 다음 단계를 따라야합니다. 1) JDK 다운로드 및 설치, 2) 환경 변수 설정, 3) 설치 확인, 4) IDE 설정, 5) 러너 프로그램 테스트. JVM을 설정하는 것은 단순히 작동하는 것이 아니라 메모리 할당, 쓰레기 수집, 성능 튜닝 및 오류 처리를 최적화하여 최적의 작동을 보장하는 것도 포함됩니다.

ToensureJavaplatform Independence, followthesesteps : 1) CompileIndrunyourApplicationOnMultiplePlatformsUsingDifferentOnsandjvMversions.2) Utilizeci/CDPIPELINES LICKINSORTIBACTIONSFORAUTOMATES-PLATFORMTESTING


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경