본문 바로가기
목차
요약

뉴렉처 스프링 5~17강 요약

by 지각생 2022. 1. 1.
728x90

5강_Dependency를 직접 Injection하기
(Program.java)
출력(print(),setExam())과 기능(kor,eng,math, com, total(),avg())으로 메서드로 각각 구성해서 인젝션

 

https://late90.tistory.com/91



6강_이클립스 플러그인 설치
(폴더)
자바프로젝트 우클릭 - new -other - spring - 'setting.xml'

 

https://late90.tistory.com/90



7강_DI 지시서 작성
(setting.xml)
<!-- Exam exam = new NewlecExam(); -->
<bean id="exam" class="spring.di.entity.NewlecExam" />
<!-- ExamConsole console = new GridExamConsole(exam); -->
<bean id="console" class="spring.di.ui.GridExamConsole" >
<!-- console.setExam(exam); -->
<property name="exam" ref="exam">
</property>
<!-- 위의 "exam"은 속성이 아니라 메서드에 따른것이다. 즉, setExam의 set을 없애고 E를 소문자화한 것 -->
</bean>

 

https://late90.tistory.com/92



8강_IoC 컨테이너 사용(ApplicationContext)
==>(Program.java)ApplicationContext context = new ClassPathXmlApplicationContext("spring/di/setting.xml";);
==>(폴더)프로젝트 폴더 우클릭 - [Configure]-[Convert to Maven Project]
==>(폴더 내) pom.xml 생성됨
==>(pom.xml)Dependencies탭 - Add
==>(pom.xml)
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
==>(Program.java) Import 'ApplicationContext' (org.springframework.context)
(이렇게 하면 객체 두개 생성되서 인젝션 후 컨테이너에 담김)
==>(컨테이너에서 꺼낼때 2가지 방법)
ExamConsole console = (ExamConsole) context.getBean("console");
ExamConsole console = context.getBean(ExamConsole.class);

 

https://late90.tistory.com/93 

https://late90.tistory.com/105



9강_값 형식 DI
==>(NewlecExam.java) getter setter메서드 추가
==>(setting.xml)(방법1)
<bean id="exam" class="spring.di.entity.newlecExam">
<property name="kor" value="10"/>

==>(setting.xml)(방법2)
<bean id="exam" class="spring.di.entity.newlecExam">
<propety name="kor">
<value>10</value>
</property>

 

https://late90.tistory.com/106



스프링 10강 - 생성자 DI
==>(NewlecExam.java) 기본 생성자, 생성자 오버로드 작성
==>(setting.xml)(생성자 오버로드 활용 방법)===========(방법1)
<bean id="exam" class="spring.di.entity.NewlecExam">
<constructor-arg value="10"/>

==>(setting.xml)(생성자 오버로드 활용 방법)(인덱스 속성 활용)===========(방법2)
<bean id="exam" class="spring.di.entity.NewlecExam">
<constructor-arg index="0" value="10"/>

==>(setting.xml)(생성자 오버로드 활용 방법)(name속성 활용)===========(방법3)
<bean id="exam" class="spring.di.entity.NewlecExam">
<constructor-arg name="kor" value="10"/>

==>(setting.xml)(생성자 오버로드 활용 방법)(type속성 활용)===========(방법4)
<bean id="exam" class="spring.di.entity.NewlecExam">
<constructor-arg type="kor" value="10"/>
==>(setting.xml)(namespace탭)(P체크)

==>(setting.xml)(생성자 오버로드 활용 방법)(p:속성 활용)===========(방법5)
<bean id="exam" class="spring.di.entity.NewlecExam" p:kor="10"/>

  https://late90.tistory.com/107



스프링 강의 11강 _ 콜렉션 생성과 목록 DI
==>(setting.xml)(생성자 오버로드 활용 방법)===========(방법1)
<bean id="exams" class="java.util.ArrayList">
    <constructor-arg>
        <list>
              <bean id="exam" class="spring.di.entity.NewlecExam" p:kor="1" p:eng="1"/>
              <ref bean="exam"/>
         </list>
     </constructor-arg>
</bean>

==>(setting.xml)(콜렉션 객체 직접 생성 방법)===========(방법2)
[setting.xml]-[NameSpaces]-[utill 체크]

<util:list id="exams" list-class="java.util.ArrayList">
      <bean id="exam" class="spring.di.entity.NewlecExam" p:kor="2" p:eng="2"/>
      <ref bean="exam"/>
</util:list>
--------------------------------------------------참고----------------------------------------------------
<bean id="exam" class="spring.di.entity.NewlecExam" p:kor="1" p:eng="1"/>는 객체를 직접 생성하는 방법이고.
<ref bean="exam"/>    는 <list>보다 이전에 만든 객체꺼를 참조하여 객체를 생성하는 방식이다.
----------------------------------------------------------------------------------------------------------

https://late90.tistory.com/108



