전체 글 146

(3) 스프링 컨테이너와 빈 조회

스프링 컨테이너 스프링 컨테이너의 종류 BeanFactory 스프링 컨테이너 최상의 인터페이스다. 스프링 빈을 관리, 조회하는 역할을 담당한다. getBean()을 비롯하여 다수의 기능을 제공한다. ApplicationContext BeanFactory를 상속받는 인터페이스다. 국제화기능, 환경변수, 어플리케이션 이벤트 등 다양한 추가 기능을 제공한다. BeanFactory를 직접 사용할 일은 거의 없다. 부가기능이 포함된 ApplicationContext를 사용한다. BeanFactory나 ApplicationContext를 스프링 컨테이너라 한다 AnnotationConfigApplicationContext : ApplicationContext의 구현체다. 생성자 함수에 @Configuration 클..

공부/springboot 2023.05.10

(2) 스프링을 활용한 DI

앞서 보았던 순수 자바코드만을 활용한 DI는 한눈에 의존관계를 파악하기 힘들었다. 스프링은 이러한 문제를 해결하기 위해 Bean 컨테이너를 제공한다. Bean이란 스프링에서 관리해주는 객체를 의미한다. 만약 어떤 객체가 빈으로 등록되어 있다면, 그 객체를 주입 받을때 스프링 컨테이너에서 자동으로 해주기때문에 편리하다. 먼저 주입 객체들을빈으로 등록하자. # Config @Configuration public class Config { @Bean public Alphabet alphabet(){ return new B(); } } @Configuration : 스프링 설정 클래스라는 것을 의미한다. 빈을 수동으로 등록해줄수 있다. @Bean : 메서드의 반환 객체를 빈으로 등록한다. 빈 이름은 메서드 이름..

공부/springboot 2023.05.10

(1) 스프링 사용하지 않고 OCP, DIP 지키기

아래의 코드는 Alphabet 이라는 인터페이스와 그를 상속받는 A, B의 클래스다. 여기서 className 이라는 메서드는 각각 자신의 클래스 이름 A, B를 출력하게 된다. # 인터페이스 public interface Alphabet { void className(); } # 구현체 A public class A implements Alphabet{ @Override public void className() { System.out.println("A"); } } # 구현체 B public class B implements Alphabet{ @Override public void className() { System.out.println("B"); } } 이때 인터페이스 Alphabet을 참조하면서..

공부/springboot 2023.05.10

좋은 객체지향이란?

