java Tip

2022. 2. 2. 22:14Java

날짜 연산

https://codechacha.com/ko/java-examples-add-two-dates/

 

Java - Date에 년,월,일을 더하고 빼는 방법

Date에 날짜를 더하는 다양한 방법에 대해서 알아보겠습니다. Date 객체에 월, 일을 추가하는 방법을 알아보겠습니다. 그리고 두개의 Date 객체를 더하는 방법을 알아보겠습니다. Date는 1970년을 기

codechacha.com

String day = "20220101";

DateFormat df = new SimpleDateFormat("yyyyMMdd");
							
try {
	Calendar cal = Calendar.getInstance();
	cal.setTime(df.parse(day));
	cal.add(Calendar.DATE, 1);
	day = df.format(cal.getTime());
} catch(ParseException e) {
	e.printStackTrace();
}

문자열 날짜형으로 변경

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHH:mm:ss");
String strDate = day + time;
Instant date = null;

try {
	date = sdf.parse(strDate).toInstant();
} catch(ParseException e) {
	e.printStackTrace();
}

Spring Boot에서 system properties 값 참조하기

java -jar -Dtest=xxxx Application.jar

public class Application {

	@Value("${test}")
	String test;
	
	@GetMapping("/")
	String home() {
		System.out.println(test);
		return "Spring is here!";
	}

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
		System.out.println("Start!");
	}
}

Spring Boot에서 appliation.properties 변수 참조하기

https://kim-jong-hyun.tistory.com/17

 

[Spring] - properties파일에 정의된 값들 JAVA에서 조회

이번에는 Spring 에서 properties파일에 정의된 값들을 JAVA로 가져오는 방법에 대해 얘기해보자. Spring Boot로 애플리케이션 개발을 해보신분들이라면 application.properties / application.yml / 별도로 만든..

kim-jong-hyun.tistory.com

