Adventure Time - Finn 3
본문 바로가기

분류 전체보기242

NoSuchBeanDefinitionException 제 2의 널포인트 익셉션 의존 주입이 되어있지 않아 발생한 애러이다 의존 주입을 통해 해결하였다 2024. 3. 8.
어노테이션으로 의존성 주입 과거 생성자,setter를 활용한 의존주입(DI) 변경 => @Component//new @Component("apple")//new id 이기 때문에 다른곳에있으면안됨 변경 => Q. 오토 와이어 에서 필요한 워치가 애플워치인지 어떻게 알았나? @Autowired는 "메모리의 자료형(타입)"을 인지하고 연결해주는 역할을 수행함 하지만 갤럭시도 사용하면 자료형을 인지하기때문에 같은 타입이 여러개면 안된다 - 모호성 이유 문제 해결방안 컴포넌트에 반드시 이름을 주는것 @Qualifier() -로 연결 워치가 여러개구나을 알수있다 2024. 3. 7.
뷰리졸버 셋업 오류 에러발생 뷰리졸버가 없어서 발생했다 추가 앞뒤로 url를 만들어주면 해결 2024. 3. 7.
.xml에 설정들이 많아진다면? .xml에 설정들이 많아진다면? 너무 무거워진다 실수가 발생할수도있다 -> 싱글톤 깨질 가능성있음 -> 개발자에게 부담이됨..ㅠㅠ -> .xml에 작은 에러라도 발생한다며느, 프로그램이 실행 xxx 불리한이유 개발자가 보기불편 가독성이 너무 않좋음 너무 중요한 파일이라서 ㄴ자주 건들이면 안된다 | 스프링에서 과도한 설정을 줄여주기위해 @(어노테이션)기능을 개발함 ^▽^// 현재 사용하는 스프링은 .XML+ @ 부트는 @ 위주로 실행 @은 개발자 가독성 증가 + .xml 로의 접근을 줄여줌 -> .java에 작성함 개발자가 보는 자바코드에 @을 걸어놓기 때문에 자바코드와 설정을 개발자가 한번에 확인할수있음 자바코드에만 접근하면 되니까 .xml 을 덜 열어봄(오류확률 낮아짐) 2024. 3. 6.
factory 연습 -의존성 설정 파일로 주입 결합도 포스팅때 사용했던 코드를 사용하여 연습 ---- 갤럭시 폰에 갤럭시 워치 주입해주시고 주입할때 생성자 주입해주세요 --- 아이폰에 애플워치 setter주입해주세요 package test; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.GenericXmlApplicationContext; public class User02 {//Client(브라우저) public static void main(String[] args) { //팩도리를 new //팩토리를 통해 LookUp: 객체를 호출 //호출된 객체를 사용 AbstractApplication.. 2024. 3. 5.
설정파일 .xml 스프링 클래스 패스 경로가 src/main/resources경로임 .xml생성 xml의 문서를 인코딩해주는 코드 현재 컨테이너 버전과 스키마 버전이 같아야한다 컨테이너가 스키마를 보고 웹에서 자원을 끌고옴 2024. 3. 4.
스프링 프레임워크 컨테이너 1. 톰캣: 서블릿 컨테이너, 웹서버, 내장되어 있음 servlet 클래스를 new 해줌 FrontController등 톰캣 web.xml 2. 스프링 컨테이너 : POJO 클래스를new 해줌 DAO, DTO,Action(Controller)등 코드 내에서 new 역할을 담당하는 컨테이너 스프링 applicationContext.xml 3. 루트(최상위) 컨테이너 : .jar(라이브러리)를 관리해줌 얘도 스프링 컨테이너라고 부름...ㅎㅎ;; 그래서 무슨 컨테이너인지 판단을 잘해야한다 외부 라이브러리다 면 얘 설정 관련 컨테이너 웬만하면 이 녀석을 말함 루트 pom.xml 회사내 자체 제작으로 더 많이 만들수도있음 컨테이너가 동작을 하려면 설정파일을 필요로합니다 .xml 개수로 컨테이너의 개수를 알 수 있.. 2024. 3. 3.
Spring 파일생성 create a project 로 프로젝트를 만든다 spring을 검색하면 2개가 나오는데 밑에 starter를 선택한다 maven 자바 기반의 spring 라이브러리 gradle ->boot방식 jar 자르 아카이브 war web group 프로젝트 징행하는 담당 파트 회사 package -> 이름도 group이름+ name Depandencies JDBC spring web 오라클과 MySQL 같이 넣으면 드라이버끼리 모호성 이슈발생 MySQL은 비어있어서 뺌 스프링 프레임 워크에서는 클릭하면 해당 라이브러리들을 알아서 주입해줌 다만 MySQL or 최신 라이브러리들은 개발자가 추가로 설정해야할 수도 있음 그리고 생성 생성중 건드리면 안됨 2024. 3. 2.
Spring DI 1) DI 란? Dependency Injection 의존 주입 개발자 -> Spring 컨테이너(Spring 프레임워크) 1. 객체를 생성 및 관리(호출시 해당 객체 메서드 수행) 2. 의존 주입 의존성이란? 어떤 메서드를 수행할때에 다른 객체를 미리 new해야하는 상황 1.생성자 주입(Constructor Injection) private AppleWatch appleWatch;//의존 관계 public IPhone() {//의존 주입 appleWatch=new AppleWatch(); } new를 없에야하기 때문에 외부에서 받아온다 public IPhone(AppleWatch appleWatch) {//의존 주입 생성자 주입 this.appleWatch=appleWatch; System.out.pr.. 2024. 3. 1.
Spring 설치 https://spring.io/ Spring | Home Cloud Your code, any cloud—we’ve got you covered. Connect and scale your services, whatever your platform. spring.io Projects -> Spring Tools 4 Spring Tools 4 for Eclipse 4.21.1-windows x86_64 다운 아무것도 건들이지 않고 resource로 가져오기 가져와서 더블클릭하면 -> 파일 생성 워크 스페이스 따로 파기 실행하기 경로지정하면 끝 2024. 2. 29.
스프링 에러 BeanCreationException pom.xml에 AspectJ 설정이 없어서 발생한 에러이다 아래에 추가해 해결하였다 하지만 실행해보면 적용이 되지 않는데 그럴땐 위 작업을 완료하면 적용이 완료된것을 볼수있다 2024. 2. 29.
Mysql table 생성 -자동증가 MySQL에서 만 지원해주는 문법 자동증가 2024. 2. 28.
Mysql 데이터베이스 생성 CREATE SCHEMA KIMDB; 로 데이타베이스를 생성한다 show databases;로 확인하여 생성이 되었는지 확인한다 생성된 db에 접근한다 2024. 2. 28.
new 가 없어 발생한 NullpointerException 누굴 먼저할지모름 그래서 new를 다 넣어둠 맴버번수을 생성자를 통해 만들지 않아서다 2024. 2. 28.
<bean> 이란? ★new를 대신해주는 태그 ★ 결합도가 낮아집니다! Phone phone =new Phone(); handler=new HandlerMapper(); mappings.put("/main.do", new MainAction()); >> new MainAction() 규칙 1. id 값은 중복허용 xxx 규칙 2. 을 통해 new 된 객체들은 Heap메모리 영역에 저장됨 +) 싱글톤을 알아서 해주는 것은 아님 class -> 정확한 경로로 적어야함 6. 싱글톤에 관련된 설명이 제각각일 수 있음 -> 잘 파악해서 정리할것 싱글톤을 알아서 해주는 것은 아님 교재에 "이 싱글톤을 유지해준다." 에러 x 권장 x=> 싱글톤이 유지되지 않음 한번 phone, phone2 객체를 생성했다면 다음에 다른곳에서 p.. 2024. 2. 26.
컨테이너 1. 컨테이너는 설정 파일을 필요로 합니다 .xml 서블릿 컨테이너(톰캣, 웹서버)=> web.xml 2. 스프링 컨테이너 역시 설정파일(.xml)을 필요로 합니다 applicationContext.xml 3. applicationContext.xml 설정파일의 루트엘리먼트 .xml의 구조 .xml 이기때문에 (태그)로 구성됨 루트 엘리먼트(최상위 태그) 각종 설정들이 로 작성 되어있음 4. 각종 설정들을 루트 엘리먼트 안에 (태그)로 작성 1) 2)... 2024. 2. 25.
결합도(Coupling) 결합도(Coupling)에 대하여...(day61) 결합도를 낮추기위한 다향한 개발자들의 노력이 있어왔습니다 1) 인터페이스를 활용하는 방법 => 객체가 변경되어도 메서드를 추가 변경하지 않아도 ㄱㅊ 2) 팩토리 패턴을 활용하는 방법 =>코드에 new가 있었는데, new 가 없어짐 코드에 new 가 없을수록 결합도가 낮은것!! package test; public class User {//Client(브라우저) public static void main(String[] args) { BeanFactory beanFactory=new BeanFactory(); Phone phone =(Phone)beanFactory.getBean(args[0]); phone.powerOn(); phone.call(); p.. 2024. 2. 21.
프레임워크란 프레임 워크를 활용했을때의 장점이 뭔가요? SpringMVC 이미 적용된 프로젝트를 하나 생성해줌 == 구현이 빨라짐 몰라도 쓸수 있다 == 개발자의 실력이 상향 평준화됨 일관성이 유지되기 쉬움 ★유지보수 용이 프레임워크 vs 라이브러리 ▶ 프레임워크 : 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대. 이 뼈대 위에서 개발자는 코드를 작성하여 어플리케이션을 개발함. 코드가 프레임워크에 의해 사용됨 ( IoC 개념 ) ex) Spring ▷ 라이브러리 : 특정 기능을 모아둔 코드, 함수들의 집합. 필요한 기능이 있을 때 라이브러리를 사용하여 코드를 작성 ex) 패키지·모듈, jQuery 2024. 2. 19.
Spring 경량 3) 경량이란 무엇인가요? 1. 다루는 객체가 가볍다. == POJO 2. 사용 메모리가 적다. == 싱글톤 패턴을 활용 2024. 2. 17.
Spring AOP AOP가 뭔가요? Aspect - Oriented Programming 관점 지향 프로그래밍 OOP(객체 지향 프로그래밍) xx지향 프로그래밍 1) 절차 : 순서대로 진행하는 방식 C언어 일의 처리순서가 가장 중요 알고리즘 성능 - 속도 2) 객체 : 모듈(클래스) 단위로 코드를 구성하는 방식 JAVA 설계, 객체가 중요 학생, 카드, 캐릭터, xxx기능 Action,... 성능 - 메모리(Heap) : 싱글톤, 팩토리,... ----개발팁... ctrl c,v를 하잖아요? 개선할 여지가 있다는 뜻~ ^^ 1)인터페이스 Action DAO류 인터페이스 제작할듯 2)내부로직이 유사한 경우 AOP를 적용해 볼 수 있는 타이밍 db엔 4가지가 있다 insert select 올바른 접근이가? 올바른 접근이가? .. 2024. 2. 16.
Spring IoC IoC가 뭔가요? : 코드에서 new를 제거하는 것 Inversion of Control 제어의 역행 제어를 중프까지 개발자가 담당함 HM Spring 컨테이너 POJO DTO, DAO, Action 제어 == 객체를 생성(및 관리)함 == new 코드에 new(개발자가 제허아는 것)가 없는 것이 좋은것! 컨테이너가 new를 해주는 것이 좋은것 C파트는 new라는 연산자를 사용xxx HM안의 new 코드들 => 스프링 컨테이너로 대신할 예정! =>POJO인데..? 가능한가? 가능 2024. 2. 15.
Spring Spring 프레임워크가 뭔가요? IoC와 AOP를 지원하는 프레임워크 :제어의 역행. 즉, new를 개발자가 하지않고 컨테이너가 수행하는 기능과 관점지향 프로그래밍. 즉, 공통로직을 별도의 클래스로 모듈화하여 올바른 시기에 호출하는 기능을 수행하는, 경량의 POJO를 다루는 컨테이너를 제공하는 프레임워크 낮은 결합도와 높은 응집도를 가지는 코드 2024. 2. 14.
새로고침 단축키 차단 $(document).keydown(function(event) { var key = event.keyCode || event.which; var targetTagName = event.target.tagName.toLowerCase(); // Backspace 키 누르면서 입력창이 아닌 경우에는 뒤로가기를 막습니다. if (key === 8 && targetTagName !== "input" && targetTagName !== "textarea") { event.preventDefault(); } // F5 키와 Ctrl+R 키를 누르면 새로고침을 막습니다. if (key === 116 || (event.ctrlKey && key === 82)) { event.preventDefault(); aler.. 2024. 2. 13.
세션스토리지로 필터 만들기 관리자 페이지에서 후원순과 최신순으로 가져온 데이터를 금액으로 필터링하여 출력해 보고자 한다 필터링 방법을 세션스토리지를 활용하여 제작해보았다 세션 스토리지 사용: sessionStorage.setItem('userInfoObj', JSON.stringify(userInfoObj)); 세션 스토리지 데이터 확인: const userInfoObj = JSON.parse(sessionStorage.getItem('userInfoObj')); sponsorListDate.js console.log("[로그] sponsorListDate.js"); $(document).ready(function(){ $("#btnDate").click(function(){ console.log("[로그] sponsorListD.. 2024. 2. 12.
유저 조회 RANKING 수정 V1 --유저 조회 SELECT M.MID, M.LOGIN_ID, M.MPW, M.NAME, M.EMAIL, M.ADDRESS, M.GENDER, M.AGE, M.GRADE, M.CELL_PHONE, NVL(SUM(S.AMOUNT), 0) AS TOTAL, RANK() OVER (ORDER BY NVL(SUM(S.AMOUNT), 0) DESC,MIN(S.REG_DATE)) AS RANKING FROM MEMBER M LEFT JOIN SUPPORT S ON M.LOGIN_ID = S.LOGIN_ID GROUP BY M.MID, M.LOGIN_ID, M.MPW, M.NAME, M.EMAIL, M.ADDRESS, M.GENDER, M.AGE, M.GRADE, M.CELL_PHONE; 문제점 : TOTAL이 .. 2024. 2. 11.
후원 SQL 변경 문제점 : 같은 금액이면 등수가 같게 나온다 같은 금액이면 REG_DATE 로 확인해서 먼저 등록한사람의 등수가 더 높게 만들기 ------v1-- SELECT NVL( S.LOGIN_ID,'탈퇴한 사용자') AS LOGIN_ID, SUM(S.AMOUNT) AS TOTAL, NVL( M.NAME,'탈퇴한 사용자')AS NAME, RANK() OVER (ORDER BY SUM(S.AMOUNT) DESC) AS RANKING FROM SUPPORT S LEFT OUTER JOIN MEMBER M ON S.LOGIN_ID = M.LOGIN_ID GROUP BY S.LOGIN_ID, M.NAME; 동일한 후원 금액을 가진 사용자 중에서 REG_DATE를 기준으로 먼저 등록한 사용자가 더 높은 등수를 갖도록 하려.. 2024. 2. 10.
TO_CHAR 함수 TO_CHAR 함수는 Oracle에서 숫자, 날짜 및 문자열 데이터를 문자열로 변환하는 데 사용됩니다. 이 함수는 다양한 형식의 데이터를 문자열로 변환할 수 있습니다. TO_CHAR(expression, format_mask) expression: 변환할 값입니다. format_mask: 문자열로 변환할 때 적용할 형식입니다. TO_CHAR 함수를 사용하면 날짜를 원하는 형식으로 변환하거나 숫자를 문자열로 변환할 수 있습니다. 예를 들어, 날짜를 'YYYY-MM-DD' 형식으로 표시하거나, 숫자를 특정 형식으로 변환할 수 있습니다. EX) SELECT M.MID, M.LOGIN_ID, M.MPW, M.NAME, M.EMAIL, M.ADDRESS, M.GENDER, M.AGE, M.GRADE, M.CELL.. 2024. 2. 9.
여러 INSERT 문을 한 번에 실행하기 여러 개의 INSERT 문을 한 번에 실행하려면 Oracle에서 제공하는 INSERT ALL 문을 사용할 수 있습니다. 이를 통해 여러 개의 행을 한 번에 삽입할 수 있습니다. 다음은 INSERT ALL 문을 사용하여 여러 개의 행을 한 번에 삽입하는 예시입니다. INSERT ALL INTO employees (employee_id, first_name, last_name, email) VALUES (101, 'John', 'Doe', 'john@example.com') INTO employees (employee_id, first_name, last_name, email) VALUES (102, 'Jane', 'Smith', 'jane@example.com') INTO employees (employe.. 2024. 2. 8.
DBeaver 단축키 일반 단축키 Ctrl + N (Cmd + N): 새 쿼리 탭 열기 Ctrl + Shift + N (Cmd + Shift + N): 새 파일 열기 Ctrl + S (Cmd + S): 현재 파일 저장 Ctrl + F (Cmd + F): 찾기 Ctrl + R (Cmd + R): 바꾸기 Ctrl + Z (Cmd + Z): 되돌리기 Ctrl + Y (Cmd + Y): 다시 실행 Ctrl + Shift + F (Cmd + Shift + F): 현재 파일 검색 쿼리 작성 단축키 Ctrl + Enter (Cmd + Enter): 쿼리 실행 Ctrl + Space (Cmd + Space): 코드 완성 Ctrl + / (Cmd + /): 주석 토글 탐색 단축키 Alt + Left (Cmd + [): 이전 탭으로 이동 Al.. 2024. 2. 7.
RANK 함수, DENSE_RANK 함수 RANK 함수 RANK 함수는 동일한 값에 대해 동일한 순위를 부여하고 그 다음 값에 대해 다음 순위를 부여합니다. 예를 들어, 1위, 2위, 2위, 4위와 같이 중복된 순위가 발생할 수 있습니다. 중복된 값이 있을 때는 그 다음 순위는 중복된 값의 개수만큼 건너뛰게 됩니다. DENSE_RANK 함수 DENSE_RANK 함수는 동일한 값에 대해 중복된 순위를 부여하지 않습니다. 즉, 중복된 값이 있더라도 순위는 중복되지 않습니다. 예를 들어, 1위, 2위, 2위, 3위와 같이 중복된 순위가 발생하지 않습니다. 중복된 값이 있더라도 그 다음 순위는 중복된 값의 개수와 상관없이 1씩 증가합니다. 따라서, RANK 함수는 순위 사이에 빈 공간이 생길 수 있지만, DENSE_RANK 함수는 그렇지 않습니다. 또.. 2024. 2. 6.