본문 바로가기
반응형

IT/Java394

SpringBoot 인터셉터(Interceptor) 란? Interceptor라고 하면 순수 뜻은 낚아채다라는 의미를 갖고 있는데, 스프링 내에서도 비슷한 의미로 동작을 한다. 특정 서비스가 돌기 전이나 후에 서비스를 낚아채서 그 순간 특정 작업을 넣을수 있다. 예를 들어 페이지 이동할 경우마다 로그를 찍거나, 페이지 이동마다 로그인이 되어있는지 체크 등 기능을 하기 위해서 주로 사용하곤 한다. 비슷하게 Spring 기능 중에 AOP라고 존재하는데 인터셉터의 기능을 좀더 발전 시켰다고 생각하면 된다. AOP에 관해서는 아래 참고 포스팅 참고 바란다. 그럼 먼저 그림을 보면서 Interceptor가 언제 작동하는지 확인해보면 스프링 영역 중간에 자리잡고있다. 간단하게 request와 response의 흐름을 얘기하면 요청이 들어오면 프론트컨트롤러인 디스패쳐 서블.. 2023. 9. 5.
[Spring Boot] AutoConfiguration AutoConfiguration 이란 스프링이 아닌 스프링부트를 사용하는 이유 중 하나이다. 먼저 그러기 위해서는 스프링 부트 프레임워크를 새롭게 시작을 해봐야한다. https://start.spring.io/ 스프링 부트의 시작을 하기 위해서는 IDE에서도 가능하지만 파일로 만드려면 위 사이트를 참고 바란다. 생성을 하게 되면 가장 최상단에 프로젝트 이름 + Application.java 파일이 생길 것이다. 구성은 아래와 같다. @SpringBootApplication public class TestProjectApplication { public static void main(String[] args) { SpringApplication.run(TestProjectApplication.class, .. 2023. 9. 3.
spring -> springboot 로 프로젝트 변경 여러개의 프로젝트를 사용중에 있는데 그중 spring 프로젝트가 존재하여 해당 프로젝트를 springboot 프로젝트로 변경을 하려고 한다. 스프링과 스프링 부트의 차이는 아래 참고 포스팅 참고 바란다. 프로젝트를 변경해주려면 간단하다. maven기준으로 설명을 하면 springframework 를 boot 로 pom.xml 에 설정만 변경해주면 된다. ... ... org.springframework.boot spring-boot-starter-parent version ... ... org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-security ... javax.servlet js.. 2023. 8. 30.
[Java] ASCII 문자 숫자 변환 코드 이전 포스팅에서 인코딩에 대해서 작성을 하며 ascii 에 대해서 잠깐 언급한 적이 있다. 자세한 내용은 아래 참고 포스팅 참고 바란다. 이번 포스팅에서는 자바에서 아스키코드를 활용하여 숫자 문자 구분을 해보려고 한다. 먼저 아래 표를 보면 특정 문자를 특정 숫자로 , 그리고 그 수에 대해 10진수 16진수 까지도 표현이 되어있다. 자바에서 문자를 숫자로 바꿀경우 String a = "a"; char ch = a.charAt(0); int num = (int) ch; 이렇게 변환이 가능하다. 반대로 숫자에서 문자의 경우는 int num = 97; char ch = (char)num; System.out.println(ch); 로 가능하다. 참고 포스팅 https://thenicesj.tistory.com.. 2023. 8. 29.
Statement / preparedStatement 차이 자바 JDBC를 사용할 경우 요즘엔 preparedStatement 를 많이 사용하곤 하지만 예전에는 Statement 로도 종종 사용을 해왔다. 비슷한 기능을 하는 두 메서드에 대해서 차이에 대해 잠깐 적어보려고 한다. 결론 먼저 말하면 PreparedStatement 를 더 많이 사용하고 사용하기를 권장한다. 이유는 크게 2가지이다. 성능면에서 재사용이 가능하여 도움이 되고 , sql 인젝션이 방지 되어 보안상에도 도움이 된다. sql 인젝션 관련해서는 아래 참고 포스팅 참고 바란다. 그리고 나중에 알게 된 사실인데 속도면에서도 도움이 된다고 한다. 일반적인 RDBMS 사용시 실행할 쿼리를 실행하면 다음 단계를 거친다. SQL 쿼리 구문 분석(syntax, semantic) SQL 쿼리 컴파일 (co.. 2023. 8. 28.
Lazy Bean 에 대해(lazy init / lazy loading) Spring 에서 Bean이란. 스프링이 처음 기동할때 스프링 컨테이너 안에 특정 annotation이 걸리거나 설정해둔 객체들이 올라가는데, 그 올라간것들을 Bean이라고 한다. 자세한 내용은 참고포스팅을 참고바란다. 하지만 너무 많은 Bean을 등록하게 될 경우에 Spring 기동이 오래 걸리고 자주 사용되지 않는 Bean등 몇몇의 Bean은 꼭 기동시 올라오지 않아도 되는 경우가 있다. 이럴 경우 Lazy 설정을 걸어서 나중에 등록이 되도록 할수가 있다. Lazy란 게으른. 이라는 뜻으로 말그대로 게을러서 나중에 Bean이 등록이 된다. 방법은 간단하다. 늦게 뜨길 원하는 Bean에 @Lazy annotation 을 붙여주면 된다. 그리고 만약 의존성 주입을 받는 경우라면 Autowired와 함께 .. 2023. 8. 26.
SpringJDBC에서 DataSource, RowMapper란? 스프링에서 JDBC란. Java DataBase Connectivity 의 약자로 DB에 접근할 수 있도록 JAVA에서 제공하는 API이다. 즉, DB에 데이터를 CRUD 하는 방법을 제공한다. 스프링이 아니고 순수 자바에서 데이터베이스와 연동을 하려면 DBMS 별로 connect 코드부터 시작해서 다양하고 많은 작업을 해야하는데, 지금은 대부분의 역할이 Spring에게 맡겨졌고, 개발자가 해야하는 작업은 단 3가지 이다. datasource 설정 sql문 작성 결과 처리 이다. 하나씩 살펴보면 DataSoruce 데이터베이스와 connect 하는게 주 역할이다. 관련 클래스는 import javax.sql.DataSource; 내에 존재하고 내부 함수들을 잠깐 보면 Connection getConnec.. 2023. 8. 24.
[Java] Scope란? 자바 스프링을 사용하다보면 BeanScope, singletonScope등등 단어를 보고 그안에 scope라는 단어를 많이 접하게 된다. 여기서 Scope에 대해서 설명하려고 한다. Scope라는 단어의 뜻은 '범위' 라는 의미를 갖고있다. 그리고 이 의미를 자바 스프링에 입힐때, 예를 들어 BeanScope라고 한다면 말 그대로 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 다음과 같은 다양한 스코프를 지원한다. 싱글톤(Singleton) : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입(Prototype) : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프 //prototype 참고 포스팅.. 2023. 8. 23.
[Spring] Devtools 이란? (23.08.19) Devtools 는 Springboot 에서 제공하는 개발 편의를 위한 모듈이다. 그럼 어떤 부분에서 개발이 편리해지느냐. 아래 5가지에 대해서 기능을 제공한다. Property Defaults Automatic Restart Live Reload Global Settings Remote Applications 적용하는 방법은 간단하다. 다른것들과 비슷하게 library를 추가해주면 된다. Gradle 사용시 dependencies { ​​​​ compileOnly("org.springframework.boot:spring-boot-devtools") } Maven 사용시 ​​​​ ​​​​ ​​​​ ​​​​​​​​org.springframework.boot ​​​​ ​​​​​​​​​​​ ​spring-b.. 2023. 8. 20.
반응형