일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- IntelliJ
- Spring
- LOG4J
- useEffect
- Git
- MySQL
- gson
- maven
- log4j2
- springboot
- wildfly
- nodejs
- JPA
- react
- dbeaver
- BPMN
- database
- gradle
- nginx
- mybatis
- JavaScript
- Kubernetes
- intellijIDEA
- tibero
- Java
- Windows
- VSCode
- NCP
- kubectl
- docker
- Today
- Total
목록분류 전체보기 (249)
두 손끝의 창조자
junit5 부터는 RunWith 대신 ExtensionWith 애너테이션을 사용하여 스프링과 상호작용한다. 그러기 위해서는 SpringExtention 클래스가 필요한데 이건 스프링 5부터 지원한다. spring 4 에서 사용하기 위해서는 아래 라이브러리를 추가한다. 먼저 리포지포리를 추가하고 repositories { mavenLocal() mavenCentral() maven { url "https://jitpack.io" } } testImplementation('com.github.sbrannen:spring-test-junit5:1.5.0') 테스트 의존성을 추가한다.
EmbeddedDatabase는 테스트 할 때 유용하게 쓸 수 있다. 나는 이것을 내가 만든 코드가 트랜잭션이 잘 동작하는지 확인하고자 할 때 사용했다. EmbeddedDatabase 는 자체로 DataSource 이어서 스프링의 트랜잭션 매니저나 JdbcTemplete 에 바로 사용할 수 있다. 하지만 트랜잭션테스트를 하기 위해서는 그대로 사용하면 build 할 때마다 다른 데이터베이스가 생겨 스키마를 공유할 수가 없게된다. 그래서 EmbeddedDatabase 는 진짜 디비만 생성하고 데이터 소스는 이를 참고하여 만든뒤 그 것을 활용하는것이 좋겠다. EmbeddedDatabase database = new EmbeddedDatabaseBuilder() .generateUniqueName(true) ...
DAO는 데이터 지속성의 추상화입니다. 그러나 Repository는 개체 모음의 추상화입니다. DAO는 스토리지 시스템에 더 가까운 저수준 개념입니다. 그러나 Repository는 Domain 개체에 더 가까운 상위 수준 개념입니다. DAO는 데이터 매핑 / 액세스 레이어로 작동하여 복잡한 쿼리를 숨깁니다. 그러나 Repository는 도메인과 데이터 액세스 계층 사이의 계층이므로 데이터 조합 및 도메인 개체 준비의 복잡성을 숨깁니다. DAO는 Repository를 사용하여 구현할 수 없습니다. 그러나 Repository는 기본 저장소에 액세스하기 위해 DAO를 사용할 수 있습니다.
docs.wildfly.org/17/Getting_Started_Guide.html Getting Started Guide WildFly 17 is the latest release in a series of JBoss open-source application server offerings. WildFly 17 is an exceptionally fast, lightweight and powerful implementation of the Java Enterprise Edition 8 Platform specifications. The state-of-the-art arch docs.wildfly.org Standalone Directory Structure In " standalone " mode e..
이클립스는 워크스페이스 개념이 있고 워크스페이스 안에 있는 프로젝트들은 쉽게 의존성을 가질 수 있다. 그래서 한 프로젝트를 수정해도 별다른 빌드나 배포 없어도 의존성을 가지는 프로젝트에서 즉시 변경된 사항을 사용할 수 있다. 이클립스에서는 모듈을 추가하여 비슷하게 구현할 수 있다. www.jetbrains.com/help/idea/working-with-module-dependencies.html#remove-dependency 그런데 메이븐 의존성 등 별도로 의존성을 넣고 개발 편의상 모듈을 추가했다면 좀 생각해볼 필요가 있다. 모듈간 의존성과 메이븐 의존성을 합집합으로 의존성을 가지게 되어 삭제한게 남아있거나 추가한게 당장 안보일 수 있다. 그래서 인텔리제이에서는 다른 프로젝트는 별도의 창으로 띄우는..
3.4 버전부터는 자동으로 매핑을 사용할 수 있다. 그 전버전은 타입핸드러를 직접 구현하여 사용해야한다. 구현하는 방법은 다른 사이트 참조. 단, 3.4.4 이하는 mybatis-typehandlers-jsr310 의존성을 추가해줘야 한다. 3.4.5 버전 이후는 포함되어 있다. mybatis.org/mybatis-3/ko/configuration.html#typeHandlers MyBatis – 마이바티스 3 | 매퍼 설정 매퍼 설정 마이바티스 XML 설정파일은 다양한 설정과 프로퍼티를 가진다. 문서의 구조는 다음과 같다.: configuration properties 이 설정은 외부에 옮길 수 있다. 자바 프로퍼티 파일 인스턴스에 설정할 mybatis.org github.com/mybatis/myba..
의존성 넣기 org.apache.maven.plugins maven-source-plugin 3.2.0 maven-plugin 플러그인 넣기 org.apache.maven.plugins maven-source-plugin attach-sources jar 실행 mvn package maven.apache.org/plugin-developers/cookbook/attach-source-javadoc-artifacts.html Maven – Cookbook - How to attach source and javadoc artifacts maven.apache.org
1. 각 브라우저 주소창에 하기와 같이 입력 - 엣지 : edge://flags/#same-site-by-default-cookies - 크롬 : chrome://flags/#same-site-by-default-cookies 2. SameSite by default cookies 를 Default -> Disabled 로 변경
프로젝트 소스 파일이 workspace 안에 있다면 이클립스 프로젝트가 아니어도 쉽게 할 수 있다. 만약, 외부에 있는 프로젝트가 이클립스 프로젝트가 아닌데 Import를 하고 싶을 때는? 일단 workspace 안에서 외부에 있는 프로젝트 이름과 똑같은 이름으로 빈 프로젝트를 만든다. 빈 프로젝트를 만들면 .settings 디렉토리, .classpath, .project 파일이 생기는데 .project 파일만 외부에 있는 프로젝트에 복사해서 넣는다. workspace 안에 있는 프로젝트는 지운다. 그다음 import -> General/Existing Projects into Workspace 에서 실제로 있는 프로젝트를 넣고 options에 copy projects into workspace가 체크 ..
도큐먼트에 링크 넣기 {@link $code$}
전반적인 처리 절차 central.sonatype.org/pages/ossrh-guide.html#deployment OSSRH Guide OSSRH Guide Introduction Sonatype OSSRH (OSS Repository Hosting) uses Sonatype Nexus Repository Manager to provide repository hosting service for open source project binaries - be sure to review the full terms of service. OSSRH uses the Maven repository fo central.sonatype.org Gradle로 배포 방법 상세 central.sonatype.org/page..
java.lang.reflect.Type Type은 Java 프로그래밍 언어의 모든 Type에 대한 공통 수퍼 인터페이스입니다. 여기에는 Raw types, Parameterized types, Array types, Type variables, Primitive types이 포함됩니다. GenericArrayType ParameterizedType WildcardType TypeVariable Class
CheckStyle로 자바 코드의 스타일을 강제할 수 있다. 하지만 test 코드는 이 강제에서 좀 벗어나게 할 수 있는데 그걸 구현할 수 있는 모듈이 SuppressionFilter이다. checkStyle.xml 설정 파일에서 Checker 모듈 바로 밑에 모듈을 추가한다. config_loc 은 기본값으로 프로젝트 루트 기준으로 config/checkstyle 이 된다. 상대 경로로 지정이 안되니 이런 변수값을 활용해서 지정하는 수밖에 없다. checkStyle-suppressions.xml 파일에 무시할 파일의 패턴과 어떤 Check를 그냥 통과시킬지 정의하면 된다. 위 xml은 src/text 밑에 있는 모든 java 파일들에 대해서 JavadocPackage, FileLength, Missin..
wildfly는 VFS 를 사용한다. getClass().getResource() 를 하면 url을 가져오지만 실제로 존재하는 경로가 아니기 때문에 그 경로로 파일을 가져온다던지 하는 것은 안된다. getClass().getResourceAsStream() 메소드로 스트림을 바로 가져오던지 해야한다. 이렇기 때문에 클래스 패스 리소스 안에 어떤 파일들이 있는지 파일 목록을 가져오는데 문제가 있다. jboss에서 제공하는 라이브러리를 활용해서 처리해야한다.
게이트웨이는 시퀀스 흐름이 프로세스 내에서 모이고 흩어지는 방식을 제어하는데 사용. 다른 액티비티와 마찬가지로 토큰을 소비하고 토큰 추가 만들 수 있다. 모든 비즈니스 프로세스 흐름을 정의하는데 결정, 분기, 모이기, 복사, 연결 등에 사용할 수 있음. 게이트웨이는 발산 및 수렴을 제어하는데 이 말은 여러 인풋, 여러 아웃풋을 가질 수 있다는 의미임. Exclusive Gateway 한 곳만 선택 Inclusive Gateway 모든 흐름이 평가되고 참인 곳으로 모두 토큰을 보냄 병렬로 흩어진 흐름을 모으는데도 사용. 토큰이 게이트웨이에 도착하면 다른 흐름에서 오는 토큰을 기다릴 수 있음 Parallel Gateway 흐름에 대한 평가를 하지 않고 모든 흐름으로 토큰을 보냄 Complex Gateway ..
오브젝트는 instanceof 로 간단하게 여부를 알 수 있다. 클래스끼리 관계를 알고 싶을 때는 isAssignableFrom 메소드를 이용하자. 예를 들어 A 인터페이스를 구현한 AA 클래스가 있다면 AA 클래스가 A 인터페이스의 서브타입인지 확인 하고자 할 때 A.class.isAssignableFrom(AA.class) 하면 됨
MSC000001: Failed to start service jboss.module.service. Spring 4 버전으로 다운그레이드 필요
Spring MVC를 사용하고 보안을 위해 스프링 시큐리트를 도입했다면 볼 수 있는 예외 스프링 시큐리티의 HttpSecurity 설정 중 matcher로 MvcRequestMatcher를 사용하면 발생한다. http.authorizeRequests( authorize -> authorize .mvcMatchers("/api/").permitAll() .mvcMatchers("/hello").permitAll() .mvcMatchers("/admin").authenticated() ) No bean named 'A Bean named mvcHandlerMappingIntrospector of type org.springframework.web.servlet.handler.HandlerMappingIntr..
A 테스트 클래스에서는 @ContextConfiguration(classes = {AppConfig.class}) 형태로 컨택스트를 가져오고 B 테스트 클래스에서는 @ContextConfiguration(/applicationContext.xml 형태로 컨택스트를 가져오도록 설정했을 때, A와 B클래스 테스트 실행 순서에 따라서 AppConfig 클래스 설정정보를 먼저 로드하거나 applicationContext.xml 의 설정정보를 로드하게 된다. 문제는 두 설정 정보가 똑같다면 상관없지만 다르다면 A또는 B테스트에서 설정이 정확하게 세팅이 안된다. 왜냐하면 컨텍스트 두개를 동시에 불러서 테스트 컨텍스트에 올리지 않기 때문에다. 먼저 올라온 놈이 먼저 세팅되고 하나는 무시된다. 이 문제를 해결하기 위해..
- push 전 git commit --amend git rebase -i HEAD~2 해서 reword - push 후 * base repository option git config receive.denyNonFastForwards false * push 취소 git push -f origin HEAD^:dev -- 누군가 받았을 때 로컬에서 커밋 수정 후 git push -f 이거 했을 때 ! [remote rejected] dev -> dev (non-fast-forward) 에러나면 강제 push 권한 있는지 확인 받은 사람한테 fetch 후 reset --hard 로 변경된 커밋으로 이동하라고 알려야 함 -- 안 받았을 때 로컬에서 커밋 수정 후 git push -f