스프링 강의 12강 _ 어노테이션을 이용할 때의 장점과 @Autowired를 이용한 DI 해보기
[setting.xml]-[NameSpaces]-[context 체크]
(setting.xml)<context:annotation-config/>
(setting.xml)<bean id="console" class="spring.di.ui.InlineExamConsole">
(InlineExamConsole.java) @Autowired
----------------------------참고---------------------------------
@Autowired지시 하나가

<!-- console.setExam(exam); -->
<!-- <property name="exam" ref="exam"></property> -->

이 표현 두 줄을 대신 해준다
-----------------------------------------------------------------

 

https://late90.tistory.com/109



스프링 강의 13강 - @Autowired의 동작방식 이해와 @Qualifier 사용하기
@Autowired의 동작방식 이해 

(setting.xml)
<bean id="exam" class="spring.di.entity.NewlecExam" >

(InlineExamConsole.java)
@Autowired
public void setExam(Exam exam) {
System.out.println("setter");
this.exam = exam;
}
------------------------------정리--------------------------------------
<bean>내 class="spring.di.entity.NewlecExam"를 먼저 찾고

동일한 bean이 있다면 그 다음으로 bean내에서 id="exam" 를 찾는다.
------------------------------------------------------------------------

@Qualifier("exam1") 방법도 있다.
(setting.xml)
<bean id="exam1" class="spring.di.entity.NewlecExam" >
<bean id="exam2" class="spring.di.entity.NewlecExam" >

(InlineExamConsole.java)
@Autowired
@Qualifier("exam1")
public void setExam(Exam exam) {
this.exam = exam;
}
------------------------------정리--------------------------------------
<bean>내 id가 모두 setExam메서드의 exam과 일치하지 않으므로
@Qualifier("exam1")와 일치하는 bean내 id를 찾는다.
------------------------------------------------------------------------

 

https://late90.tistory.com/110



스프링 강의 14강 _ @Autowired의 위치와 required 옵션
setter 인젝션===========================(방법1)

@Autowired
@Qualifier("exam2")

public void setExam(Exam exam) {
this.exam = exam;
}
constructor 인젝션 (생성자 오버로드)=============(방법2)

@Autowired

public InlineExamConsole(@Qualifier("exam1")Exam exam1,

                                 @Qualifier("exam2")Exam exam2) {
this.exam = exam;
}
기본 생성자를 인젝션하는 방식=======================(방법3)
@Autowired
@Qualifier("exam2")
private Exam exam;

setting.xml에서 객체 없이===========================(방법4)
@Autowired(required=false)
@Qualifier("exam2")
private Exam exam;

https://late90.tistory.com/111



스프링 강의 15강 - 어노테이션을 이용한 객체생성
형식으로 찾기===========================================(방법1)
(InlineExamConsole.java)
@Component
class InlineExamConsole

(NewlecExam.java)
@Component
public class NewlecExam implements Exam

(Program.java)
ApplicationContext context = new ClassPathXmlApplicationContext("spring/di/setting.xml")
ExamConsole console = context.getBean(ExamConsole.class);

(setting.xml)
<context:component-scan base-package="spring.di.ui, spring.di.entity"/>

이름으로 찾기===================================(방법2)
(InlineExamConsole.java)
@Component("console")
class InlineExamConsole

(NewlecExam.java)
@Component
public class NewlecExam implements Exam

(Program.java)
ApplicationContext context = new ClassPathXmlApplicationContext("spring/di/setting.xml")
ExamConsole console = (ExamConsole) context.getBean("console");

(setting.xml)
<context:component-scan base-package="spring.di.ui, spring.di.entity"/>
-------------------참고-------------------------
추가해줬다면
<context:annotation-config/>는 지워도 됨
------------------------------------------------


https://late90.tistory.com/112



스프링 강의 16강 _ 특화된 @Component 어노테이션 (@Controller/@Service/@Repository)
어노테이션으로 생성기 기본값 초기화하는 법
@Component
public class NewlecExam implements Exam{
@Value("20")
private int kor;
@Value("20")
private int eng;
private int math;
private int com;
}

 

https://late90.tistory.com/113



스프링 강의 17강 _ XML Configuration을 Java Configuration으로 변경하기
(NewlecDiConfig.java)
@Configuration <<설정을 위한 자바란 의미
@ComponentScan({"spring.di.ui", "spring.di.entity"}) <-- <context:component-scan base-package="spring.di.ui, spring.di.entity"/>
@Bean                                                <-- <bean id="exam" class="spring.di.entity.NewlecExam">
public Exam exam(){
return new NewlecExam();
}


(Program.java)
xml을 쓰는 방식
ApplicationContext context 
= new ClassPathXmlApplicationContext("spring/di/setting.xml");

어노테이션 방식
ApplicationContext context 
=new AnnotationConfigApplicationContext(NewlecDiConfig.class);


https://late90.tistory.com/114

728x90

'요약' 카테고리의 다른 글

메타코딩 스프링부트 강좌 요약  (0) 2022.01.24
뉴렉처 Spring 강의 요약  (0) 2022.01.10

댓글