Maven으로 스프링 프로젝트를 개발하다가 src/main/webapp 경로에 보관된 이미지를 제공하는 API를 만들일이 있어서 경로를 얻는 방법을 적는다. Controller에서 HttpServletRequest 객체를 파라미터로 받은 뒤, request.getServletContext().getRealPath(""); 를 이용하면된다. 위 호출로 나온 경로는 src/main/webapp 까지의 경로로, 만약 resources/image/img123.png 식으로 보관했다면, @RestController public class ImageController { @Autowired ImageService imageService; @GetMapping(value = "/image/{imageName}.{ex..
JDK 8부터 stream을 이용하여 데이터를 쉽게 변환, 수집할 수 있다. 반복문을 돌려서 필요한 데이터를 가져오는 것보다 훨씬 직관적이고 코드도 짧다. 람다식을 사용하여 함수지향적이고, C#의 linq와 유사한 부분이 많다. ArrayList, HashMap 같은 컬렉션 클래스들은 모두 stream() 메서드를 이용해 스트림을 생성할 수 있다. 그 외에 배열같은 경우 java.util.Stream의 Stream.of() 함수를 이용해 스트림을 생성할 수 있다. 이런 stream을 이용해 아래와 같이 필요한 데이터를 아주 간단하게 뽑아낼 수 있다. public class DTO { private int type; private String data; public int getType() { return..
Eclipse에서 JDBC를 이용해 MySQL을 사용하는데 한글때문에 애를 먹어서 정리해놓는다. C:\ProgramData\MySQL\MySQL Server 5.7 폴더에 간다. (버전에 따라 폴더명이 다를 수 있음)경로가 Program Files 폴더가 아닌 ProgramData임을 주의하자. my.ini 파일을 열고 아래의 내용을 맨 밑에 추가시키고 저장한다. [client]default-character-set=utf8 [mysqld]character-set-client-handshake = FALSEinit_connect="SET collation_connection = utf8_general_ci"init_connect="SET NAMES utf8"character-set-server = utf..
MVC 패턴에는 두가지 종류가 있다. MVC1과 MVC2인데 아래 그림과 같다. MVC1은 JSP가 요청을 받아서 EJB의 JavaBean으로 DB와 통신하여 JSP에 적절한 값을 넣은 후 응답을 브라우저에 반환하는 형식이다.MVC2는 이보다 발전하여 JSP가 요청을 받지 않고 Servlet이 대신 요청을 받아서 DB와 통신하여 JSP에 값을 넣고 그것을 반환한다. Servlet은 서버에 매칭되는 URL마다 하나 씩 존재하며 init -> service(요청 마다 반복) -> destory의 생명주기를 가진다. Servlet은 WAS의 Servlet Container에 존재하며 사용자가 요청하면 해당되는 URL(web.xml 등으로 설정)에 매핑되는 Servlet의 함수(service -> doGet, ..
Spring JDBC를 사용하지 않고 DB를 사용하기 위해선, Driver를 로드하고 connection을 맺고 statement 준비를 하고 query를 실행하기까지 여러 코드를 적어야했다. 이런 저수준의 작업들은 Spring JDBC를 이용하여 간단하게 처리할 수 있다.Spring JDBC 패키지org.springframework.jdbc.coreorg.springframework.jdbc.datasourceorg.springframework.jdbc.objectorg.springframework.jdbc.support 위와 같은 패키지를 사용하고, 이 중 core에는 JDBC Template이라는 중요한 클래스가 있다.JDBC Templateorg.springframework.jdbc.core에서 ..
BeanBean은 Spring Bean Container에 존재하는 객체를 말한다. Bean Container는 의존성 주입을 통해 Bean 객체를 사용할 수 있도록 해준다. Bean은 보통 싱글턴으로 존재한다.XML ConfigurationJava 코드를 이용한 Context 설정이 나오기 전 사용하던 방법이다. applicationContext.xml이라는 파일을 src/main/resources 폴더에 추가시킨 후 bean을 등록한다. 아래 코드처럼 작성할 수 있다. beans 태그 아래에 bean 태그가 여러개 있는 것을 볼 수 있다. bean 태그의 id가 bean의 이름이 되고 class에 어떤 클래스를 bean으로 만들지 패키지명을 포함하여 적으면 된다. bean 태그 아래에 property..
웹서버와 같은 멀티스레드 환경에서 singleton을 사용하려면 항상 thread-safe 한지 고려해야 한다. 찾던 중 initialization on demand holder idiom 이라는 기법이 있어서 이곳에 적어놓는다. public class InitializationOnDemandHolderIdiom { private InitializationOnDemandHolderIdiom () {} private static class Singleton { private static final InitializationOnDemandHolderIdiom instance = new InitializationOnDemandHolderIdiom(); } public static InitializationOn..
DB 연결시 필요한 정보를 따로 저장하기 위해 properties 파일을 사용할 수 있다. .properties 확장자로 프로젝트 내에 만들면 되며, 아래 코드처럼 사용할 수 있다. InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("application.properties"); Properties prop = new Properties(); prop.load(inputStream); DB_URL = prop.getProperty("database.url"); DB_USER = prop.getProperty("database.username"); DB_PASSWD = prop.getProp..
- Total
- Today
- Yesterday
- chunk
- thymeleaf cannot resolve
- nodejs
- spring
- mybatis
- @Bean
- JavaScript
- @Component
- Bin
- @Qualifier
- @Autowired
- unity
- Express
- Tasklet
- spring batch
- Bean
- Closure
- Barycentric coordinates
- thymeleaf 변수 인식
- Linux
- MySQL
- Check point within polygon
- 클로저
- npm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |