'Spring/Study'에 해당되는 글 25건
- 2020.04.08 :: 스프링(Spring) 다양한 의존 객체 주입
- 2020.04.08 :: 스프링(Spring) DI(Dependency Injection)
- 2020.04.07 :: 스프링(Spring) Hello World!
- 2020.04.07 :: 스프링(Spring) 프로젝트 생성
- 2020.04.06 :: 스프링(Spring) 개요
(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)
생성자를 이용한 의존 객체 주입
public StudentRegisterService(StudentDao studentDao) {
this.studentDao = studentDao;
}
|
cs |
<baen id="studentDao" class="ems.member.dao.StudentDao"></bean>
<bean id="registerService" class="ems.member.service.StudentRegisterService">
<constructor-arg ref="studentDao"></constructor-arg>
</bean>
|
cs |
setter를 이용한 의존 객체 주입
public void setJdbcUrl(String jdbcUrl) {
this.jdbcUrl = jdbcUrl;
}
public void setUserId(String userId) {
this.userId = userId;
}
public void setUserPw(String userPw) {
this.userPw = userPw;
}
|
cs |
<bean id="dataBaseConnectionInfoDev" class="ems.member.DataBaseConnectionInfo">
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:xe" />
<property name="userId" value="moomini" />
<property name="userPw" value="1234" />
</bean>
|
cs |
List타입 의존 객체 주입
public void setDevelopers(List<String> developers) {
this.developers = developsers;
}
|
cs |
<property name="developers">
<list>
<value>Cheney.</value>
<value>Eloy.</value>
<value>Jasper.</value>
<value>Dillon.</value>
<value>Kian.</value>
</list>
</property>
|
cs |
Map타입 의존 객체 주입
public void setAdministrators(Map<String, String> administrators) {
this.administrators = administrators;
}
|
cs |
<property name="administrators"> <map> <entry> <key> <value>Cheney</value> </key> <value>cheney@springPjt.org</value </entry> <entry> <key> <value>Jasper</value> </key> <value>jasper@springPjt.org</value </entry> </map> </property> |
'Spring > Study' 카테고리의 다른 글
스프링(Spring) 빈(Bean)의 범위 (0) | 2020.04.09 |
---|---|
스프링(Spring) 설정 파일 분리 (0) | 2020.04.09 |
스프링(Spring) DI(Dependency Injection) (0) | 2020.04.08 |
스프링(Spring) Hello World! (0) | 2020.04.07 |
스프링(Spring) 프로젝트 생성 (0) | 2020.04.07 |
(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)
DI(Dependency Injection)란 의존성 주입이라고도 하며, 객체를 직접 생성하는 것이 아니라 외부에서 객체를 생성한 후 주입하는 방식을 말한다. DI를 이용하면 프로그램을 수정할 때 설정 파일만 바꿔주면 되기 때문에 확장성이 뛰어나고, 유지보수에 용이하다.
방법1) 객체 직접 생성
Hello.java
1
2
3
4
5
6
7
|
package helloSpring;
public class Hello {
public void print() {
System.out.println("Hello World!");
}
}
|
cs |
- Line 4 : print() 메소드 선언
- Line 5 : Hello World! 출력
MainClass.java
1
2
3
4
5
6
7
8
|
package helloSpring;
public class MainClass {
public static void main(String[] args) {
Hello hello = new Hello();
hello.print();
}
}
|
cs |
- Line 5 : new를 이용하여 hello 객체 생성
- Line 6 : print() 메소드 호출
방법2) 외부에서 객체를 생성한 후 주입
Hello.java
1
2
3
4
5
6
7
8
|
package helloSpring;
public class Hello {
public void print() {
System.out.println("Hello World!");
}
}
|
cs |
- Line 4 : print() 메소드 선언
- Line 5 : Hello World! 출력
applicationContext.java
1
2
3
4
5
6
7
8
9
|
<?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.xsd">
<bean id="hello" class="helloSpring.Hello" />
</beans>
|
cs |
- Line 7 : Hello 클래스를 hello라는 ID의 bean으로 등록
MainClass.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
package helloSpring;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MainClass {
public static void main(String[] args) {
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationContext.xml");
Hello hello = ctx.getBean("hello", Hello.class);
hello.print();
ctx.close();
}
}
|
cs |
- Line 7 : 스프링 컨테이너가 생성되고, 내부에 bean 객체들이 생성 (XML로부터 객체 설정 정보를 가져옴)
- Line 9 : hello라는 객체를 생성하고, XML에서 ID가 hello인 bean을 가져와서 넣어줌
- Line 10 : hello 객체의 print() 메소드 호출
- Line 12 : 스프링 컨테이너와 bean 객체들이 소멸
'Spring > Study' 카테고리의 다른 글
스프링(Spring) 설정 파일 분리 (0) | 2020.04.09 |
---|---|
스프링(Spring) 다양한 의존 객체 주입 (0) | 2020.04.08 |
스프링(Spring) Hello World! (0) | 2020.04.07 |
스프링(Spring) 프로젝트 생성 (0) | 2020.04.07 |
스프링(Spring) 개요 (0) | 2020.04.06 |
(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)
스프링(Spring)에서는 자바처럼 new를 이용하여 객체를 직접 생성하지 않고, 스프링 설정파일(XML)을 이용한다.
스프링(Spring) 프로젝트 생성 : https://devmoomini.tistory.com/46
Hello.java
1
2
3
4
5
6
7
8
|
package helloSpring;
public class Hello {
public void print() {
System.out.println("Hello World!");
}
}
|
cs |
- Line 4 : print() 메소드 선언
- Line 5 : Hello World! 출력
applicationContext.xml
1
2
3
4
5
6
7
8
9
|
<?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.xsd">
<bean id="hello" class="helloSpring.Hello" />
</beans>
|
cs |
- Line 7 : Hello 클래스를 hello라는 ID의 bean으로 등록
MainClass.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
package helloSpring;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MainClass {
public static void main(String[] args) {
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationContext.xml");
Hello hello = ctx.getBean("hello", Hello.class);
hello.print();
ctx.close();
}
}
|
cs |
- Line 7 : 스프링 컨테이너가 생성되고, 내부에 bean 객체들이 생성 (XML로부터 객체 설정 정보를 가져옴)
- Line 9 : hello라는 객체를 생성하고, XML에서 ID가 hello인 bean을 가져와서 넣어줌
- Line 10 : hello 객체의 print() 메소드 호출
- Line 12 : 스프링 컨테이너와 bean 객체들이 소멸
실행결과
'Spring > Study' 카테고리의 다른 글
스프링(Spring) 설정 파일 분리 (0) | 2020.04.09 |
---|---|
스프링(Spring) 다양한 의존 객체 주입 (0) | 2020.04.08 |
스프링(Spring) DI(Dependency Injection) (0) | 2020.04.08 |
스프링(Spring) 프로젝트 생성 (0) | 2020.04.07 |
스프링(Spring) 개요 (0) | 2020.04.06 |
(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)
스프링(Spring) 프로젝트를 생성하기 위해서는 JDK와 이클립스(Eclipse)가 필요하다. 만약 설치가 되어있지 않다면, 아래의 URL을 참고해서 먼저 설치 후 진행하도록 하자.
JDK 설치 : https://devmoomini.tistory.com/39
JAVA 환경변수 설정 : https://devmoomini.tistory.com/40
이클립스(Eclipse) 설치 : https://devmoomini.tistory.com/41
1. Eclipse 실행 후 Project Explorer 영역에서 마우스 우클릭 - New - Project 클릭
2. maven을 검색해서 Maven Project 선택 후 Next 클릭
※ Maven : 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 빌드 도구
3. Create a simple project (skip archetype selection) 체크 후 Next 클릭
4. Group Id와 Artifact Id를 입력하고, Finish 클릭
※ Group Id : 프로젝트의 그룹명(ex. 지하철 노선 개발 프로젝트)
Artifact Id : Group Id에 속하는 프로젝트 이름(ex. 1호선, 2호선)
5. pom.xml에 아래 그림과 같이 입력 후 저장한다.
※ pom.xml : Maven 설정 파일로, 프로젝트에 import 되는 jar 파일의 정보와 버전 정보를 가지는 파일
dependencies : 의존성을 정의하는 부분으로, 라이브러리를 불러옴
build : 빌드할 때 사용할 플러그인 목록을 저장
6. Eclipse 하단부의 Markers을 보면 에러가 발생한 것을 확인할 수 있는데, 프로젝트의 JRE 라이브러리 버전이 메이븐 설정 파일의 버전과 일치하지 않아서 발생하는 에러
7. 프로젝트 폴더 마우스 우클릭 - Maven - Update Project...를 클릭
8. OK를 클릭하여 프로젝트 업데이트
9. 에러 없이 정상적으로 동작하고, pom.xml에서 입력한 라이브러리가 Maven Dependencies에 자동으로 다운받아진 것 확인
※ src/main/java : .java 파일을 관리하는 곳
src/main/resources : 스프링 설정 파일(XML), 프로퍼티 파일 등 자원 파일을 관리하는 곳
'Spring > Study' 카테고리의 다른 글
스프링(Spring) 설정 파일 분리 (0) | 2020.04.09 |
---|---|
스프링(Spring) 다양한 의존 객체 주입 (0) | 2020.04.08 |
스프링(Spring) DI(Dependency Injection) (0) | 2020.04.08 |
스프링(Spring) Hello World! (0) | 2020.04.07 |
스프링(Spring) 개요 (0) | 2020.04.06 |
(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)
스프링 프레임워크
- 스프링 프레임워크란 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크이다. 스프링은 모듈로 구성되어있으며, 주요 기능으로 DI, AOP, MVC, JDBC 등을 제공한다.
※ 프레임워크(Framework) : 개발 시 기본이 되는 뼈대나 틀
- DI(Dependency Injection) : 클래스 간의 의존관계를 컨테이너가 자동으로 연결
- AOP(Aspect Oriented Programming) : 공통 기능을 분리시켜 별도로 처리하고, 필요한 시점에 적용
- MVC(Model-View-Controller) : Model, View, Controller로 구조화시키는 디자인 패턴
- JDBC(Java Database Connectivity) : 자바에서 DB에 접속할 수 있도록 하는 자바 API
스프링 프레임워크 모듈
- spring-core : 스프링의 핵심인 DI(Dependency Injection)와 IoC(Inversion of Control)를 제공
※ IOC(Inversion of Control) : 인스턴스의 생성부터 소멸까지의 객체 생명주기를 스프링(컨테이너)이 관리
- spring-aop : AOP 구현 기능 제공
- spring-jdbc : 데이터베이스를 쉽게 다룰 수 있는 기능 제공
- spring-tx : 트랜잭션 관련 기능 제공
- spring-webmvc : 스프링에서 독립적으로 Model, View, Controller를 지원하기 위한 기능 제공
스프링 컨테이너(IOC)
- 스프링에서 객체를 생성하고 조립하는 컨테이너로, 컨테이너를 통해 생성된 객체를 빈(Bean)이라고 부른다.
'Spring > Study' 카테고리의 다른 글
스프링(Spring) 설정 파일 분리 (0) | 2020.04.09 |
---|---|
스프링(Spring) 다양한 의존 객체 주입 (0) | 2020.04.08 |
스프링(Spring) DI(Dependency Injection) (0) | 2020.04.08 |
스프링(Spring) Hello World! (0) | 2020.04.07 |
스프링(Spring) 프로젝트 생성 (0) | 2020.04.07 |