| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- Spring Framework
- tomcat
- 외장톰캣
- 디자인패턴 #싱글톤
- Mockito #Reflection #Sigleton #Test #JUnit
- LiveTemplate
- autocomplete
- 톰캣
- spring
- Today
- Total
목록Develop/Spring Boot (35)
자라선
스프링 부트에서 제공하는 optional한 툴 프로젝트의 캐시 설정을 개발환경에 맞춰 변경할 수 있는 의존성 라이브러리 org.springframework.boot spring-boot-devtools 의존성을 정의하면 아래 링크에 나오는 프로퍼티 설정이 적용되며 이러한 spring-boot-devtools.properties 는 최우선 적용되는 설정이다. https://github.com/spring-projects/spring-boot/blob/v2.3.0.RELEASE/spring-boot-project/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/env/DevToolsPropertyDefaultsPostProcessor..
스프링 테스트 의존성 추가 org.springframework.boot spring-boot-starter-test test 테스트 코드 기본 폼 @RunWith(SpringRunner.class) @SpringBootTest @SpringBootTest 어노테이션은 @SpringBootApplication 어노테이션을 찾아가 모든 자동설정을 실행하여 모든 bean 스캔과 테스트용 ApplicationContext에 등록한다. MockMvc 사용 (통합 테스트) 3가지의 방법중 가장 쉬운 방법으로 서블릿 컨테이너를 생성하지 않고 디스패처 서블릿을 mocking 을 하여 비슷한 역할을 해준다. 그러나 mocking를 하여 생성된 디스패처 서블릿을 사용하려면 MockMvc 클라이언트를 사용해야한다. @Spr..
Logging Facade (로깅 퍼사드) Commons Logging, SLF4j Logger (로거) JUL, Log4j, Logback 로깅 파사드와 로거는 서로 다르며 로깅 퍼사드는 로거의 추상화된 인터페이스로 로거를 어플리케이션 개발자에게 선택권을 주기 위한 파사드 패턴 모델이다. 로거는 말그대로 최종 로깅을 출력하는 라이브러리이다. Spring 프레임워크는 개발 초창기 때 부터 Commons Logging 로깅 퍼사드로 개발되었기 때문에 스프링 부트 4까지는 Commons Logging 로깅 파사드를 사용 하였으나 이슈가 많았기 때문에 스프링 5 이후 부터는 스프링 자체적으로 개발된 JCL (Jakart Commons Logging)를 사용하여 Commons Logging 사용시 SLF4j 도..
@Profile Spring Boot 는 선택하는 profile에 따라 달리 실행할 수 있다. application.properties spring.profiles.active=mysql OR java -jar .jar --spring.profiles.active=oracle application.properties 추가 및 활성화 다른 properties 파일의 내용을 추가 할 수도 있다. 이때 추가하는 properties의 네이밍 룰이 있으며 아래와 같이 작성 application-.properties 추가시 inlcude 를 사용하며 추가하는 명은 으로 추가 application.properties spring.profiles.include=db 활성화시 @Profile 어노테이션과 동일 appli..
application.properties 불러오는 방법 Application.properties 에서 정의된 값은 @Value 어노테이션이나 SpringBootBean에 등록되어있는 Environment bena을 의존성 주입하여 사용할 수 있다. application.properties test.name=thkong @Value("${test.name}") private String name; 또는 @Autowired Environment environment; @Override public void run(ApplicationArguments args) throws Exception { System.out.println("프로퍼티 값 : " + environment.getProperty("test.n..
https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-spring-application Spring Boot의 기본 로그 레벨은 INFO 이며 로그 레벨 수정 시 3가지 방법이 있다. 1. application.properties 에서 [ logging.level.root=debug ] 설정 2. run configuration -> VM option -> -Ddebug 3. run configuration -> Program arguments -> --debug Spring Boot의 배너도 수정할 수 있다. 기본 경로는 resources 폴더 하위에 banner.txt 로..
Spring Boot는 jar 확장자로 패키징을 할수 있다. maven 빌드 툴을 사용시 프로젝트 홈에서 mvn install 명령어를 사용해 리빌딩 시켜주면 .jar 파일로 패키징이 된다. 패키징은 pom.xml에 다음과 같이 plugin 이 작업해준다. org.springframework.boot spring-boot-maven-plugin 패키징을 할때 의존성 라이브러리들은 모두 패키징된 .jar 파일 안에다 *.jar 파일로 나열하여 한꺼번에 넣어준다. 그러나 자바는 내장 jar 파일을 로딩하는 표준적인 방법이 없기 때문에 이것을 JarLauncher.class 가 로딩을 도와준다. 패키징된 프로젝트 jar파일을 언패키징하게 되면 볼수있는데 모든 jar 파일을 실행할 때 가장 먼저 META-INF..
SSL keytool 유틸리티를 사용하여 인증서를 만든다. keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 4000 이렇게 생성된 인증서는 비공인 인증서이기때문에 클라이언트(브라우저) 내부의 CA PUB 리스트에 없어 신뢰받지 못한 사이트로 나오게된다. 그리고 application.properties 에 다음과 같이 설정한다. (만약 생성된 인증서가 프로젝트의 resources 안에 있다면 classpath:keystore.p12 라고 classpath를 추가한다) server.ssl.key-store=keystore.p12 server.ssl.key-store-..
WAS는 Servlet Container 를 포함한다. WAS는 Java EE(EJB, JMS, CDI, JTA, Servlet API)의 전체를 지원하지만 Servlet Container는 Servlet API과 JSP, JSTL를 지원한다. 톰캣또한 JSP등을 지원하기 때문에 같다고 볼수도 있지만 엄연히 다른거라 구분할 수 있어야한다. https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto-embedded-web-servers spring-boot-starter-web 의존성은 기본적으로 spring-boot-starter-tomcat을 포함하고 있다. 만약 다른 서블릿 컨테이너를 사용하기 위해서는 톰캣을 제외시켜..
스프링 부트는 서버가 아닌 어플리케이션이며, 프레임워크 내장으로 Tomcat, Netty, Undertow, Jetty 서버를 사용할 수 있다. 톰캣만 사용하려면 @SpringBootApplication 어노테이션를 빼고 Tomcat 객체를 생성하여 Context와 Servlet를 넣어주어서 사용할 수도 있다. public static void main(String[] args) throws LifecycleException { Tomcat tomcat = new Tomcat(); tomcat.setPort(8080); Context context = tomcat.addContext("/", "/"); HttpServlet servlet = new HttpServlet(){ @Override protec..