
회사에서 자바+스프링으로 프로젝트를 진행하다 이번에 코틀린+스프링으로 진행하게되어 코틀린 문법을 정리하고자한다. 1. 변수 변수 선언 키워드 val: 불변, 자바스크립트의 const, 자바의 final 키워드와 같다 var: 가변, 자바스크립트의 let, 자바에서 흔히들 쓰는 변수들과 같다 변수 선언 방법 val myName:String = "dongjun" "변수선언키워드 변수명:타입 = 값" 형식으로 변수를 선언한다. val myName = "dongjun" 위와 같이 타입을 생략하고 변수 선언을 할 수 있다. 코틀린 컴파일러가 값을 보고 타입을 추론한다. val myName //불가능 val myName:String //가능 myName = "dongjun" 단, 변수 선언과 할당을 동시에 하지 않..

yaml 파일을 활용하여 로컬, 개발, 배포 환경을 하나의 파일에 설정하고 관리해보자. application.yml spring: profiles: group: "local": common,testdb "dev": common,testdb "prod": common,proddb --- spring: config: activate: on-profile: testdb datasource: url: jdbc:postgresql://test-server/TDB username: dongjun password: 1234 --- spring: config: activate: on-profile: proddb datasource: url: jdbc:postgresql://prod-server/PDB username:..
1. 방화벽 포트 등록 [root@localhost /]# firewall-cmd --permanent --zone=public --add-port=8080/tcp success [root@localhost ~]# firewall-cmd --reload success 2. 방화벽 서비스 해제 [root@localhost /]# systemctl stop firewalld 3. 재부팅시 방화벽 실행하지 않기 [root@localhost /]# systemctl disable firewalld 4. 방화벽에 등록된 포트 리스트 가져오기 [root@localhost ~]# firewall-cmd --list-ports 21/tcp 5000/tcp 5001/tcp 8089/tcp

스프링은 프록시 방식의 AOP를 사용한다. 따라서 AOP를 적용하려면 항상 프록시를 통해서 대상객체(Target)를 호출해야 한다. 이렇게 해야 프록시에서 먼저 어드바이스를 호출하여 부가기능을 수행하고, 이후에 대상 객체를 호출하여 핵심기능을 수행한다. 만약 프록시를 거치지 않고 대상 객체를 직접 호출하게 되면 AOP가 적용되지 않고, 어드바이스도 호출되지 않는다. 결론은 AOP를 적용한 객체 중, 대상객체(Target) 안에서 내부 호출하는 경우는 어드바이스가 적용되지 않게된다. 코드로 한번보자! CallLogAspect @Slf4j @Aspect public class CallLogAspect { @Before("execution(* hello.aop.internalcall..*.*(..))") pu..

스프링프레임워크로 작업 시, JdbcTemplate, RabbitTemplate, RedisTemplate 등 xxxTemplate 형태를 많이 볼 수 있다. 이러한 형태를 템플릿 콜백 패턴이라 한다. GOF 패턴은 아니지만 GOF패턴의 전략 패턴과 아주 유사하다. 그럼 콜백이란 무엇일까? 콜백이란? 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 말한다. 쉽게 말해, callback은 코드가 호출(call)은 되는데 코드를 넘겨준 곳의 뒤(back)에서 실행된다는 뜻이다. 코드로 보면 더 쉽게 이해가 될 것이다! *참고: 아래 코드들은 테스트코드로 작성했다. Callback 인터페이스 public interface Callback { void call(); } 유연하게 변경가능한 콜백 로직을 전달할 ..