분류 전체보기 80

중첩 클래스

중첩 클래스 종류정적 중첩 클래스 : 정적 중첩 클래스는 바깥 클래스의 안에 있지만 바깥 클래스와 관계 없는 전혀 다른 클래스내부 클래스 : 바깥 클래스의 내부에 있으면서 바깥 클래스의 인스턴스에 소속되는 클래스내부 클래스 : 바깥 클래스의 인스턴스 멤버에 접근지역 클래스 : 내부 클래스 특징 + 지역 변수에 접근익명 클래스 : 지역 클래스 특징 + 클래스 이름이 없음 사용하는 이유논리적 그룹화 : 특정 클래스가 다른 클래스 안에서만 사용되는 경우(다른 곳에서 사용될 필요가 없을 때)캡슐화 : 중첩 클래스는 바깥 클래스의 private 멤버에 접근이 가능, 바깥 클래스와의 긴밀하게 연결하고 불필요한 public 삭제 정적 중첩 클래스public class NestedOuter { private st..

JAVA 2024.12.22

ApplicationContext(스프링 컨테이너)가 작동하는 과정

(1) 스프링 컨테이너는 @Configuration이 붙은 클래스를 설정(구성) 정보로 사용한다.외부 @Configuration으로 등록된 클래스에서 @Bean 으로 객체정보를 스프링 컨테이너에 등록.이렇게 등록된 객체를 스프링 빈이라고 한다.※ 스프링 빈은 @Bean 이 붙은 메서드의 이름을 스프링 빈의 이름으로 사용한다. (아래는 getDiscountPolicy가 스프링 빈 이름이 된다) @Bean(name="abc") 와 같이 셋팅할 수 있지만, 관례상 디폴트 네임을 사용한다.@Configuration // 구성 정보(설정 정보)public class AppConfig { @Bean // 스프링컨테이너에 등록 public static DiscountPolicy getDiscountPol..

SPRING 2024.12.22

IoC, DI와 컨테이너

IoC(Inversion of Control)프로그램의 제어 흐름을 사용자가 직접 제어하는 것이 아니라외부(프레임워크)에서 관리하는 것을 제어의 역전이라고 한다. DI를 가능하게 하는 기반 기술 『스프링이 제어의 역전을 구현하는 방법』스프링 프레임워크에서는 ApplicaionContext가 이 역할을 담당하며, @ComponentScan annotation은 지정된 패키지 내의 @Component annotation이 붙은 클래스를 자동으로 스캔하고 빈으로 등록한다. ※ 프레임워크 vs 라이브러리  " 프레임워크는 "프레임"이라는 말처럼 틀을 만들어두고 개발자로 하여금 사용 방법을 강제하는 것에 반해, 라이브러리는 개발자가 좀 더 자유롭게 사용할 수 있는 코드 조각 모음이다." -  프레임워크가 내가 작..

SPRING 2024.12.22

좋은 객체지향 프로그램과 스프링

스프링 : 여러가지 기술의 모음※ spring.io/projects 참고스프링 부트 : 아래 기술들을 편리하게 사용하게 해주는 것스프링 프레임워크 스프링 데이터 : 데이터베이스 CRUD를  편리하게 사용할 수 있도록 하는 기술 (JPA)스프링 세션 : 세션 기능을 편리하게스프링 시큐리티 : 보안스프링 Rest Docs : API문서와 테스트를 편하게 엮어서 문서화스프링 Batch스프링 Cloud 스프링 프레임 워크 핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타스프링 부트 : 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용 ㄴ 톰캣 같은 웹 서버를 내장 ㄴ 손쉬운 빌드 구성을 위한 starter 종속성 제공 : 라이브러리를 묶어서 종속 시킴 (하나만 땡기면 종속된 라이브러리..

SPRING 2024.12.16

char를 int로 변경

ASCII 테이블에서 값을 치환char 유형의 변수를 int 데이터 유형으로 변환하려면 대부분 ASCII 테이블에서 해당 값을 가져온다. typeCasting 사용char A = 'A';int x = A;System.out.println(x); // 65명시적 유형 캐스팅char charA = "a";Systme.out.println((int)charA); // 97  유니코드 인코딩 표준으로 값을 치환getNumericValue() 사용유형 캐스팅과 유사하게 작동하지만 ASCII 테이블을 따르는 대신 유니코드 인코딩 표준을 따른다.특이점이 있다면, 문자에 숫자 값이 없으면 -1을 반환한다.char char1 = '1';char char2 = 'A';char char3 = '*';System.out.pr..

알고리즘 2024.12.11

[ajax] 키:값 배열 객체에 담고 배열로 순환 사용

서버 -> 클라이언트(JSP)'키 : 값' 형태인 JSON을 직관적이게 배열에 담으려면 컨트롤러에서 List> [쿼리 결과]  (1) Back 결과를 객체에 담아 배열에 담기let objArr =new Array; // 배열 선언$.ajax({ url : "/mbti", method : "post" }).done(function(result) { // Json 객체를 JS 객체에 담기 $(result).each(function(index, item) { let one = { no : item.no, name : item.name, mbti : item.mbti, }; ..

SPRING 2024.12.11

@SpringBootApplication 역할 나누기

@SpringBootApplication 역할 나누기□ @SpringBootApplication 역할 클래스를 두개 이상으로 쪼갤 수 있다(단, main 메서드는 쪼개서 사용할 수 없음)main 메서드 외 역할 = @SpringBootApplication그러므로 메인기능을 하는 클래스와 ComponentScan 역할만 할 수 있음 § 컴포넌트 스캔 기능과 메인메서드 기능을 나눈 모습   ※ 참고로 DI대상 객체의 생명주기 (디자인)을 @SpringBootApplication 클래스에서 설정할 수 있다.@SpringBootApplication@ComponentScan(basePackages = "com.example.ex1")public class Ex1Application2 { A target1; @B..

SPRING 2024.12.10

[Rest API]퍼머링크 형식와 일반적인 URL 형식

일반적인 URL 형식Permanent Link 형태( 퍼머링크형태 ) URL 모양 http://localhost/countryList?currentPage=10 http://localhost/countryList/1 (요청값이 1개일때)http://localhost/countryList/1/2/3 (요청값이 3개일때)파라미터값 요청방식 @RequestParam @PathVariable매핑@GetMapping("/countryList1")@GetMapping("/countryList2/{currentPage}")특징요청값 부분과 URL이 명확히 분리되고, 파라미터를 옵션으로 관리가 가능하다.요청주소가 변수값이 들어오는 ?부분 전 까지이다.클라이언트에게 호출 인터페이스를 편하게 보여주기 위함요청주소가 변수..

SPRING 2024.12.10

@Scheduled / @Validation / View Mapping 방법

@Scheduled 스케쥴링 코드  ex - 회원탈퇴 후 6개월동안 개인정보를 가지고있다가 기간이 지나면 자동삭제특정 시점에 자동으로 메서드가 실행되는 기능이 필요할 때 @Scheduled와 @inableScheduling 애노테이션을 사용하면 된다. (예제는 보통 쿼리 실행을 할 때 사용하므로 @Service 선언을 하였음) package com.example.ex1;import org.springframework.scheduling.annotation.Scheduled;import org.springframework.stereotype.Service;@Servicepublic class MySchedule { @Scheduled(cron = "0 0 7 1 * *")// 매달 1일날 오전 7시에 해당..

SPRING 2024.12.10