객체지향이란? 현실 세계에서 객체란 물질적으로 존재하는 어떤 사물이나 관념을 의미하나, 코드에서 객체는 메모리에 할당된 클래스(인스턴스) 를 의미한다. 따라서 객체지향적이라는 의미는, 클래스가 하나의 객체, 즉, 개념을 구성한다고 생각하면 편하다. 예를 들어보자. 자동차라는 객체는 어떤 차종 하나를 가르키지 않는다. 네 바퀴가 달리고 사람이나 물건을 실을수 있으며 엔진으로 구동되는 이동수단이라는 개념 그 자체를 의미한다. 자동차의 개념 1. 네바퀴 -- 속성 2. 물건이나 사람을 운송 -- 기능 3. 엔진으로 구동 -- 속성 이를 코드로 치환하면 다음과 같이 된다. public class Car{ private int wheel = 4; // 바퀴의 갯수 private String powerSource ..

공부/springboot 2023.05.10

스프링이란?

스프링의 존재 의의 스프링은 객체지향적인 개발을 도와주기 위한 프레임워크다. 가장 기둥이 되는 아이디어는 비지니스 객체를 관리해주는 컨테이너가 존재하고, 그곳으로부터 객체를 받아온다는 것이다. 이는 EJB(엔터프라이즈 자바 빈즈) 에서 시작된 아이디어이나, 기존의 EJB 프레임워크는 너무 복잡하고 기술 종속적이었기에 객체지향적 개발에 큰 난관이 존재했다.이 문제를 해결하고자 나온것이 '스프링(Spring)로, EJB라는 기술적 겨울을 몰아내고 봄을 가져왔다는 의미에서 이름을 붙었다. 스프링부트란? 스프링을 편리하게 사용할수 있도록 지원하는 기술로 최근에는 대다수 기업들에서 이를 사용한다. 빌드 구성의 이점, 관례에 의한 간결한 설정, 라이브러리 자동 구성, 내장 웹서버 등의 편리함을 제공한다.

공부/springboot 2023.05.10

코틀린의 클래스

//ex21 fun main() { //2중 반복문 // ***** // ***** // ***** // ***** // ***** for( i in 0 until 5) { for( j in 0..4 ){ print("*") } println() } //연습문제 // readLine()함수로 n을 입력해서 3이 나오면, // * // *** // ***** // n을 입력해서 4가 나오면 // * // *** // ***** // ******* print("n을 입력하세요: ") // readLine() 함수로 입력받은 값을 정수형으로 변환합니다. val n = readLine()?.toInt() ?: 0 for (i in 1..n) { // 공백 출력 for (j in 1..n-i) { print(" ..

공부/kotlin 2023.03.21

코틀린: 코틀린 함수

코틀린의 함수 코틀린은 함수형언어와 객체지향언어를 합쳐놓은 언어이기에, 함수형 언어의 특징을 가진다. 형식 fun 함수명( 매개변수: 타입 ) : 반환값 타입 { return 반환값 } 한줄함수 함수의 본체 코드가 한줄일때는 중괄호와 return 문자를 생략 가능하다. fun 함수명 (매개변수 : 타입) : 반환값 타입 = 반환값 반환형 타입 생략(타입 추론) fun 함수명 (매개변수 : 타입) = 반환값 //ex10 fun main() { //함수의 간략한 표현 println( add(10, 20 ) ) println( add2(10, 20 ) ) println( add3(10, 20 ) ) } fun add(a: Int, b: Int): Int { return a + b } //함수의 본체코드가 한줄..

공부/kotlin 2023.03.20

코틀린: 코틀린의 기본 문법

코틀린 인텔리제이, 파이참과 같은 IDE 제작사 젯브레인스에서 개발한 언어로, 자바(JAVA)를 기반언어로 두고 있기 때문에 100% 호환이 가능하며 컴파일시 자바 바이트 파일(.class)이 생성된다. 주로 안드로이드 앱, 스프링부트 앱에서 사용되어 앱 전용 언어로 오해받곤 하지만, 실제로는 다양한 용도로 사용할수 있는 언어다. 특징 1. 타입 확장형언어이나, 원한다면 JS처럼 비확정형 언어처럼 사용할수 있다. (비확정형 언어의 경우, 변수의 타입이 코드의 중간에 바뀔 위험이 존재한다. (예: String -> Number)) 2. 오버헤드 없는 NULL 안정성을 제공한다. *오버헤드: 어떤 프로그램을 실행할 시, 다른 위치의 코드를 실행시켜야 할 때가 있다. 이 코드를 실행시키기 위해 시간, 메모리 ..

공부/kotlin 2023.03.19

스프링부트: 시큐리티(1)

시큐리티 인증과 인가를 쉽게 다룰수 있게 도와주는 스프링 디펜던시. 인증을 받고 권한을 부여하는 과정을 대신해준다. 덕분에 각종 공격 및 해킹에 대한 방어를 사용자가 일일이 구현하지 않아도 된다. 루트 매핑("/")이 자체적인 로그인 화면으로 변한다. 이후 어떤 url을 요청하건 간에 자체적인 로그인 화면만 나오게 되는데, 이때 id는 username, 비밀번호는 스프링부트를 실행할때 나오는 일련의 숫자가 된다. 만약 본인이 원하는 비밀번호와 아이디로 바꾸고 싶다면 apllication.property 를 통해 설정해줘야만 한다. # security # defallt username/password spring.security.user.name=user # id설정 spring.security.user...

공부/springboot 2023.02.20

프로젝트 근황 보고

최근 글을 쓰지 못했다. 새롭게 배운 내용이 없을 뿐더러, 너무 바빴기 때문이다. 약 2주 전부터 쇼핑몰을 만드는 간단한 프로젝트에 돌입했는데, 예상치 못한 문제가 터지면서 정신없이 바쁜 시간을 보내고 있다. 이제 관리자 페이지는 다 만들었고 슬슬 사용자 화면과 db를 연동시켜 실제 서비스가 가능한 수준으로 구현해보려고 한다. 코드를 짜면서 배운게 많지만 죄다 지엽적이고 테크닉적인 부분이라 따로 정리하기가 마땅치않다. 언제 시간이 나면 정리를 해 보겠다.

카테고리 없음 2023.02.20