MapleStory Cookie With Halo

☕ JAVA 129

[JAVA]HttpServlet 이용해 회원관리 웹 애플리케이션 만들기

기본 환경 구성 스프링부트 만들기2025.02.27 - [☁ Network/🌏 HTTP] - [HTTP]HttpServlet 사용해보기 환경설정부터 폴더프로젝트 생성시 만들어진 기본클래스에  @ServletComponentScan  을 추가한다.domainRepository💡 동시성 문제가 고려되어 있지 않음, 실무에서는 ConcurrentHashMap, AtomicLong 사용 고려Domain 코드더보기package hello.servlet.domain.member;import lombok.Getter;import lombok.Setter;@Getter @Setterpublic class Member { private Long id; private String username; pr..

[JAVA]싱글톤 방식의 주의점

싱글톤 방식의 주의점  여러 클라이언트가 하나의 같은 객체 인스턴스를 공유하기 때문에, 싱글톤 객체는 상태를 유지stateful 하게 설계하면 안된다.무상태 stateless 로 설계해야한다.특정 클라이언트에 의존적 필드가 있으면 안된다.특정 클라이언트가 값을 변경할 수 있는 필드가 있으면 안된다.가급적 읽기만 가능해야 한다.필드 대신 자바에서 공유되지 않는 지역변수, 파라미터, ThreadLocal 등을 사용해야 한다.스프링 빈의 필드에 공유 값을 설정하면 큰 장애가 발생할 수 있다.(실무에서는 이러한 문제가 발생하면 원인을 찾기 힘들다)  ※ 참조 : https://www.inflearn.com/roadmaps/373

[JAVA]Singleton 싱글톤 패턴

웹 애플리케이션 & 싱글톤 패턴  스프링은 기업용 웹 어플리케이션으로 제일 많이 사용된다.동시에 많은 사용자가 요청을 보내면 메모리 낭비가 심하다.해결방안 : 해당 객체가 1개만 생성되고, 공유하도록 설계한다 → 싱글톤 패턴  싱글톤 패턴Singletone pattern: 클래스의 인스턴스가 딱 1개만 생성.  static 영역에 객체를 딱 1개만 생성.public으로 열어서 객체 인스턴스가 필요하면 이 static 메서드를 통해서만 조회하도록 허용.생성자를 private로 선언해서 외부에서 new 키워드를 사용한 객체 생성을 못하게 막는다.  💡 스프링 컨테이너에 객체가 Bean으로 등록될 때 자동으로 싱글톤 패턴으로 만들어 준다. ※ 참조 : https://www.inflearn.com/roadma..

IoC, ID, 그리고 컨테이너(Assembler)

IoCInversion of Control제어의 역전 interface와 같은 추상 클래스의 여러 구현 객체 중 어떤 것을 사용할 지 AppConfig에게 맡기는 것을 말한다.AppConfig가 제어를 맡게 되는데, 이를 제어의 역전이라 한다.  💡 프레임워크 vs 라이브러리@어노테이션을 사용하면 프레임워크는 이것을 제어해준다.반면에 작성한 코드가 클래스를 import하는 식으로 직접 제어한다면 라이브러리이다.  DIDenpendency Injection의존관계 주입 의존관계Denpendency는 정적인 클래스 의존관계와 실행 시점에 결정되는 동적인 객체(인스턴스) 의존관계 둘을 분리해서 생각해야 한다.정적인 클래스 의존관계→ 실행하지 않고도 의존관계를 알 수 있다. (클래스 다이어그램)동적인 의존관계..

[JAVA]SOLID란? 객체지향 설계원칙

SOLID객체지향 설계원칙  SRP Single Responsibility Principle단일 책임 원칙한 클래스는 하나의 책임만 가져야 한다.클래스와 메서드를 잘 분리해 한 메서드를 고치면 다른 클래스를 고칠 필요가 없어야 한다.변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것. OCP Open/Closed Priciple개방-폐쇄 원칙소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀있어야 한다.example) 인터페이스와 구현클래스LSP Liskov Substitution Principle리스코프 치환 원칙하위 클래스는 상위클래스의 의도에 맞게 기능을 구현해야 한다.example) 자동차 인터페이스의 엑셀은 앞으로 가라는 기능을 구현해야 한다. 뒤로 가게 구현된다면 LSP원칙을 위..

