반응형

STS 를 다시 깔고 시작할때 자주 겪은 로딩이라 기록해둔다.

특히 java 파일에서 수정을 하고 저장을 누르면 화면이 멈추면서 아무것도 누를 수 없게 로딩이 걸린다. 그러고 로딩이 풀리고 아래의 process 를 뭐하고있나 보면, building, validating 을 진행하고있다... 

매번 수정을 할 때마다 building, validating 을 멈추게 하고 싶으면!!

첫번째, validation 끄기

window > preferences > Validation

Build 부분에 체크를 모두 disable 시켜준다.

두번째, 자동으로 매번 building 끄기

Project > Build Automatically 의 체크를 없애준다.

참고로, 바로 적용되는게 아니라 STS 를 껐다 켜줘야한다!!! 그러면 세상 살 것처럼 빨라진 걸 느낄 것 이다!

반응형

 

반응형
반응형

전자정부 표준프레임워크를 다운로드 하고 환경설정! 은 아래링크 글에서 설명했다.

https://minah-workmemory.tistory.com/21

 

eGov(전자정부 표준프레임워크) 3.10.0 시작하기

공식사이트 주소: https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:dev3.10:gettingstarted 0. 개발 환경 정보 OS - Windows 10, 7 이상 JDK - Java SE SDK 7.0 이상 IDE -  Eclipse 4.16.0 / JDK..

minah-workmemory.tistory.com

전자정부 표준프레임워크 공식 사이트 spring security architecture:

https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:fdl:server_security:architecture 

전자정부 개발프레임워크의 Server Security는 컨테이너 기동시 적용되는 XML 기반 인증이 아닌 실시간 적용되는 DB기반의 JDBC 인증을 사용한다.

1. spring security 의존성 추가

※참고로 나는 Maven 프로젝트이다!!!!!

Spring Security 공식사이트:https://docs.spring.io/spring-security/site/docs/4.2.13.RELEASE/reference/htmlsingle/#maven

 pom.xml  

 상단에 <properties> 태그안에 <security.version> ... 추가 + 아래의 dependency를 추가

<properties>
    <spring.maven.artifact.version>4.3.25.RELEASE</spring.maven.artifact.version>
    <egovframework.rte.version>3.10.0</egovframework.rte.version>
    <security.version>4.2.3.RELEASE</security.version>
</properties>

<!-- ... other repository ... -->

