<
스트링부트
jsp로 스프링구현
github
부하테스트방법
>
log4j에 대하여
시스템 작동할때 시스템의 작동상태의 기록과 보존.
--syso는 에러,장애발생시 추척할수 있는 최소한의 정보가 없기때문
Appender : 콘솔출력, 파일기록, DB저장 등
log.fatal / log.error / log.warn / log.info / log.debug / log.trace ---이렇게 다양하게 사용가능하다.
--log4j.xml에서 설정 바꿔준다.
====log4j 실습====
출력되는 로그의 양 순서 ERROR < WARN < INFP < DEBUG < TRACE
log4j를 사용하기 위한 설정
[root-context.xml]
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName"
value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
<property name="jdbcUrl"
value="jdbc:log4jdbc:oracle:thin:@localhost:1521:XE"></property>
<property name="username" value="scott"></property>
<property name="password" value="tiger"></property>
</bean>
//net.sf.log4jdbc.sql.jdbcapi.DriverSpy 이렇게 넣어야 log4j가 나온다.
[log4j.xml]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration
xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Appenders -->
<appender name="console"
class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="[%d{yyyy-MM-dd HH:mm:ss}] %-5p: %c - %m%n" />
</layout>
</appender>
<appender name="fileLogger"
class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="d://logs//spring//spring.Log" />
<param name="Append" value="true" />
<param name="dataPattern" value=".yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="[%d{yyyy-MM-dd HH:mm:ss}] %-5p: %F:%L - %m%n" />
</layout>
</appender>
<!-- Application Loggers -->
<logger name="edu.bit.board">
<level value="info" />
</logger>
<!-- 3rdparty Loggers -->
<logger name="org.springframework.core">
<level value="info" />
</logger>
<logger name="org.springframework.beans">
<level value="info" />
</logger>
<logger name="org.springframework.context">
<level value="info" />
</logger>
<logger name="org.springframework.web">
<level value="info" />
</logger>
<!-- 여기에 추가 -->
<!-- 예를 들어 로깅 레벨 설정을 "INFO"로 하였을 경우 "TRACE", "DEBUG" 레벨은 무시한다. -->
<!-- 출력되는 로그의 양 순서 : ERROR < WARN < INFO < DEBUG < TRACE -->
<!-- com.freedy.sample 하위 패키지에서 로그설정 -->
<!-- additivity가 false인 경우 상위로거의 설정값을 상속받지 않는다. -->
<!-- - jdbc.sqlonly : SQL문만을 로그로 남기며, PreparedStatement일 경우 관련된 argument
값으로 대체된 SQL문이 보여진다. - jdbc.sqltiming : SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를
포함한다. - jdbc.audit : ResultSet을 제외한 모든 JDBC 호출 정보를 로그로 남긴다. - jdbc.resultset
: ResultSet을 포함한 모든 JDBC 호출 정보를 로그로 남긴다. - jdbc.resultsettable : SQL 결과 조회된
데이터의 table을 로그로 남긴다. -->
<!-- SQL Logger -->
<logger name="jdbc.sqltiming" additivity="false">
<level value="warn" />
<appender-ref ref="console" />
</logger>
<logger name="jdbc.sqlonly" additivity="false">
<level value="info" />
<appender-ref ref="console" />
</logger>
<logger name="jdbc.audit" additivity="false">
<level value="warn" />
<appender-ref ref="console" />
</logger>
<logger name="jdbc.resultset" additivity="false">
<level value="warn" />
<appender-ref ref="console" />
</logger>
<logger name="jdbc.resultsettable" additivity="false">
<level value="info" />
<appender-ref ref="console" />
</logger>
<!-- Root Logger -->
<root>
<priority value="info" />
<appender-ref ref="console" />
<appender-ref ref="fileLogger" />
</root>
</log4j:configuration>
========================================================================================================================================================t
스프링부트
스프링부트는 기본적으로 8버전이상
저렇게 설정하고 next, next누르고 맨!마지막에 finished누르기!
-- 스프링부트는 단독으로 실행이 가능한 스프링 애플리케이션을 생성한다.(tomcate,jetty등을 내장)
-- 기본설정이 되어있는 starter 컴포넌트를 제공
-- 가능한 자동으로 설정되어있음
-- 설정을 위한 xml코드를 생성하지않는다(=대신 자바코드를 생성해야함)
안에 톰캣이 내장되어있어서 속도가 더 빠르다.
spring_boot_board 폴더에서 pom.xml들어가기 - 전이랑 다른것들이 많음
ServletInitializer 클래스 = web.xml 이랑 같은 기능.
SpringBootBoardApplication.java - 에노테이션에도 많은 기능이 숨어있음
HomeController.java 생성
[HomeController.java]
package edu.bit.ex;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController // 스트링부트에서는 무조건 Rest가 기본.
public class HomeController {
@RequestMapping("/")
public String home() {
return "<h1>Hello, Spring Boot!<h1>";
}
}
application.properties에 서버포트,오라클DB 넣기
#server port number
server.port = 8282
#datasource (oracle)
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521/xe
#spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
#spring.datasource.url=jdbc:log4jdbc:oracle:thin:@localhost:1521/xe
spring.datasource.username=scott
spring.datasource.password=tiger
패키지에서 Run As - Spring Boot App 클릭(이제 server돌리는거 아님)
[pom.xml]에 적절히 붙여넣기
<repositories>
<repository>
<id>oracle</id>
<name>ORACLE JDBC Repository</name>
<url>http://maven.jahia.org/maven2</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc7</artifactId>
<version>12.1.0.2</version>
</dependency>
↓ [pom.xml]전체 소스
[pom.xml] 전체 소스
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.3</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>edu.bit</groupId>
<artifactId>ex</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>spring_boot_board</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<repositories>
<repository>
<id>oracle</id>
<name>ORACLE JDBC Repository</name>
<url>http://maven.jahia.org/maven2</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc7</artifactId>
<version>12.1.0.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
Spring_boot_hello
hello world
=========
jongminlee0.github.io/2020/03/12/thymeleaf/참고
※스트링부트는 jsp를 권장하지 않는다※
스트링부트는 타임리프를 쓴다!!!
타임리프 쓰는 방법 -- 설정파일 살짝 바꾸기
[application.properties] 에 밑에 더 추가
#server port number
server.port = 8282
#datasource (oracle)
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521/xe
#spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
#spring.datasource.url=jdbc:log4jdbc:oracle:thin:@localhost:1521/xe
spring.datasource.username=scott
spring.datasource.password=tiger
↓기존거처럼 써먹으려고 jsp파일 받겠다 설정하는것
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
mybatis.mapper-locations=classpath:mappers/**/*.xml //모든 .xml파일 전부 매핑시키겠다.
.jsp파일 폴더만들어서 넣기
==================================
스트링부트로 리스트 뽑기
[BoardController.java]
package edu.bit.ex.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import edu.bit.ex.service.BoardServiceImpl;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@Slf4j // log4j보다 속도가 더 빠름
@AllArgsConstructor
@Controller //무!조!건 @Controller는 여기 하나만 있어야함. 다른class에 또있으면 무조건 오류
public class BoardController {
private BoardServiceImpl boardService;
@GetMapping("/board/list")
public ModelAndView list(ModelAndView mav) {
log.debug("list");
log.info("list");
mav.setViewName("rest_list");
mav.addObject("list", boardService.getList());
return mav;
}
//
// @GetMapping("/content_view")
// public ModelAndView content_view(ModelAndView mav, BoardVO boardvo) {
//
// return mav;
//
// }
}
[BoardServiceImpl.java]
package edu.bit.ex.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import edu.bit.ex.mapper.BoardMapper;
import edu.bit.ex.vo.BoardVO;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@Service
public class BoardServiceImpl {
@Autowired //이거 안붙여주니까 에러남
private BoardMapper mapper;
public List<BoardVO> getList() {
return mapper.getList();
}
}
[BoardMapper.java]
package edu.bit.ex.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import edu.bit.ex.vo.BoardVO;
@Mapper
public interface BoardMapper {
public List<BoardVO> getList();
public int boardCount();
}
[BoardMapper.xml]
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="edu.bit.ex.mapper.BoardMapper">
<select id="getList" resultType="edu.bit.ex.vo.BoardVO">
<![CDATA[
select * from mvc_board order by bGroup desc, bStep asc
]]>
</select>
</mapper>
'코딩 > 수업 정리' 카테고리의 다른 글
소스트리 사용법 (0) | 2021.02.25 |
---|---|
21.02.24 [064] Wed (0) | 2021.02.24 |
21.02.22 [062] Mon (0) | 2021.02.22 |
21.02.19 [061] Fri (0) | 2021.02.19 |
21.02.18 [060] Thu (0) | 2021.02.18 |
댓글