moonscode 236

학습 // Spring // DI // 빈 스코프(Bean Scope)

업데이트 :: 2018.08.07 빈 스코프스코프 종류스코프 설정서로 다른 스코프의 빈 주입시 문제점룩업메소드 인젝션스코프트 프락시커스텀 스코프빈 스코프DI 컨테이너는 빈 간의 의존 관계를 관리할 뿐아니라 빈의 생존 기간도 관리빈의 생성방식을 빈 스코프라고 하며, 개발자는 빈 스코프를 직접 다루지 않아도 됨스코프 종류singletonDI 컨테이너를 기동할 때 빈 인스턴스가 하나 만들어지고, 이후에는 그 인스턴스를 공유하는 방식기본 스코프이므로 별도 스코프처리를 하지 않았다면 singleton으로 간주prototypeDI 컨테이너에 빈을 요청할 때마다 새로운 빈 인스턴스가 만들어짐멀티 스레드 환경에서 오동작이 발생하지 않아야 하는 (thread-safety) 빈이라면 prototype을 활용requestH..

Spring/DI & AOP 2018.08.07

학습 // Spring // DI // ComponentScan & Filter

업데이트 :: 2018.08.07 컴포넌트 스캔기본설정 컴포넌트 스캔필터적용 컴포넌트스캔할당가능한 타입활용 필터정규표현식 패턴으로 필터기본대상이나 특정대상을 빼고 필터컴포넌트 스캔클래스로더를 스캔하면서 특정 클래스를 찾아 DI 컨테이너에 등록하는 방법기본설정 컴포넌트 스캔@Component아래 세 경우에 해당하지 않는 컴포넌트 ( 유틸리티, 기타 지원 클래스 )에 붙는 애너테이션@ControllerMVC패턴에서 C, 컨트롤러 역할을 하는 컴포넌트에 붙이는 애너테이션클라이언트에서 오는 요청을 받고, 비즈니스 로직의 처리 결과를 응답으로 돌려보내는 기능실제 비즈니스 로직은 @Service 컴포넌트가 처리하도록 위임@Service비즈니스 로직(service)을 담당하는 컴포넌트에 붙이는 애너테이션컨트롤러에서 ..

Spring/DI & AOP 2018.08.07

학습 // Spring // DI // 오토와이어링 ( Autowiring )

업데이트 :: 2018.08.07 오토와이어링타입으로 오토와이어링이름으로 오토와이어링컬렉션이나 맵으로 오토와이어링오토와이어링자바기반 설저방식이나 XML기반 설정방식에서 명시적으로 Bean을 선언하는 것과 달리 DI 컨테이너에 빈을 자동으로 주입하는 방식타입으로 오토와이어링@Autowired 애너테이션은 타입으로 오토와이어링 하는 방식의존성주입이 반드시 성공한다는 가정DI 컨테이너 안에서 찾지 못하면 'NoSuchBeanDefinitionException' 에외발생'required' 속성을 false 처리하면 필수조건이 완화 ( java.util.Optional 속성도 가능 )required 사용@Component public class UserServiceImpl implements UserService..

Spring/DI & AOP 2018.08.07

학습 // Spring // DI // 의존성주입( Injection )

업데이트 :: 2018.08.07 의존성주입을 사용하는 이유?의존성주입 종류설정자 기반 ( Setter Injection )생성자 기반 ( Constructor Injection )필드 기반 ( Field Injection )의존성주입을 사용하는 이유?객체를 실제 코드흐름에 생성하는 것이 아닌 외부에 생성된 객체를 가져와 사용하는 방식클래스간의 결합도를 낮춰 재사용성을 높임의존성주입 종류설정자 기반 의존성 주입 방식생성자 기반 의존성 주입 방식필드 기반 의존성 주입 방식설정자 기반 ( Setter Injection )public class UserServiceImpl implements UserService { private UserRepository userRepository; private Passw..

Spring/DI & AOP 2018.08.07

학습 // Spring // DI // ApplicationContext & Bean

업데이트 :: 2018.08.07 ApplicationContext & BeanApplicationContext 가져오기Bean 가져오기AppConfigJava기반XML 기반Annotation 기반컴포넌트 스캔명시적 이름주기ApplicationContext & BeanApplicationContext & Bean을 설정하는 방법들자바기반 설정방식XML기반 설정방식Anotation기반 설정방식ApplicationContext 가져오기ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext context = new AnnotationConfigApplicationContext("..

Spring/DI & AOP 2018.08.07

Java // 구현 // Client Socket // NIO Blocking

- NIO Blocking으로 구현된 클라이언트 소켓 추상 클래스- "route()" 메소드를 재정의해서 사용해야 합니다.- Singleton 객체로 구현- Queue를 이용해서 다수의 데이터를 동시에 보내도 처리할 수 있도록 구현 public abstract class MySocket { /* Field */ private static MySocket instance; public SocketChannel socketChannel; public Charset charset = Charset.forName("UTF-8"); private Queue postQueue = new LinkedList(); // 전송할 데이터를 담아두는 Queue private int bufferSize; private boo..

Java/Java 구현 2018.08.06

Java // 개념 // byte array <=> char array <=> string // Converting(변환)

업데이트 :: 2018.08.06 01. byte array to string02. string to byte array03. string to char array01. byte array to string바이트단위의 패킷을 전송하고 싶을때byte[] bytes = new byte[]{ 1, 2 }; String data = new String(data, "UTF-8"); data는 2바이트의 크기를 가진 유니코드 스트링02. string to byte arrayString data = getRequest(); // 데이터를 수신했다가정 byte[] bytes = data.getBytes(); 유니코드를 다시 바이트배열(1바이트)로 변환해서 사용03. string to char arrayString da..

Java/Java 개념 2018.08.06

JavaScript // 개념 // ES6 // 심볼(Symbol)

업데이트 :: 2018.01.25 심볼(Symbol)심볼을 이용한 private심볼과 객체조사(열거) (object-inspection)심볼 registry심볼과 IE심볼(Symbol)심볼은 어떤 값과도 다릅니다.심볼은 항상 유일, 다른 어떤 심볼과도 일치하지 않습니다. (객체와 유사합니다.)var mySymbol = Symbol(); obj[mySymbol] = "ok!"; console.log(obj[mySymbol]); // ok! const RED = Symbol("The color of a sunset!") const ORANGE = Symbol("The color of a sunset!") console.log(RED === ORANGE) // false (모든 심볼은 유일한 값을 가집니다.)..