일모도원(日暮途遠) 개발자

[표준프레임워크 맥] 공통컴포넌트 본문

스프링/표준프레임워크

[표준프레임워크 맥] 공통컴포넌트

달님개발자 2022. 6. 5. 10:48

 

표준프레임워크에는 로그인, 게시판등 공통으로 사용되는 기능들을 공통컴포넌트로 만들어두었다.

난 혼자 여기저기 소스들 덕지덕지 붙여가면서 만들었는데, 공통컴포넌트공부해서 이걸로 내서버를 업데이트 해야겠다.

 

https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:com:v3.10:init 

 

egovframework:com:v3.10:init [eGovFrame]

 

www.egovframe.go.kr

공통컴포넌트 시작하기(Getting Started)

일단 공통컴포넌트를 다운받아보자.

다운로드 - 공통컴포넌트 - 다운로드 - 공통컴포넌트 3.10.0 all-in-one 배포파일을 선택하자.

https://www.egovframe.go.kr/home/sub.do?menuNo=49 

zip 파일을 다운로드 받는다.

다운받은 후 압축을 풀어보자. (이클립스 프로젝트와 같은 포맷이다)

공통컴포넌트를 사용할 샘플 웹프로젝트를 만들어보자

 

Project name을 all-in-one으로 하고 Group Id를 적는다.

근데 여기서는 Target Runtime과 Dynamic web module도 3.1을 선택하고  version도 3.10.0으로 하라고 하네.

Apache Tomcat v8.5만 설치했기 때문에 8.5로 선택했다.

샘플 프로젝트를 파인더로 열어보자.

 

위에서 다운받아 압축을 푼 폴더와 파일들을 샘플 프로젝트에 덮어 씌우자.

프로젝트를 리프레쉬 해보자.

그럼 왼쪽처럼 빈 프로젝트가 오른쪽 처럼 갱신되면서 파일들이 추가된걸 볼수 있다.

 

이제 maven install을 해보자.

(근데 정확히 뭘 하는거지? 공통컴포넌트를 어떤 방법으로 인스톨한다는건가?)

우측 하단을 보면 이런씩으로 install하는 진행현황을 볼수 있다.

 

Run on Server를 할때 아래와 같은 에러가 나면 mysql세팅을 해주자. (이건 각자의 mysql세팅에 따라 다르다)

.factory.BeanCreationException:~~~~~(Access denied for user 'com'@'localhost' (using password: YES))

 

src/main/resources > egovframework > egovProps > globals.properties

<globals.properties 이전>

# DB서버 타입(mysql, oracle, altibase, tibero, cubrid, maria, postgres) - datasource 및 sqlMap 파일 지정에 사용됨

Globals.DbType = mysql



# KISA 검증 (2019년 11월) - 중요정보 암호화

# Globals.mysql.Password 는 com01 을 암호화한 것으로 https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:fdl:crypto_simplify_v3_8 참조할 것

# Globals.mysql.Password = com01 처럼 평문을 사용하려면 context-crypto.xml 에서 initial="false" crypto="false" 로 설정하고, 

# context-datasource.xml 에서 <property name="password" value="${Globals.mysql.Password}"/> 로 바꾸어 주어야 함

#mysql

Globals.mysql.DriverClassName=net.sf.log4jdbc.DriverSpy

Globals.mysql.Url=jdbc:log4jdbc:mysql://127.0.0.1:3306/com

Globals.mysql.UserName = com

Globals.mysql.Password = xz4fmrSdr1vGGl6UtwPLwA%3D%3D

자세히 보면 비밀번호를 암호화해서 넣었다고 나온다. (xz4fmrSdr1vGGl6UtwPLwA%3D%3D)

 

context-datasource.xml을 보자.

username은 globals.properties파일의 ${Globals.mysql.UserName} 에서 값을 가져오지만 

password는 #{egovEnvCryptoService.getPassword() 에서 값을 가져온다. 즉 암호화된 값을 가져온다는 것이다.

	<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="${Globals.mysql.DriverClassName}"/>
		<property name="url" value="${Globals.mysql.Url}" />
		<property name="username" value="${Globals.mysql.UserName}"/>
		<!-- 암호화(Crypto) 관련 서비스 https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:fdl:crypto_simplify_v3_8 참조 -->
		<property name="password" value="#{egovEnvCryptoService.getPassword()}"/>
	</bean>

context-crypto.xml을 보자.

     initial="true"
     crypto="true"
위 두 옵션이 암호화를 사용하겠다고 하는것이다.

    <egov-crypto:config id="egovCryptoConfig" 
    	initial="true"
    	crypto="true"
    	algorithm="SHA-256"
    	algorithmKey="egovframe"
    	algorithmKeyHash="gdyYs/IZqY86VcWhT8emCYfqY1ahw2vtLG+/FzNqtrQ="
		cryptoBlockSize="1024"
		cryptoPropertyLocation="classpath:/egovframework/egovProps/globals.properties"
	/>

나는 아직 공부가 덜 되었으므로 일단은 암호화를 안하고 사용해보자.

# Globals.mysql.Password = com01 처럼 평문을 사용하려면 context-crypto.xml 에서 initial="false" crypto="false" 로 설정하고, 

    <egov-crypto:config id="egovCryptoConfig" 
    	initial="false"
    	crypto="false"
    	algorithm="SHA-256"
    	algorithmKey="egovframe"
    	algorithmKeyHash="gdyYs/IZqY86VcWhT8emCYfqY1ahw2vtLG+/FzNqtrQ="
		cryptoBlockSize="1024"
		cryptoPropertyLocation="classpath:/egovframework/egovProps/globals.properties"
	/>

# context-datasource.xml 에서 <property name="password" value="${Globals.mysql.Password}"/> 로 바꾸어 주어야 함

	<!-- MySQL -->
	<beans profile="mysql">  
	<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="${Globals.mysql.DriverClassName}"/>
		<property name="url" value="${Globals.mysql.Url}" />
		<property name="username" value="${Globals.mysql.UserName}"/>
		<!-- 암호화(Crypto) 관련 서비스 https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:fdl:crypto_simplify_v3_8 참조 -->
		<!-- <property name="password" value="#{egovEnvCryptoService.getPassword()}"/> -->
		<property name="password" value="${Globals.mysql.Password}"/>
	</bean>
	</beans>

 

<globals.properties 이후> 이는 본인의 mysql설정에 따라서 다르다.

Globals.mysql.DriverClassName=com.mysql.jdbc.Driver

Globals.mysql.Url=jdbc:mysql://localhost:3306/egov1

Globals.mysql.UserName =본인의 계정

Globals.mysql.Password =본인의 암호화 되지 않은 암호)

 

 

그리고 관련 테이블과 데이타를 mysql에 생성하는것도 잊지 말자.

com_DDL_mysql.sql

com_DML_mysql.sql

 

 

 

maven 인스톨을 안하고 Run on Server를 하면 아래처럼 나오지만

 

maven install하고 mysql설정을 제대로 해주면 아래처럼 화면이 나온다.

 

환경설정 부분은 여기를 참고하자.