분류 전체보기 364

Spring (4) - MySQL과 연결하기

0. DB 관련 library 불러오기 아래 사이트에서 코드를 복사해서 설정파일(application.xml 또는 pom.xml)에 붙여넣고 저장한다. 1) MySQL이 제공하는 connector https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.28 2) jdbc https://mvnrepository.com/artifact/org.springframework/spring-jdbc/5.3.19 1. DB 테이블과 DTO(데이터 객체) 만들기 Workbench를 열어, 이름과 나이 정보를 담을 테이블을 만든다. DB에서 값을 읽어와서 출력하는 기능 구현이 목표라서 값을 미리 넣어준다. create database testdb; use t..

Programming/Spring 2022.04.25

Spring (3) - Container에 객체(Bean) 설정하기4 : Java

xml파일 없이, 완전한 Annotation은 Java를 통해 구현할 수 있다. 1. 등록할 객체에 Annotation 작성하기 아래 글에서 2. Annotation 작성하기 를 따라 작성하면 된다. 2022.04.23 - [웹프로그래밍/Spring] - Spring (3) - Container에 객체(Bean) 설정하기3 : Annotation Spring (3) - Container에 객체(Bean) 설정하기3 : Annotation 0. Annotation 1. Stereotype Annotation Stereotype Annotation은 Bean을 등록할 때 사용할 수 있는 annotation이다. Stereotype 적용 대상 @Controller MVC Controller에 사용 @Servi..

Programming/Spring 2022.04.23

Spring (3) - Container에 객체(Bean) 설정하기3 : Annotation

0. Annotation 1. Stereotype Annotation Stereotype Annotation은 Bean을 등록할 때 사용할 수 있는 annotation이다. Stereotype 적용 대상 @Controller MVC Controller에 사용 @Service Service 계층 @Repository DB에 접근하는 계층 ex) DAO @Component 위의 계층에 속하지 않은 경우 ex) DTO 등 2. 의존 관계 설정 Annotation Annotation 설명 @Autowired Spring에서만 사용 가능 멤버 변수, setter, constructor, 일반 method에 사용 가능하며 타입에 맞춰서 연결함 예시 => 2022.04.20 - [웹프로그래밍/Spring] - Spr..

Programming/Spring 2022.04.23

Spring (3) - Container에 객체(Bean) 설정하기2 : XML

1. 객체(Bean) 등록할 XML파일 생성하기 src 우클릭 > [New] > [Spring Bean Configuration File] 파일 이름은 보통 application.xml을 사용한다. [Next] > beans 선택 > [Finish] 2. Container에 등록할 객체 설정하기 XML에 사용하는 태그에 대한 설명은 아래 [더보기]를 클릭해서 볼 수 있다. 더보기 *XML에 사용하는 태그 설명 태그명 설명 Root tag로, 이 태그의 body안에 모든 내용을 작성한다. *xmlns = ".../beans" = 원래 로 작성해야 하는데, beans는 앞에 아무것도 안쓰는 것으로 설정하는 것이다. 따라서 으로 작성하면 된다. Spring Container가 관리할 객체 설정 name 주입 ..

Programming/Spring 2022.04.22

Spring (3) - Container에 객체(Bean) 설정하기1 : 프로젝트 생성

Container에 객체를 설정하는 방법을 살펴보기 앞서 테스트를 위한 프로젝트를 먼저 생성해야 한다. Spring Boot가 아닌 일반 Spring Project는 [Spring Legacy Project]로 만든다. 하지만, '여기서는 Web을 만들지 않아도 되기 때문에, MVC패턴이 없는 Spring Project를 썼다. 굳이 쓰지 않는 파일까지 만들지 않고 보기 편하게 하기 위함이다. 1. Java Project 생성 2. Maven Project로 전환 Spring에서 필요한 library들을 Maven으로 쉽게 받아오기 위해, 전환한다. 생성한 Java Project에 마우스 우클릭 > Configure > Conver to Maven Project > Finish (수정 필요 X) 3. p..

Programming/Spring 2022.04.22

[Java] 백준 1414번 : 불우이웃돕기

