프레임워크 : 뼈대
- 프론트엔드 : AngularJS, React, Bootstrap, Vue.js, Node.js, Nexacro 등
- 백엔드 : Structs, Spring, Spring Boot, 전자정부 등
스프링 프로젝트의 종류
- Spring Starter Project : Spring Boot 이용
- 복잡한 설정 없이 개발 환경이 준비
- Embed Tomcat을 사용하기 때문에 따로 톰캣의 버전관리가 필요 없음
- dependency 자동화
- XML 설정이 필요없음
- Spring Legacy Project : JDBC 탬플릿을 이용
- 복잡하지만 실무에서 많이 사용
스프링
- 자바 언어 기반
- html, css, javascript, jquery 등의 스크립트 언어
DI(Dependency Injection)
- 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입 시켜주는 방식
- 모듈 간의 결합도가 낮아지고 유연성이 높아짐

IoC 컨테이너(Inversion of Control)
- 메소드나 객체의 호출작업을 개발자가 결정하는 것이 아니라, 외부에서 결정되는 것을 의미
- 객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성 할 수 있게 하여 가독성 및 코드 중복, 유지 보수를 편하게 함

스프링에서의 객체 생성 순서
- 객체( Bean ) 생성
- 의존성 객체 주입스스로가 만드는것이 아니라 제어권을 스프링에게 위임하여 스프링이 만들어놓은 객체를 주입
- 의존성 객체 메소드 호출
→ Bean들은 싱글톤 패턴의 특징을 가짐
빌드관리 도구
- 프로젝트에서 작성한 java코드와 프로젝트 내에 필요한 각종 xml, properties, jar 파일들을 JVM이나 WAS가 인식할 수 있도록 패키징해주는 빌드 과정
- 개발에 필요한 라이브러리들을 다운받을 필요 없이 빌드 도구 설정 파일에 필요한 라이브러리 종류와 버전들, 종속성 정보를 명시하여 필요한 라이브러리들을 자동으로 다운로드 해주고 이를 간편히 관리해주는 도구
- Maven
- 빌드 중인 프로젝트, 빌드 순서, 다양한 외부 라이브러리 종속성 관계를 pom.xml파일에 명시
- 외부저장소에서 필요한 라이브러리와 플러그인들을 다운로드 한다음, 로컬시스템의 캐시에 모두 저장
- Gradle
- Groovy 언어를 사용한 Domain-specific-language를 사용 (설정파일을 xml파일을 사용하는 Maven보다 코드가 훨씬 간결)
- 프로젝트의 어느부분이 업데이트되었는지 알기 때문에, 빌드에 점진적으로 추가할 수 있음
- 업데이트가 이미 반영된 빌드의 부분은 더이상 재실행되지 않기 때문에 빌드 시간이 훨씬 단축될 수 있음
스프링 프로젝트 생성
spring Legacy Project 클릭 → Spring MVC Project 클릭 → 상위 패키지 입력

스프링을 이용한 객체 생성과 조립
- 프로젝트 생성 > src/main/resources 우클릭 > new > Spring Bean Configuration File
- MainClass.java : xml파일로 객체의 정보를 가져와 해당 클래스 객체의 메소드 실행 String configLoc = “classpath:applicationCTX.xml”; : 객체 정보가 있음 AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLoc) : 객체 정보를 가져옴 MyCalculator myCalculator = ctx.getBean(”myCalculator”(참조변수),MyCalculator.class);
- → 참조변수는 xml파일의 bean 태그의 id와 같아야함
- applicationCTX.xml

<Circle.java>
public class Circle {
public void area(int radius) {
System.out.println("원의 면적은 "+(radius*radius*3.14));
}
}
<MyCircle.java>
public class MyCircle {
private Circle circle;
private int radius;
public Circle getCircle() {
return circle;
}
public void setCircle(Circle circle) {
this.circle = circle;
}
public int getRadius() {
return radius;
}
public void setRadius(int radius) {
this.radius = radius;
}
public void ar() {
circle.area(radius);
}
}
<MainCircle.java>
public class MainCircle {
public static void main(String[] args) {
String configLoc = "classpath:circleCTX.xml";
AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLoc);
MyCircle myCircle = ctx.getBean("myCircle", MyCircle.class);
myCircle.ar();
}
}
<circleCTX.xml>
<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="circle" class="com.javalec.spring_ex3_1.Circle"></bean>
<bean id="myCircle" class="com.javalec.spring_ex3_1.MyCircle">
<property name="circle">
<ref bean="circle"/>
</property>
<property name="radius" value="10"></property>
</bean>
</beans>
'java,jsp,spring > Spring' 카테고리의 다른 글
Spring 프로젝트 설계 - 기본 게시판 (0) | 2022.10.11 |
---|---|
Spring 기초 (5) (0) | 2022.10.11 |
Spring 기초 (4) (0) | 2022.10.11 |
Spring 기초 (3) (0) | 2022.10.05 |
Spring 기초 (2) (0) | 2022.10.04 |