[JAVA]view ↔ java ↔ DB 연결 정리

위 화살표 위에 있는 기술들 없이는 각 부문은 연결될 수 없습니다. 스프링이 나오기 전톰캣을 컴퓨터에 설치하고java servlet을 이용하는 jsp나 php를 이용해 화면↔java를 연결했습니다.(※jsp나 php 같이 html을 서버에서 프로그래밍해서 동적으로 바꾸는 것을 템플릿 엔진이라 합니다.)java↔DB의 연결은 JDBC 이후 MyBatis를 이용해 연결했었습니다.스프링 프레임워크Denpendency라는 곳에 많은 기술들을 추가해서 사용할 수 있게되었다.이 추가된 기술들의 버전관리와 빌드 등을 도와주는 게 바로 Maven.스프링 부트좀 더 단순화되고 더 많은 것이 내장된 것이 바로 스프링 부트이다.※ 현재 JDBC, JSP 등이 많이 쓰이지 않는 건 이런 연결 기술들을 내장embed한 새로운 ..

[JAVA]JDBC란? 사용법까지 간략 정리

JDBC란?Java DataBase Connectivity DB에 접속할 수 있도록하는 자바API.각 데이터베이스마다 JDBC를 연결해주는 Driver가 따로 있기 때문에 각 DB에 맞는 JDBC Driver를 다운 받아 적용한다. (example. ojabc.jar)※ 현재는 잘 쓰이지 않지만, 워낙 많이 사용되었기에 아직도 남아있는 JDBC코드가 많습니다. 기본기라 생각되어 간단히 정리해 봅니다.💡 시작 전 DB driver를 lib폴더에 담아주어야 합니다.2025.01.01 - [💾 Data Base/⭕ Oracle] - [Oracle]ojdbc8.jar 위치. (+프로젝트 내 폴더 위치)  간단 실습  Class.forName("oracle.jdbc.driver.OracleDriver");→ ..

[JAVA][Stream]그룹화와 분할 partitioningBy() & groupingBy()

2024.12.18 - [☕ 자바 JAVA/☕ 클래스와 함수 Class & Method] - [JAVA][Stream]collect()와 Collectors partitioningBy() 와 groupingBy()  스트림을 분할하는 메서드는 두가지가 있습니다.Collectors.partitioningBy() : 스트림을 2분할한다.Collectors.groupingBy() : 스트림을 n분할한다.  Collectors.partitioningBy(): 스트림을 2분할한다. 1. 반환타입이 List인 partitioningBy(기준) 🌟 partitioningBy(매개변수)는 반드시 boolean이 반환되어야 한다. 더보기  2. 반환타입을 지정할 경우 partitioningBy(기준, 지정한 반환타입)..

[JAVA][Stream]collect()와 Collectors

💡 reduce()와 collect()의 차이2024.12.17 - [☕ 자바 JAVA/☕ 클래스와 함수 Class & Method] - [JAVA][Stream]최종 연산전체에 대한 연산을 할 때에는 reduce()사용하고, collect()는 그룹별로 연산할 수 있다.  collect( Collectors.메서드 ): Collector를 매개변수로하는스트림의 최종연산 메서드.  💡 Collector는 수집(collect)에 필요한 메서드를 정의해 놓은 인터페이스이다.Stream의 요소 T를 A에 누적한 다음 R로 반환한다.💡 Collectors클래스는 다양한 기능의 Collector를 구현하여 메서드로 사용할 수 있다. collect()는 매개변수로 (Collector)를 구현해 사용해야 한다는..

반응형