1. IoC (Inversion of Control) IoC는 Inversion of Control의 약자로 "제어의 역전"이라는 뜻이다. 일반적인 프로그래밍은 프로그래머가 코드로 직접 객체를 생성하고 호출하는 과정을 거친다. 이러한 제어 시스템이 역전되어 메서드나 객체의 호출을 개발자가 결정하는 것이 아니라 외부에서 결정되는 것을 제어의 역전이라고 한다. IoC의 장점으로는 다음과 같은 것이 존재한다. 객체간 결합도를 낮춘다. 가독성이 증진된다 코드 중복을 방지한다 유지 보수가 용이하다. 이러한 IoC의 핵심 원리는 스프링 프레임워크가 객체의 생성과 의존관계를 컨테이너가 자동으로 관리한다는 것이다. 이때 스프링은 IoC를 Dependency Lookup(DL), Dependency Injection(D..
BackEnd/Spring
1. 태그 Intellij에서 spring의 xml파일을 생성하면 아래와 같은 코드가 자동으로 생성된다. 위와 같이 스르링 설정 파일은 엘리먼트를 루트 엘리먼트로 사용한다. 이때 beans에는 bean이 사용할 라이브러리들을 정의할 수 있다. 는 , , , 등의 자식 태그를 가지며 주로 사용되는 것은 과 이다. 2. 태그 스프링 기반의 애플리케이션은 bean 객체 등록뿐만 아니라 트랜잭션 관리, 다국어 처리 등 여러 설정이 필요하다. 따라서 이런 설정들을 처리하는 경우 여러 파일로 나눠 설정하는데 이들을 하나로 통합할 때 를 사용한다. 사용법은 아래와 같다. 3. 태그 태그를 사용하면 스프링 설정 파일에 클래스를 등록할 수 있다. 이때 id와 class 속성을 부여하는데 id는 생략 가능하며, class..
1. 클래스 생성 먼저 아래와 같이 bean으로 등록할 클래스를 선언하자. package Exam1; public class SamTV implements TV{ public SamTV() { System.out.println("Create SamTV Object"); } @Override public void turnOn() { System.out.println("Turn on SamTV"); } @Override public void turnOff() { System.out.println("Turn off SamTV"); } @Override public void volumeUp() { System.out.println("Volume up SamTV"); } @Override public void v..
1. xml 파일 생성의 이유 IoC 컨테이너는 각 컨테이너에서 관리할 객체들을 위한 별도의 설정 파일이 있다. 예를 들어, Servlet 컨테이너의 경우 web.xml 파일을 통해 관리한다. 스프링 프레임워크도 다른 컨테이너와 동일하게 자신이 관리할 클래스들이 등록된 xml파일이 필요하다. 이 xml 파일이 바로 "applicationContext.xml" 파일이다. 2. Intellij 에서 설정 파일 생성 Intellij에서 먼저 maven project를 만들고 spring 관련 설정을 해주자. 그리고 /main/resources 파일을 생성하고 해당 파일을 우클릭하면 아래와 같은 창이 발생한다. 위와 같이 Spring Config를 선택하고 파일을 만들어주자. 그러면 아래와 같이 파일이 잘 생성..
BeanPropertyRowMapper BeanPropertyRowMapper를 사용하면 기존에 RowMapper 만드는 방식을 사용하지 않고 RowMapper를 바로 만들 수 있다. 기존에 RowMapper를 만드는 방식은 다음과 같이 mapping logic을 직접 작성해줘야 했다. private RowMapper roleMapper = new RowMapper() { @Override public Role mapRow(ResultSet rs, int rowNum) throws SQLException{ Role role = new Role(); role.setRoleId(rs.getInt("role_id")); role.setDescription(rs.getString("description")); ..
1. NamedParameterJdbcTemplate란? JdbcTemplate 객체를 사용하면 "?"를 통해 바인딩을 수행한다. 이때 우리는 "?"에 전달될 인자들을 메서드에 순서대로 전달해야 한다. 이와 같이 작업을 할 경우 가독성이 떨어지며 실수할 여지가 많다. 이를 위해 "?"대시 ":변수명"을 이용하여 처리하도록 해주는 것이 NamedParameterJdbcTemplate이다. 선언 방법은 JdbcTemplate 객체와 동일하게 DateSource 객체를 넘겨주면 된다. private NamedParameterJdbcTemplate namedJdbcTemplate; @Autowired public RoleDao(DataSource dataSource) { this.namedJdbcTemplate..
이전에 Jdbc Template이란 무엇이고 Query를 어떻게 전달하여 결과를 가져올 수 있는지 확인했다. https://ngp9440.tistory.com/54 [Spring JDBC] Jdbc Template이란? (queryForObject, query) 1. JDBC Template이란? JDBC Template은 개발자가 JDBC 기술을 쉽게 사용할 수 있도록 도와주는 클래스로 아래와 같은 작업을 대신 처리한다. Connection 획득 statement 생성 및 실행 Connection, statement, resultset 종 ngp9440.tistory.com 이번에는 Insert, Update, Delete는 어떻게 수행할 수 있는지에 대해 알아보고자 한다. 해당 쿼리들을 수행하기 위해..
1. JDBC Template이란? JDBC Template은 개발자가 JDBC 기술을 쉽게 사용할 수 있도록 도와주는 클래스로 아래와 같은 작업을 대신 처리한다. Connection 획득 statement 생성 및 실행 Connection, statement, resultset 종료 SQL 조회, 업데이트, ResultSet 반복호출 등 JDBC 예외 발생시 org.springframework.dao 패키지에 정의된 일반 예외로 변환 위와 같은 기능들을 대신 해주기 때문에 이전에 작성한 JDBC 코드들은 훨씬 간편해진다. JDBC Template은 아래와 같이 선언한다. @Repository public class RoleDao { private JdbcTemplate jdbcTemplate; @Aut..