<dependencies>
<!-- ... other dependency elements ... -->
	<dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-core</artifactId>
        <version>${security.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>${security.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>${security.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-taglibs</artifactId>
        <version>${security.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-test</artifactId>
        <version>${security.version}</version>
    </dependency>
</dependencies>

 

 web.xml   src/main/webapp/WEB-INF/web.xml

<!--보안 절차를 위해서는 모든 요청이 spring security 필터를 걸쳐가도록 함-->
<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
  <filter-name>springSecurityFilterChain</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>


<!--spring 폴더안에 context- 로 시작하는 xml을 읽을 수 있게  -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:egovframework/spring/context-*.xml</param-value>
</context-param>

 

context-security.xml  파일 추가  src/main/resources/egovframework/spring/context-security.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
	xmlns:beans="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">


	<http auto-config="true" use-expressions="false">
  		<intercept-url pattern="/**" access="ROLE_ADMIN" />
	</http>
	
	<authentication-manager>
	  <authentication-provider>
	    <user-service>
	      <user name="admin" password="admin" authorities="ROLE_ADMIN"/>
	      <user name="user" password="user" authorities="ROLE_USER"/>
	    </user-service>
	  </authentication-provider>
	</authentication-manager>
</beans:beans>

 

※ filter 를 추가한 후에,  maven > update project 를 한 후에 서버를 실행해서 화면을 보면 아래와 같이 나오는걸 확인할 수 있다. (기본으로 spring security 에서 제공하는 화면)

intercept-url 에서 모든 /** url 은 "ROLE_ADMIN"만 접근 할 수 있게 해놨기 때문에, user로 로그인하면 아래와 같은 승인을 거부했다는 화면이 뜬다.

※ Spring Security 버전 4 이후 부터는 모든 비밀번호는 암호화를 해야한 사용이 가능하다고 하니 만약 로그인이 안된다면, password="{noop}user" 이런색으로 {noop} 을 넣어주자 -> 암호화를 사용하지 않겠다는 의미

2. MyBatis를 이용하여 DB연동

xml 에 계정과 비밀번호를 직접 등록하지 않고, DB속에서 계정정보를 조회하여 로그인하는 방법을 구현해보자.

전자정부 표준프레임워크 공식사이트 MyBatis 적용 가이드 : 

https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:psl:dataaccess:mybatisguide 

mybatis-spring 연동: http://mybatis.org/spring/getting-started.html

pom.xml 버전 변경 & 의존성 추가

 <!-- mysql이나 oracle DB 사용시 아래 설정 추가 -->
<dependency>
    <groupId>com.googlecode.log4jdbc</groupId>
    <artifactId>log4jdbc</artifactId>
    <version>1.2</version>
    <exclusions>
        <exclusion>
            <artifactId>slf4j-api</artifactId>
            <groupId>org.slf4j</groupId>
        </exclusion>
    </exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client -->
<dependency>
    <groupId>org.mariadb.jdbc</groupId>
    <artifactId>mariadb-java-client</artifactId>
    <version>2.7.2</version>
</dependency>

<dependency>
    <groupId>commons-dbcp</groupId>
    <artifactId>commons-dbcp</artifactId>
    <version>1.4</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.31</version>
</dependency>
<!-- mybatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.2.4</version>
</dependency>
<!-- mybatis-spring -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.2.1</version>
</dependency>
<!-- SQL 로그를 보기 위한 라이브러리 -->
<dependency>
    <groupId>org.bgee.log4jdbc-log4j2</groupId>
    <artifactId>log4jdbc-log4j2-jdbc4</artifactId>
    <version>1.16</version>
</dependency>

mariaDB 를 사용할 것 이기 때문에 mariaDB 의 의존성이 추가되어있음

context-mapper.xml 설정

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">

	<!-- SqlSession setup for MyBatis Database Layer -->
	<bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<!-- vo bean에 저장해두기 위한 property -->
		<!-- <property name="configLocation" value="classpath:/egovframework/sqlmap/config/sql-mapper-config.xml" /> -->
		<property name="mapperLocations" value="classpath:/egovframework/sqlmap/mappers/*.xml" />
	</bean>

	<!-- MapperConfigurer setup for MyBatis Database Layer with @Mapper("deptMapper") in DeptMapper Interface -->
 	<bean class="egovframework.rte.psl.dataaccess.mapper.MapperConfigurer">
		<property name="basePackage" value="egovframework.example.sample.service.impl" />
	</bean>
	
</beans>

이미 생성되어있는 내용이다. 

mybatis 를 사용할때 Mapper에 대한 정의들을 넣어두는 파일이다. 설명을 조금 붙이자면, 나는 VO를 따로 지정해서 하지않고 HashMap으로 데이터를 받아올 예정이라 propery name="configLocation"을 주석처리했다. 하지만 VO를 지정해서 사용하고 싶다면, sqlmap/config 폴더를 생성해서 아래와 같이 지정해 두면된다!

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    
    <typeAliases>
    	<typeAlias alias="empVO" type="egovframework.sample.emp.service.EmpVO" />
    	<typeAlias alias="deptVO" type="egovframework.sample.dept.service.DeptVO" />
    	<typeAlias alias="searchVO" type="egovframework.sample.common.SearchVO" />
    </typeAliases>
 
</configuration>

 

name="mapperLocations" 는 말그대로 실제로 실행될 쿼리들을 모아둔 xml파일들의 디렉토리를 지정해둔것이다. 맨 아래의 name="basePackage"는 위에 설명처럼 @Mapper 어노테이션을 가진 인터페이스의 자바 파일 디렉토리를 지정해둔것이다. mapperLocations 에 지정해 둔 것 처럼 sqlmap 폴더안에 mappers 폴더를 생성했다.

DB 생성

HeidiSQL (mariaDB) 에 데이터베이스 생성 (생성했다는 가정하에 진행하겠다. 참고는 아래 링크를 이용!): 

https://minah-workmemory.tistory.com/22?category=1000459 

 

HeidiSQL 에서 데이터베이스 생성, 테이블 생성

HeidiSQL (mariaDB) root로 접속한 후, 생성한 데이터베이스를 새로운 session 에 넣어주자. '사용자' 에는 아이디를 '암호'에는 비밀번호를 설정한 대로 넣어준다. 그러면 데이터베이스 쪽에 삼각형을 누

minah-workmemory.tistory.com

 

context-datasource.xml   에 hsql 이 있던 것을 넣어준다. 물론 본인의 DB 정보를 넣어줌.

(테스트 실행용은 주석처리!)

※ 나는 log4jdbc를 사용하고 싶어서 driverClassName 에 mariadb가 아닌거다. 만약 그렇지 않으면 driverClassName 에 "com.maradb.jdbc.Driver" 을 넣어주면 된다.

 

그 다음 글에서 Controller, Mapper, Service, ServiceImpl, DAO, VO 등을 생성해서 연결해보자!

반응형

 

반응형

+ Recent posts