반응형

기본적으로 Spring Boot 애플리케이션에서 'Starter'를 사용하는 경우 Logback 프레임 워크가 로깅에 사용됩니다. 

이 글에서는 Spring 부팅 애플리케이션에서 log4j 2 프레임 워크를 설정하는 방법을 배우게 될 것이다.

이 예제에 사용 된 도구 및 기술은 다음과 같습니다.

  • Spring Boot 1.5.8.RELEASE
  • Log4j 2.7
  • Maven 3.5.2
  • Eclipse Neon.3 (4.6.3)

예를 보자 ...

프로젝트 구조

다음과 같은 프로젝트 구조를 검토하십시오.

spring-boot-log4j.png

관련 -  이클립스 IDE에서 메이븐 프로젝트를 만드는 방법 .

Jar dependencies

우리가 알고있는 것처럼 기본적으로 의존 관계 관리를 위해 Starter 를 사용하는 경우 Logback이 로깅에 사용됩니다 스프링 부트 응용 프로그램에서 log4j 2를 사용하려면 Logback을 제외시킨 다음 log4j 2 Starter 를 다음과 같이 포함시켜야 합니다.

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.boraji.tutorial.springboot</groupId>
  <artifactId>spring-boot-log4j2-example</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <properties>
    <java.version>1.8</java.version>
  </properties>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.8.RELEASE</version>
  </parent>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>

Log4j 2 구성

 src/main/resources폴더안에 log4j2.xml생성 후 파일을 그 안에 넣고, 다음과 같은 코드를 작성합니다.

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
  <Appenders>
    <!-- Console Appender -->
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{yyyy-MMM-dd HH:mm:ss a} [%t] %-5level %logger{36} - %msg%n" />
    </Console>
    <!-- File Appender -->
    <File name="File" fileName="d:/app.log">
      <PatternLayout pattern="%d{yyyy-MMM-dd HH:mm:ss a} [%t] %-5level %logger{36} - %msg%n" />
    </File>
    
  </Appenders>

  <Loggers>
    <!-- Log everything in custom package -->
    <Logger name="com.boraji.tutorial.springboot" level="debug" additivity="false">
      <AppenderRef ref="Console" />
      <AppenderRef ref="File" />
    </Logger>

    <!-- Log everything in Spring Boot -->
    <Logger name="org.springframework.boot" level="debug" additivity="false">
      <AppenderRef ref="Console" />
      <AppenderRef ref="File" />
    </Logger>

    <!-- Log everything in Spring Core -->
    <Logger name="org.springframework.core" level="debug" additivity="false">
      <AppenderRef ref="Console" />
      <AppenderRef ref="File" />
    </Logger>

    <Root level="error">
      <AppenderRef ref="Console" />
      <AppenderRef ref="File" />
    </Root>
    
  </Loggers>
</Configuration>

 

Run application

주석으로 @SpringBootApplication 주석이 달린 메인 클래스를 작성  하여 log4j 2 구성을 다음과 같이 테스트하십시오.

MainApp.java

package com.boraji.tutorial.springboot;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MainApp {
  
  private static Logger logger = LogManager.getLogger(MainApp.class);

  public static void main(String[] args) {
    logger.info("Starting Spring Boot application..");
    SpringApplication app = new SpringApplication(MainApp.class);
    app.run(args);
  }
}

를 실행하면 MainApp.java콘솔 출력은 다음과 같이 보입니다.

spring-boot-log4j_01.png

소스 다운로드


반응형
반응형

이 글에서는 스프링 부트 프레임 워크를 사용하여 스프링 MVC 웹 애플리케이션을 만들고 부트 스트랩하는 방법을 설명하겠다. JSP를 웹 애플리케이션의보기로 사용합니다.

이 응용 프로그램에 사용되는 도구 및 기술은 다음과 같습니다.


  • Spring Boot 1.5.4.RELEASE
  • Spring WebMVC 4.3.9.RELEASE
  • Tomcat Embedded 8.5
  • JavaSE 1.8
  • Maven 3.3.9
  • Eclipse Neon.3


프로젝트 구조 

스프링 부트 프로젝트 구조를 검토하십시오.

