본문 바로가기
코딩/수업 정리

21.02.23 [063] Tue

by 6^6 2021. 2. 23.
728x90

 

<

스트링부트

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>

전보다 깔끔해지고 간결해진 콘솔창(log양이 많이 줄어듦)

 

 

 

========================================================================================================================================================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>

 

728x90

'코딩 > 수업 정리' 카테고리의 다른 글

소스트리 사용법  (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

댓글