# static으로 선언하면 값을 가져오지 못함

	@Value("${quarts.schedule}")
	private static String schedule;
    
	@GetMapping("/")
	String home() {
		logger.info("Quartz Schedule: " + schedule);
		return "Spring is here!";

결과

Quartz Schedule: null

logback 사용시, 아래 구문이 빠지면 아래 부분이 작동을 하지 않음

환경설정파일 적용 안됨

콘솔은 잘되나, 파일로 로깅하는 것은 안됨

main 함수에 꼭 필요한 내용

SpringApplication.run(ProcessKill.class, args);

log4j2 셋팅

https://velog.io/@bread_dd/Log4j-2-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-%EA%B0%9C%EB%85%90

 

Log4j 2 제대로 사용하기 - 개념

log4j2.xml이전 글에서 log4j 2 설정파일을 보여드렸는데요, 각각의 요소가 뭘 의미하는지 알아보도록 할게요Configuration은 로그 설정의 최상위 요소입니다. 일반적으로 Configuration은 Properties, Appenders,

velog.io

https://tlatmsrud.tistory.com/31

 

[Spring] log4j2 사용법, 로그남기기, 파일 저장

목차 1. 개요 2. 환경 3. 라이브러리 4. 예제 5. 실행결과 1. 개요  log4j2 = log lib  log를 남기는 이유는 여러 가지가 있는데 대표적으로 [에러 추적, 디버깅] 또는 [통계]나 [기록]을 목적으로 해!  어

tlatmsrud.tistory.com

pom.xml

		<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl -->
		<dependency>
		    <groupId>org.apache.logging.log4j</groupId>
		    <artifactId>log4j-slf4j-impl</artifactId>
		    <version>2.17.2</version>
		</dependency>

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>

<Configuration>
    <Properties>
        <Property name="logNm">rolling</Property>
        <Property name="layoutPattern">%style{%d{yyyy/MM/dd HH:mm:ss,SSS}}{cyan} %highlight{[%-5p]}{FATAL=bg_red, ERROR=red,
            INFO=green, DEBUG=blue}  [%C] %style{[%t]}{yellow}- %m%n</Property>
    </Properties>
    
	<!-- 로그 출력 방식 -->
	<Appenders>
    	<!-- 콘솔 출력 방식 -->
		<Console name="console-log" target="SYSTEM_OUT">
			<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n" />
		</Console>
        <!-- 파일 저장 방식 -->
        <File name="file" fileName="./logs/processKill.log">
              <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
        </File>	
        <RollingFile name="rollingFile" fileName="./logs/${logNm}.log" filePattern="./logs/${logNm}_%d{yyyy-MM-dd}_%i.log.gz">
            <PatternLayout pattern="${layoutPattern}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="300KB"/>
                <TimeBasedTriggeringPolicy interval="1"/>
            </Policies>
            <DefaultRolloverStrategy max="10" fileIndex="min"/>
        </RollingFile>
	</Appenders>
    	
	<Loggers>
		<Logger name="moniter.PrinterClient" level="DEBUG"></Logger>
		<Root level="DEBUG">
			<appender-ref ref="console-log" level="DEBUG" />
			<appender-ref ref="file" level="INFO" />
			<appender-ref ref="rollingFile" level="INFO" />
		</Root>
	</Loggers>
</Configuration>
    	
	<Loggers>
		<Logger name="moniter.PrinterClient" level="DEBUG"></Logger>
		<Root level="DEBUG">
			<appender-ref ref="console-log" level="DEBUG" />
			<appender-ref ref="file" level="INFO" />
		</Root>
	</Loggers>
</Configuration>

한글깨짐 문제 찾기

https://pkss.tistory.com/entry/JAVA-%ED%95%9C%EA%B8%80%EA%B9%A8%EC%A7%90-%ED%95%9C%EB%B0%A9%EC%97%90-%EC%B0%BE%EA%B8%B0

 

[JAVA] 한글깨짐 한방에 찾기

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 String word ="인코딩 문제인가? 이클립스 문제인가? WAS문제 인가 그것이 알고 싶다...."; System.out.println("utf-8 -> euc-kr    ..

pkss.tistory.com

				System.out.println("-->" + new String(e.getMessage().getBytes("UTF-8"), "EUC-KR"));
				System.out.println("-->" + new String(e.getMessage().getBytes("UTF-8"), "KSC5601"));
				System.out.println("-->" + new String(e.getMessage().getBytes("UTF-8"), "x-windows-949"));
				System.out.println("-->" + new String(e.getMessage().getBytes("UTF-8"), "iso-8859-1"));
				System.out.println("-->" + new String(e.getMessage().getBytes("KSC5601"), "EUC-KR"));
				System.out.println("-->" + new String(e.getMessage().getBytes("KSC5601"), "UTF-8"));
				System.out.println("-->" + new String(e.getMessage().getBytes("KSC5601"), "x-windows-949"));
				System.out.println("-->" + new String(e.getMessage().getBytes("KSC5601"), "iso-8859-1"));
				System.out.println("-->" + new String(e.getMessage().getBytes("x-windows-949"), "EUC-KR"));
				System.out.println("-->" + new String(e.getMessage().getBytes("x-windows-949"), "KSC5601"));
				System.out.println("-->" + new String(e.getMessage().getBytes("x-windows-949"), "UTF-8"));
				System.out.println("-->" + new String(e.getMessage().getBytes("x-windows-949"), "iso-8859-1"));
				System.out.println("-->" + new String(e.getMessage().getBytes("iso-8859-1"), "EUC-KR"));
				System.out.println("-->" + new String(e.getMessage().getBytes("iso-8859-1"), "KSC5601"));
				System.out.println("-->" + new String(e.getMessage().getBytes("iso-8859-1"), "x-windows-949"));
				System.out.println("-->" + new String(e.getMessage().getBytes("iso-8859-1"), "UTF-8"));
				System.out.println("-->" + new String(e.getMessage().getBytes("EUC-KR"), "UTF-8"));
				System.out.println("-->" + new String(e.getMessage().getBytes("EUC-KR"), "KSC5601"));
				System.out.println("-->" + new String(e.getMessage().getBytes("EUC-KR"), "x-windows-949"));
				System.out.println("-->" + new String(e.getMessage().getBytes("EUC-KR"), "iso-8859-1"));

Quartz 변수 넘기기

https://huikyun.tistory.com/231

 

[Quartz]Quartz에서 작업 클래스로 파라미터 넘기기...

자바에서 스케쥴링을 구현하기 위하여 Quartz 패키지를 사용하다가 한가지 문제에 부딛히게 되었다. JobDetail 클래스의 객체를 생성할 때, 클래스 타입의 파라미터로 작업 클래스를 설정한다는 것

huikyun.tistory.com

변수 셋팅

		JobDetail jobDetail = JobBuilder.newJob(DashboardDataJob.class)
				.build();
		CronTrigger trigger = (CronTrigger)TriggerBuilder.newTrigger()
				.withSchedule(CronScheduleBuilder.cronSchedule(schedule))
				.build();
		
		JobDataMap jobDataMap = jobDetail.getJobDataMap();
		jobDataMap.put("port", port);

변수 사용하기

public class DashboardDataJob implements Job {

	private static Logger logger = LoggerFactory.getLogger(DashboardDataJob.class);
	
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
    	logger.info("DashboardDataJob Start");
    	JobDataMap jobDataMap = context.getMergedJobDataMap();
    	String port = jobDataMap.getString("port");
		String value = "http://localhost:"+ port +"/insert";
		logger.info("URL: "+ value);

		try {
			URL url = new URL(value);
			InputStream is = url.openStream();
			is.close();
		} catch (java.io.IOException e) {
			// TODO Auto-generated catch block
			logger.error("execute() Except", e);
		}

	   	logger.info("DashboardDataJob End");
    }
}

JVM TimeZone 설정

http://daplus.net/java-jvm-timezone%EC%9D%84-%EC%98%AC%EB%B0%94%EB%A5%B4%EA%B2%8C-%EC%84%A4%EC%A0%95%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95/

 

[java] JVM TimeZone을 올바르게 설정하는 방법 - 리뷰나라

Java 프로그램을 실행하려고하는데 OS 정의 시간대 대신 기본 GMT 시간대를 사용하고 있습니다. JDK 버전은 1.5이고 OS는 Windows Server Enterprise (2007)입니다. Windows에는 중앙 시간대가 지정되어 있지만

daplus.net

OS의 TimeZone과 JVM의 TimeZone이 다를 경우, 조치하는 방법

1. 실행시 옵션 적용

java -Duser.timezone="Asia/Seoul" -jar abc.jar

2. 환경변수 설정

export TZ="Asia/Seoul"

JAVA_OPTS 처리하기

https://whoa0987.tistory.com/37

 

[JBoss EAP 7.2] 소스 내 properties 대신 서버 JAVA_OPTS 환경변수 사용하는 법

안녕하세요. 바한입니다. 다들 소스내에 config.properties 등의 properties 파일을 두어 변수들을 관리하거나 하실텐데요, 제가 소개해드릴 방법은 properties 파일 대신, 자바 환경 변수를 이용해 변수를

whoa0987.tistory.com

	# JAVA_OPTS 셋팅
    -DrootDir=/bac/bbb/
    
    # JAVA_OPTS 변수 가져오기
    public ImageManager(String dir) {
		ImagePath.add(System.getProperty("rootDir") + dir);	
	}

Maven에서 resource 복사하기(이미지, jar 등)

http://daplus.net/maven-maven%EC%9C%BC%EB%A1%9C-%ED%8C%8C%EC%9D%BC%EC%9D%84-%EB%B3%B5%EC%82%AC%ED%95%98%EB%8A%94-%EB%AA%A8%EB%B2%94-%EC%82%AC%EB%A1%80/

 

[maven] Maven으로 파일을 복사하는 모범 사례 - 리뷰나라

Maven2를 사용하여 dev 환경에서 dev-server 디렉토리로 복사하려는 구성 파일과 다양한 문서가 있습니다. 이상하게도 Maven은이 작업에서 강력 해 보이지 않습니다. 옵션 중 일부 : Maven에서 간단한 복

daplus.net

jar 파일안의 jar, image 등은 접근이 안되기 때문에 디렉토리에 복사하여 참조하도록 함

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>3.2.0</version>
				<configuration> 
					<archive> 
						<manifest> 
						    <addClasspath>true</addClasspath>
							<mainClass>lok.Lok</mainClass> 
							<addClasspath>true</addClasspath>
							<classpathPrefix>resources/libs/</classpathPrefix>
						</manifest> 
					</archive> 
				</configuration>
			</plugin>
			<plugin> 
				<groupId>org.apache.maven.plugins</groupId> 
				<artifactId>maven-dependency-plugin</artifactId> 
				<version>3.2.0</version> 
				<executions> <execution> 
					<id>copy-dependencies</id> 
					<phase>package</phase> 
					<goals> 
						<goal>copy-dependencies</goal> 
					</goals>
					<configuration>
						<includeScope>runtime</includeScope> 
						<outputDirectory>${project.build.directory}/resources/libs/</outputDirectory> 
					</configuration> 
				</execution> 
			</executions> 
		</plugin>
		<plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.2.0</version>
            <executions>
                <execution>
                    <id>copy-resource-one</id>
                    <phase>install</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>

                    <configuration>
                        <outputDirectory>${basedir}/target/resources</outputDirectory>
                        <resources>
                            <resource>
                                <directory>src/main/resources</directory>
                                <includes>
                                    <include>*/**</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
           </executions>
        </plugin>
		</plugins>
	</build>

String.split 사용시 유의점

String[] split(String regex)은 입력값은 정규식이기 때문에 주의해야 함

String temp = "abc.txt".split(".");
System.out.println(temp);

위의 결과는 '0'임

정규식으로 인식하기 때문에 '.split("\\.")'으로 표현해야 함

'Java' 카테고리의 다른 글

Class 정보 가져오기  (0) 2024.07.27
request 객체 정보 조회  (0) 2024.07.27
pom.xml 셋팅  (0) 2022.01.31
maven 에러  (0) 2022.01.30
java 설치  (0) 2022.01.30