spring-boot-mvc-jsp.png

관련 -  이클립스 IDE에서 메이븐 프로젝트를 만드는 방법 .

Jar dependencies

스프링 부트에서 스프링 MVC 웹 애플리케이션을 생성하고 실행하려면  파일에 spring-boot-starter 의존성  을 추가해야한다  pom.xml

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

다음은 전체 pom.xml파일입니다.

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.boraji.tutorial.springboot</groupId>
  <artifactId>spring-boot-web-application-example</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <properties>
    <java.version>1.8</java.version>
  </properties>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.4.RELEASE</version>
  </parent>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- JSTL tag lib -->
    <dependency>
      <groupId>javax.servlet.jsp.jstl</groupId>
      <artifactId>javax.servlet.jsp.jstl-api</artifactId>
      <version>1.2.1</version>
    </dependency>

    <dependency>
      <groupId>taglibs</groupId>
      <artifactId>standard</artifactId>
      <version>1.1.2</version>
    </dependency>

    <!-- Tomcat for JSP rendering -->
    <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-jasper</artifactId>
      <scope>provided</scope>
    </dependency>

  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
  <packaging>war</packaging>
</project>

컨트롤러 클래스

 패키지 HelloController아래 에 클래스를 com.boraji.tutorial.springboot.controller만들고 다음 코드를 작성하십시오.

HelloController.java

package com.boraji.tutorial.springboot.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class HelloController {

   @RequestMapping("/")
   public String index() {
      return "index";
   }

   @PostMapping("/hello")
   public String sayHello(@RequestParam("name") String name, Model model) {
      model.addAttribute("name", name);
      return "hello";
   }
}

JSP 뷰

프로젝트 구조에 표시된대로 폴더  아래에 파일을 index.jsp만들고 hello.jsp파일을 만듭니다 src/main/webapp/WEB-INF/views.

index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<!-- Static content -->
<link rel="stylesheet" href="/resources/css/style.css">
<script type="text/javascript" src="/resources/js/app.js"></script>

<title>Spring Boot</title>
</head>
<body>
  <h1>Spring Boot - MVC web application example</h1>
  <hr>

  <div class="form">
    <form action="hello" method="post" onsubmit="return validate()">
      <table>
        <tr>
          <td>Enter Your name</td>
          <td><input id="name" name="name"></td>
          <td><input type="submit" value="Submit"></td>
        </tr>
      </table>
    </form>
  </div>

</body>
</html>

hello.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Spring Boot</title>
</head>
<body>
  <h1>Spring Boot - MVC web application example</h1>
  <hr>

  <h2>Your name is ${name}</h2>

</body>
</html>

 

Static web resources

기본적으로 봄 부팅은에서 정적 웹 콘텐츠를 제공 /static또는 /public또는 /resources또는 /META-INF/resources폴더 클래스 경로에 있습니다. 이 예제에서는 스타일 시트, 자바 스크립트 파일과 같은 모든 정적 리소스를 /static폴더에 저장합니다.

src/main/resources/static/css폴더 아래에 스타일 시트 파일을 만들고 그 안에 다음 코드를 작성하십시오.

style.css

.form {
	background-color: #efefef;
	width: 400px;
	height: 50px;
	border-radius: 7px;
	padding: 20px;
}

자, src/main/resources/static/js폴더 아래에 javascript 파일을 만들고 다음 코드를 작성하십시오.

app.js

function validate() {
	var name = document.getElementById("name").value;
	if (name == '') {
		alert('Please enter a valid name.');
		return false;
	} else {
		return true;
	}
}

Application properties

봄 부팅은에서 속성을로드하고 스프링에 application.properties추가합니다 EnvironmentSpring MVC 또는 정적 웹 컨텐트와 관련된 속성을 application.properties파일에 설정할 수 있습니다 .

원본 폴더 application.properties아래 에 파일을 src/main/resources만들고 그 안에 다음 속성을 작성합니다.

application.properties

