반응형

spring 24

태태개발일지 -Spring(토비 님)

오늘은 간단한 어너테이션의 기능들을 알아보겠다. @ConditionalOnSingleCandidate Spring container bean 구성정보에 하나의 클래스만 등록이 되어있다면 가져와서 사용하겠다는 뜻이다.예를 들면 @ConditionalOnSingleCandidate(DataSource.class) 아래와 같이 사용하고 DataSource.class가 하나만 있을 때 가져와서 사용한다는 뜻이다.   jdbcTemplate, jdbcTransactionManger는 가장 기본적인 jdbc 의존성이고 @Transactional 어노테이션을 사용할 수 있게 해준다. @EnableTransactionManagement  selecter를 통하여  proxy기반 , aspectj 기반의 구성정보를 가져..

Spring 2024.12.18

태태개발일지 - 어노테이션

어노테이션(@Annotation) 이번 주제는 간단하게 기억하기 위한 정리이다. 어노테이션을 만들 때는 아래와 같은 두가지 정보가 필요하다. 1. Target@Target은 Method, class, enum , interface등 어노테이션이 적용될 수 있는 type을 의미하는 것이고,@Target(ElementType.TYPE) 하면 모두 적용된다. 2.  Retention@Retention 애노테이션은 애노테이션의 라이프 사이클 즉, 애노테이션이 언제까지 살아 남아 있을지를 정하는 것이다. RetentionPolicy.SOURCE : 소스 코드(.java)까지 남아있는다.RetentionPolicy.CLASS : 클래스 파일(.class)까지 남아있는다.(=바이트 코드)RetentionPolicy...

Spring 2024.12.09

태태개발일지 - Spring(토비님)

Containerless  Containerless 지향적이란? 서블릿컨테이너와 관련된 번거롭고 복잡한 작업들, 그에대한 지식들을 상관하지않고, bean을 관리하는 것에만 초점을 맞춘 것이다.ex) xml, 서블릿 컨테이너 설치 @SpringBootApplication 없이? 동작하는 방법은? public static void main(String[] args){ new Tomcat().start();}-> 이렇게 사용하기에는 너무 복잡하다. public static void main(String[] args){ new TomcatServletWebServerFactory server = new TomcatServletWebServerFactory(); WebServer webServer = ..

Spring 2024.12.01

태태개발일지 - Spring 시작 (토비님) 기본 복귀하기

Spring 시작하기 @RestControllerpublic class HelloController{ @GetMapping("/hello") public String hello(String name){ return "Hello " + name; }} Test:localhost:8080/hello?name=Spring 으로 테스트가 가능하다. 테스팅 방법1. 웹 브라우저 개발자 도구2. curl3. HTTPie4. Postman5. JUnit Teset6. Another 웹어플리케이션의 흐름 1. web client가 web request를 web container가 componet를 찾아서 다시 return한다. *client와 container 사이에는 request와 resp..

Spring 2024.11.26

태태개발일지 - singleton pattern

싱글톤 패턴싱글톤 패턴이란 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. public class SingletonService { private static final SingletonService instance = new SingletonService(); public static SingletonService getInstance() { return instance; } private SingletonService() { }} 위의 코드와 같이 인스턴스를 하나 고정해서 생성한 후에 getInstance 메서드를 통해서 인스턴스를 사용한다. 싱글톤의 단점1.  의존성이 높아진다.2.  private 생성자 때문에 상속이 어렵다.3.  테스트하기가 힘들다. 싱글톤..

Spring 2024.11.08

태태개발일지 -Spring bean

Spring @Configuration스프링 컨테이너는 싱글톤 방식을 지원하게 해준다 -> 이거에 대한 자세한 설명은 IOC 컨테이너 글에서 다루겠다.그렇기에  java config class에서 @Configuration Annotation을 붙이지 않는다면 싱글톤을 지원해 주지 않는다. 스프링 컨테이너는 @Bean으로 등록되어있는 객체들을 관리하고, 이에 맞춰서 올바르게 의존성을 주입시켜 준다.그렇기에 @Configuration을 통해서 싱글톤을 보장하는 것이다.  의존성 주입 방법그렇기에 의존성을 주입해 주는 방법이 있다. 1. 생성자 주입 -> 가장 많이 사용하는 방식2. 필드 주입  -> final 사용을 할 수 없어 불변성 부족, 의존성 주입 테스트가 어렵다는 단점이 있다.3. setter 주..

Spring 2024.09.22

태태개발일지 - Spring?

Spring이 왜 위대한가? 이 부분에서는 기존에 항해 + 99 에서 배웠던 클린 레이어드 아키텍쳐를 사용했던 이유와 아주 유사하다.우선 가장 간략하게 설명하면 "객체지향 적으로 만들어 주기 때문" & "DIP와 OCP를 만족시켜 주기 때문" 이라고 설명을 할 수 있다. 이게 무슨소리인지 알아보자. 객체지향에서는 다형성이 굉장히 중요하다. 예를 들면 public class Animal{} 부모 클래스인 Animal이 있다.그리고 부모 클래스를 상속 받은 Dog와 Cat이 있다고 가정하자. public class Dog extends Animal {}public class Cat extends Animal {} public Use{ Animal animal = new Dog(); } 다음과 같이 Dog를 ..

Spring 2024.09.20

태태개발일지 - WebFlux

- WebFlux리액티브 프로그래밍은 비동기 및 이벤트 기반 애플리케이션을 개발하기 위한 패러다임으로, 주로 높은 확장성과 성능을 위해 사용됩니다 비동기 프로그램으로 MVC 방식과 성능 비교를 했을 때 확연하게 빨라지는 것을 JMeter를 통해 검증 완료했다. 하나를 반환할때는 Mono , 여러개 반환하려면 Flux를 반환하게 된다. Spring MVC와 방식은 비슷하고.public interface PostR2dbcRepository extends ReactiveCrudRepository, PostCustomR2dbcRepository{ Flux findByUserId(Long id);} Repostiory는 ReactiveCrudRepository를 상속하게 된다. @GetMapping("/..

카테고리 없음 2024.05.27

태태개발일지-spring cloud

Eureka사용법 server: port: 0 spring: application: name: user-service eureka: instance: instanceId: ${spring.cloud.client.hostname}:${spring.application.instance_id:${random.value}} client: registerWithEureka: true fetchRegistry: true serviceUrl: defaultZone: http://127.0.0.1:8761/eureka port를 0으로하고, 지정된 유레카의 url을 등록을 해놓으면 실제 유레카 사이트에서 어떤 서비스들이 켜져있는지 모니터링이 가능하게 된다. 설정의 의미는 port는 0으로 해놓으면 자동으로 포트를 설정..

Clude 2024.03.02

태태개발일지(EVENT)

서비스 로직을 처리할 때 하나의 로직 이후에 연계되어서 일어나는 로직을 실행할 때, 하나의 도메인 서비스에 다른 도메인 서비스를 넣어서 강력한 결합을 사용하고 있었다. ex) @Service @Slf4j @RequiredArgsConstructor public class PostService { private final PostRepository repository; private final MessageRepository messageRepository; } 이런 것을 해결하기 위해서 중간에 event publisher를 둠으로써 결합의 강도를 줄일 수 있는 event를 알게되었다. @Entity @Table(name = "post") @AllArgsConstructor @NoArgsConstructo..

Spring/JPA 2023.12.04
반응형