Spring(2023-04-06)

권단비·2023년 4월 6일
0

IT

목록 보기
116/139
post-thumbnail
1.개발자가 가장 먼저 체크하는 순서
1)메이븐 - pom.xml부터 체크하고 
메이븐 - 스프링에서 많이 씀
그래들 - 안드로이드에서 씀
pom.xml
application.properties

빌드 : 컴파일 - 실행 - 테스트 - 배포
메이븐 : 빌드툴

[maven repository]
eclipse pom.xml에 lib추가 방법
https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl-api/1.2

[pom.xml : </properties> 밑에 붙여넣기]
<repositories>
		<repository>
			<id>oracle</id>
			<url>http://www.datanucleus.org/downloads/maven2/</url>
		</repository>
	</repositories>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<!-- spring-boot-devtools는 클래스 수정시 웹서버를 재시작하여 결과를 바로 반영 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<!-- 오라클 JDBC 드라이버 -->
		<dependency>
			<groupId>oracle</groupId>
			<artifactId>ojdbc6</artifactId>
			<version>11.2.0.3</version>
		</dependency>

		<!-- MyBatis 라이브러리 -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.1.4</version>
		</dependency>

		<!-- MyBatis sql pretty -->
		<dependency>
			<groupId>org.bgee.log4jdbc-log4j2</groupId>
			<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
			<version>1.16</version>
		</dependency>

		<!-- JSP를 사용하기 위한 라이브러리 -->
		<!-- 톰캣 파서 -->
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
		</dependency>

		<!-- jstl 라이브러리 -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.tomcat.maven</groupId>
				<artifactId>tomcat7-maven-plugin</artifactId>
				<version>2.2</version>
				<configuration>
					<url>http://146.56.137.240:8282/manager/text</url>
					<username>admin</username>
					<password>1234</password>
				</configuration>
			</plugin>
			<!-- cmd에 입력 ( 배포 ) : mvnw.cmd tomcat7:redeploy -->
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>
[application.xml]
#server port number
server.port = 8282

#datasource (oracle)
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521/xe
#spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
#spring.datasource.url=jdbc:log4jdbc:oracle:thin:@localhost:1521/xe
spring.datasource.username=scott
spring.datasource.password=tiger


#xml location
mybatis.mapper-locations=classpath:mappers/**/*.xml

#### jsp 
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

롬복(projectlombok) 다운
https://projectlombok.org/download


[스프링SPRING]

프레임워크 : 특정한 목적에 맞게 프로그래밍을 쉽게 하기 위한 약속 | 설계도에 맞춤 ⇒ 일관성↑ 유지보수↑

스프링 : 자바 언어를 기반으로 다양한 어플리케이션을 제작하기 위한 약속된 프로그래밍 툴

<스프링 장점>
1.정형화 : 일정수준이상의 품질을 기대
2.유지보수가 쉽다
3.개발자에게 기본적인 패턴(DI,AOP,서비스 추상화)등을 강제 시킴
4.유연성 및 각 모듈을 조립(설정을 통한)하면 기능을 쉽게 구현
5.모듈 추가 제거 및 관리가 수월
스프링 단점
1.습득시간이 오래걸림
2.스프링 설정하는 것에만 익숙해지다보니 코딩 실력이 떨어지게 됨
3.무겁다

[DI(Dependency Injection)]

의존성

각 클래스간의 의존관계를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것

1. Setter Injection
2. Constructor Injection
3. Method Injection

[IOC(Inversion of Control)]

제어의 역전 : 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미

[IOC Container]

bean 객체 : (getter/setter를 갖고 있는 객체)스프링 IoC 컨테이너가 관리하는 자바 객체
스프링

- IoC 컨테이너는 객체의 생성을 책임지고, 의존성을 관리한다.
- POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가진다.
- 개발자들이 직접 POJO를 생성할 수 있지만 컨테이너에게 맡긴다.

[계산 Pencil.java]
package com.javalec.ex;
public interface Pencil {
	public void use();
}
---------------------------------------------------------------------
[계산 Pencil4B.java]
package com.javalec.ex;
public class Pencil4B implements Pencil {
	@Override
	public void use() {
		System.out.println("4B 연필 입니다.");
	}
}
---------------------------------------------------------------------
[계산 Pencil6B.java]
package com.javalec.ex;
public class Pencil6B implements Pencil {
	@Override
	public void use() {
		System.out.println("6B 연필 입니다.");
	}
}
---------------------------------------------------------------------
[계산 Pencil6BWithEraser.java]
package com.javalec.ex;
public class Pencil6BWithEraser implements Pencil {
	@Override
	public void use() {
		System.out.println("6B에 지우개가 있습니다.");
	}
}
---------------------------------------------------------------------
[계산 applicationCTX2.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.xsd">

<!-- 객체생성 -->
<bean id="pencil" class="com.javalec.ex.Pencil4B"></bean>
</beans>
---------------------------------------------------------------------
[계산 MainClass.java]
package com.javalec.ex;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MainClass {
	public static void main(String[] args) {
    String configLocation = "classpath:applicationCTX2.xml";
		AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLocation);

		Pencil pencil = ctx.getBean("pencil",Pencil.class);
		pencil.use();
	}
}
[결과값]
4B 연필 입니다.

[Spring mvc]

[계산 HomeController.java]
package edu.global.ex.controller;
import org.springframework.web.bind.annotation.*;
@RestController
public class HomeController {
	@GetMapping("/")
	public String home() {
		return "안녕하세요";
	}
}
[결과값]


0개의 댓글