1. 문제 https://www.acmicpc.net/problem/1414 1414번: 불우이웃돕기 첫째 줄에 컴퓨터의 개수 N이 주어진다. 둘째 줄부터 랜선의 길이가 주어진다. i번째 줄의 j번째 문자가 0인 경우는 컴퓨터 i와 컴퓨터 j를 연결하는 랜선이 없음을 의미한다. 그 외의 경우는 랜선 www.acmicpc.net 2. 풀이과정 요약하면 '그래프 Minimum Spanning Tree + 연결 있는 곳만 보기' 문제이다. 1) 입력을 받으면서 전체 선의 길이를 구해놓는다. 2) 자기 자신으로 가는 선, 연결 없는 선을 거르기 & i => j와 j => i 중 더 작은 값만 넣기 3) n개의 컴퓨터가 연결될 때까지 Kruskal 실행 import java.io.*; import java.uti..

Spring 기타(1) - 객체 간 결합도가 낮은 이유

Spring은 IoC를 통해, 객체 간의 결합도를 낮출 수 있다고 한다. 이번 글에서는 그 이유를 더 자세하게 살펴보려고 한다. 객체의 강한 결합부터 Spring에서 사용하는 약한 결합까지 차례로 작성했다. 1. 객체 간 강한 결합 클래스를 직접 호출 한계 결합된 클래스(UserServiceImpl, AdminServiceImpl)가 수정되면, HomeController도 수정해야 한다. public class HomeController{ private UserServiceImpl userService = new UserServiceImpl(); private AdminServiceImpl adminService = new AdminServiceImpl(); public void addUser(User ..

Programming/Spring 2022.04.20

Spring (2) - IoC와 Container

1. IoC(Inversion of Control)이란? 직역하면 '제어의 역행'이라는 뜻으로, 어플리케이션 코드에서 객체를 제어하지 않고 컨테이너가 제어하는 것을 말한다. 우리가 설정만 해주면, 컨테이너가 알아서 객체를 생성, 삭제, 또 의존 관계를 맺어준다는 것이다. 우리가 설정한다는 것은 "이 객체는 컨테이너 너가 관리해!"하고 알려 주는 코드를 작성하는 것을 말한다. 장점 - 객체 간의 결합도를 낮출 수 있다. (= 한 클래스를 수정해서 이와 관련된 다른 클래스도 반드시 수정해야하는 정도가 적다.) 2022.04.20 - [웹프로그래밍/Spring] - Spring 기타(1) - 객체 간 결합도가 낮은 이유 Spring 기타(1) - 객체 간 결합도가 낮은 이유 Spring은 IoC를 통해, 객체..

Programming/Spring 2022.04.20

[Java] 백준 1520번 : 내리막 길*

1. 문제 https://www.acmicpc.net/problem/1520 1520번: 내리막 길 여행을 떠난 세준이는 지도를 하나 구하였다. 이 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 한 칸은 한 지점을 나타내는데 각 칸에는 그 지점의 높이가 쓰여 있으 www.acmicpc.net 2. 풀이 과정 100x100까지는 단순한 DFS로 풀어도 빠르지만, 이 문제는 최대 map의 크기가 500x500이다. 따라서 간 곳은 또 갈 필요가 있을지 생각해봐야 한다. 여기서는 미래를 이미 알고 있는 건 다시 가지 않아도 되므로 이를 cnt[][]에 기록하였다. 자세한 동작 과정은 아래와 같다. 1. cnt[][]의 값을 -1로 초기화 (안 간 곳은 -1, 간 곳은 0이상으로 표시하..

[Java] 백준 2014번 : 소수의 곱*

1. 문제 https://www.acmicpc.net/problem/2014 2014번: 소수의 곱 첫째 줄에 K(1 ≤ K ≤ 100), N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 K개의 소수가 오름차순으로 주어진다. 같은 소수가 여러 번 주어지는 경우는 없으며, 주어지는 소수는 모두 541보다 작거나 www.acmicpc.net 2. 풀이과정 기본적으로, 주어진 소수들을 계속 곱하면서, PriorityQueue에 넣는다. 여기서 중복 값을 제외시키는 방식으로 N번째 수를 찾았다. 중복된 값을 제외시키는 방식을 처음엔 contain으로 검사해서 시간초과가 발생했다. 질문 검색으로 힌트를 보고, 2*5*7 = 2*7*5 = 5*2*7 = 5*7*2 = 7*2*5 = 7*5*2와 같이 같은..