본문 바로가기

Spring24

spring의 주입을 통한 빈 저장 방식 아래 처럼 스프링은 저장된 객체를 타입을 보고 찾아서 주입해준다이것을 의존성 주입(Dependency Injection, DI)라고 하며 스프링의 핵심 기술 중 하나이다. // 스프링 컨테이너에 PacmanGame 타입으로 만든 객체를 저장 @Bean public GamingConsole game() { var game = new PacmanGame(); return game; } // 스프링에서 GamingConsole로 저장된 객체를 찾아서 주입해줌 @Bean public GameRunner gameRunner(GamingConsole game) { var gameRunner = new GameRunner(game); return gameRunner; } 2024. 9. 9.
2. spring을 통한 느슨한 결합 -1 앞에서 배운  - 강한 결합 구현체를 직접 넣었기 때문에 이후에 변경시  다른 구현체로 객체를 생성해야함 강하게 결합되어 있음- 약한 결합 인터페이스를 구현하여 결합을 느슨하게 할 수있음 이후에 스프링을 통해서 느슨한 연결을 하는 방법에 대해서 알아보자스프링 1단계 약한 결합- 빈을 생성하여 느슨하게 결합 - @configuration을 통해서 환경을 설정할 수 있음     - 빈을 통해 AnnotationConfigApplicationContext(스프링 컨테이너)에 저장 - - @configuration에 빈으로 저장된 것을 사용함- Bean 저장 방식 1. 직접 반환단순한 데이터나 값 객체를 반환할 때 사용합니다. @Bean public String name() { return "Ranga"; } .. 2024. 9. 9.
SOLID 원칙 SOLID 원칙 5가지1. SRP(Single Responsibility Principle): 단일 책임 원칙2. OCP(Open Closed Priciple): 개방 폐쇄 원칙3. LSP(Listov Substitution Priciple): 리스코프 치환 원칙4. ISP(Interface Segregation Principle): 인터페이스 분리 원칙5. DIP(Dependency Inversion Principle): 의존 역전 원칙1.단일 책임 원칙(SRP)-Single Responsibility Principle한 클래스는 하나의 책임만 가져야 한다하나의 책임이라는 것은 모호하다클 수있고, 작을 수있다.문맥과 상황에 따라 다르다중요한 기준은 변경, 변경이 있을 때 파급 효과가 적으면 단일 책임 .. 2024. 9. 8.
1. 강한 결합과 느슨한 결합(인터페이스) ❑ 강한 결합(Tight Copuling)Class DiagramCode ExampleGasolineEngine 참조public class Car {    private GasolineEngine gasolineEngine = new GasolineEngine();        public void ride() {        gasolineEngine.useOil();        ...    }}public class GasolineEngine {    public void useOil() {}}ElectricMotor 참조public class Car {    private ElectricMotor electricMotor = new ElectricMotor();        public void .. 2024. 9. 1.
Spring boot 버전 차이 Snapshot아직은 안정화 되지 않은 데일리 빌드버전을 뜻합니다. 따라서 최신 버전일 수도 있지요.​GA (General Availability)정식 릴리즈 버전입니다. 가장 안정적인 버전이죠.상업성 개발을 할때는 안전하게 릴리즈 버전만을 사용하는게 당연히 좋겠죠.메이븐 리포지토리에서는 GA버전만 maven 중앙저장소에 올라가고 RC, M등은 안올라 간다고 하네요!​M (Milestone)팀이나 프로젝트마다 정해진 주기마다 배포하는 버전입니다. M2라고 되어있으면 프로젝트 ‘마일스톤 2번째것’이라는 뜻입니다.주요 기능이 구현될 때마다 릴리즈하고 개발자들에게 피드백을 받는 버전이라고 합니다.​RC (Release Candidate)milestone에서 좀 더 정리를 잘 해서 내놓는 버전.정식 릴리즈 버전.. 2024. 9. 1.
더티 체킹으로 업데이트를 해야하는 이유 productrepository.save(productDTO.toEntity()) 방식으로 업데이트를 하려고 하였으나, product가 저장될때 id값이 자동으로 올라가게 설정을 해두어서 이렇게 업데이트시 업데이트가 아니고 새로운 id값을 가진 값이 DB에 저장되어진다. 그래서 값을 불러오려고 할때 id 값이 아닌 다른 값으로 찾아오다 보니 유일한 값이 아니라 2개의 값이 확인된다는 에러가 발생함. 더티체킹으로 foundProduct.setImg(productDTO.getImg())를 해서 값만 변경해서 업데이트해서 문제 해결함 더티 체킹은 @Transactional이 걸려있는 문장 안에서만 가능하다. 이전에는 Id를 값을 생각하지 못하게 코드를 짜서 DB에 findByName으로 했을 경우 2개의 값이.. 2023. 12. 7.