spring.mvc.view.prefix = /WEB-INF/views/
spring.mvc.view.suffix = .jsp
spring.mvc.static-path-pattern=/resources/**

주 - spring.mvc.static-path-pattern=/resources/** (가) 매핑됩니다 classpath:/static/css/style.css에 /resources/css/style.css마찬가지로,에 classpath:/static/js/app.js  매핑됩니다 /resources/js/app.js다음과 같이 jsp에서 이러한 정적 자원을 사용할 수 있습니다.

<link rel="stylesheet" href="/resources/css/style.css">
<script type="text/javascript" src="/resources/js/app.js"></script>

메인 클래스

Spring Boot를 사용하여 Spring MVC 애플리케이션을 부트 스트랩하려면 @SpringBootApplication 다음과 같이 annotation으로 주석이 달린 메인 클래스를 생성한다  .

MainApp.java

package com.boraji.tutorial.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MainApp {
   public static void main(String[] args) {
      SpringApplication.run(MainApp.class, args);
   }
}

 

응용 프로그램 실행

실행  MainApp.java 예 → 자바 응용 프로그램으로 실행 → 실행으로 이동 Java 응용 프로그램과 같은 클래스를

이 mvn spring-boot:run 명령을 사용하여 스프링 부팅 응용 프로그램을 실행할 수 있습니다  .

메인 클래스를 실행하면 콘솔 출력은 다음과 같이 보입니다.

이제   브라우저 주소에 http : // localhost 8080 을 입력하고 입력 필드에 사용자 이름을 입력하십시오.

 

이제   브라우저 주소에 http : // localhost 8080 을 입력하고 입력 필드에 사용자 이름을 입력하십시오.

spring-boot-mvc-jsp1.png

제출 버튼을 클릭하고 결과 페이지를보십시오.

spring-boot-mvc-jsp2.png

Spring 부트 애플리케이션을 실행 가능한 전쟁으로 패키징하기

임베디드 서블릿 컨테이너를 사용하고 있다면 jar 대신에 스프링 부트 애플리케이션을 war로 패키징해야한다. JSP 지원에는 몇 가지 제한 사항이 있습니다. 더 읽기 ..

다음 maven 명령을 사용하여 스프링 부트 응용 프로그램을 전쟁으로 패키지 할 수 있습니다.

mvn clean package

명령 줄에서 실행 가능한 전쟁 실행

다음 명령을 사용하여 CMD에서 전쟁을 실행하십시오.

>java -jar spring-boot-web-application-example-0.0.1-SNAPSHOT.war
소스 다운로드


반응형
반응형

Spring Boot Samples

The following sample applications are provided:

SampleDescription

spring-boot-sample-activemq

JMS consumer and producer using Apache ActiveMQ

spring-boot-sample-actuator

REST service with production-ready features

spring-boot-sample-actuator-log4j2

Production-ready features using log4j 2 for logging (instead of logback)

spring-boot-sample-actuator-noweb

Non-web application with production-ready features

spring-boot-sample-actuator-ui

Web UI example with production-ready features

spring-boot-sample-amqp

Message-oriented application using AMQP and RabbitMQ

spring-boot-sample-ant

Executable JAR build using Ant

spring-boot-sample-aop

Demonstrates explicit usage of Spring AOP

spring-boot-sample-atmosphere

Chat service built using Atmosphere

spring-boot-sample-batch

Define and run a Batch job in a few lines of code

spring-boot-sample-cache

Web application that uses Spring’s cache abstraction

spring-boot-sample-custom-layout

Creates custom Jar Layout

spring-boot-sample-data-cassandra

Stores data using Spring Data Cassandra

spring-boot-sample-data-couchbase

Stores data using Spring Data Couchbase

spring-boot-sample-data-elasticsearch

Stores data using Spring Data Elasticsearch

spring-boot-sample-data-jpa

Stores data using Spring Data JPA with Hibernate

spring-boot-sample-data-ldap

Stores data using Spring Data LDAP

spring-boot-sample-data-mongodb

Stores data using Spring Data MongoDB

spring-boot-sample-data-neo4j

Stores data using Spring Data Neo4j

spring-boot-sample-data-redis

Stores data using Spring Data Redis

spring-boot-sample-data-rest

RESTful service built using Spring Data REST

spring-boot-sample-data-solr

Stores data using Spring Data Solr

spring-boot-sample-devtools

Using DevTools for rapid application development

spring-boot-sample-flyway

Database migrations with Flyway

spring-boot-sample-hateoas

RESTful API built using Spring Hateoas

spring-boot-sample-integration

Integration application built using Spring Integration and its Java DSL

spring-boot-sample-jersey

RESTful service built using Jersey 2

spring-boot-sample-jersey1

RESTful service built using Jersey

spring-boot-sample-jetty

Embedded Jetty

spring-boot-sample-jetty-ssl

Embedded Jetty configured to use SSL

spring-boot-sample-jetty-jsp

Web application that uses JSP templates with Jetty

spring-boot-sample-jooq

Stores data using jOOQ

spring-boot-sample-jpa

Uses plain JPA (Hibernate)

spring-boot-sample-jta-atomikos

JTA transactions with Atomikos

spring-boot-sample-jta-bitronix

JTA transactions with Bitronix

spring-boot-sample-jta-jndi

JTA transactions using a TransactionManager and DataSource from JNDI

spring-boot-sample-jta-narayana

JTA transactions with Narayana

spring-boot-sample-junit-jupiter

Demonstrates JUnit Jupiter-based testing

spring-boot-sample-liquibase

Database migrations with Liquibase

spring-boot-sample-logback

Demonstrates Spring Boot’s custom Logback functionality configured in logback-spring.xml

spring-boot-sample-metrics-dropwizard

Demonstrates support for Dropwizard metrics

spring-boot-sample-metrics-opentsdb

Exports metrics to OpenTSDB

spring-boot-sample-metrics-redis

Exports metrics to Redis

spring-boot-sample-parent-context

Application that uses an ApplicationContext with a parent

spring-boot-sample-profile

Demonstrates some of Spring Framework’s @Profile capabilities

spring-boot-sample-property-validation

Demonstrates the usage of @ConfigurationProperties with a Spring Validator

spring-boot-sample-secure

Non-web application that uses Spring Security

spring-boot-sample-servlet

Web application with a "raw" Servlet returning plain text content

spring-boot-sample-session

Web Application that uses Spring Session to manage session data

spring-boot-sample-simple

Simple command line application

spring-boot-sample-test

Demonstrates Spring Boot’s testing capabilities

spring-boot-sample-testng

Demonstrates TestNG-based testing

spring-boot-sample-tomcat

Embedded Tomcat

spring-boot-sample-tomcat-jsp

Web application that uses JSP templates with Tomcat

spring-boot-sample-tomcat-multi-connectors

Web application that uses Tomcat configured with multiple connectors

spring-boot-sample-tomcat-ssl

Web application that uses Tomcat configured with SSL

spring-boot-sample-traditional

Traditional WAR packaging (but also executable using java -jar)

spring-boot-sample-undertow

Embedded Undertow

spring-boot-sample-undertow-ssl

Embedded Undertow configured to use SSL

spring-boot-sample-war

Web application packaged as a war file

spring-boot-sample-web-freemarker

Web application that uses FreeMarker templates

spring-boot-sample-web-groovy-templates

Web application that uses Groovy templates

spring-boot-sample-web-jsp

Web application that uses JSP templates

spring-boot-sample-web-method-security

Web application with Security configuration enabling global method security

spring-boot-sample-web-mustache

Web application that uses Mustache views

spring-boot-sample-web-secure

Web application with typical Security configuration enabling a login form

spring-boot-sample-web-secure-custom

Web application with custom Spring Security configuration

spring-boot-sample-web-secure-jdbc

Web application with Spring Security configured to use JDBC authentication

spring-boot-sample-web-static

Web application that serves static files

spring-boot-sample-web-ui

Web application with a basic UI built using Bootstrap and JQuery

spring-boot-sample-webservices

Simple contract-first SOAP web service with Spring Web Services

spring-boot-sample-websocket-jetty

WebSocket application that uses Jetty

spring-boot-sample-websocket-tomcat

WebSocket application that uses Tomcat

spring-boot-sample-websocket-undertow

WebSocket application that uses Undertow

spring-boot-sample-xml

Example show how Spring Boot can be mixed with traditional XML configuration (we generally recommend using Java @Configuration whenever possible


반응형

+ Recent posts