SpEL ( Spring Framework Expression Language )
·
Framework/SPRING FRAMEWORK
https://docs.spring.io/spring-framework/docs/5.2.25.RELEASE/spring-framework-reference/core.html#expressions-beandef Core Technologies In the preceding scenario, using @Autowired works well and provides the desired modularity, but determining exactly where the autowired bean definitions are declared is still somewhat ambiguous. For example, as a developer looking at ServiceConfig, how do docs.sp..
@Value - 리소스 번들
·
Framework/SPRING FRAMEWORK
✅ com/config/application.properties ✅ 오른쪽버튼 클릭 -> properties -> UTF-8 로 변경해준다. ✅ user.xml 작성한다. ✅ Cat.java @Value(value="${cat.username}") @Value(value="${cat.age}") ✅ user.xml 한글이 깨지기 때문에 추가로 작성한다. 결과
@Value
·
Framework/SPRING FRAMEWORK
특정 값을 주입해야 되는 용도이다. 대표적인 용도는 자바코드 외부의 리소스나 환경정보 설정값을 사용하는 경우이다. 문법: @Value(value=”값”) String username; 리소스번들에서 값을 가져와서 @Value에 설정하는 작업이 일반적임 jdbc.properties 파일 jdbc.userid=aaa 빈 파일 @Value(value=”${jdbc.userid}”) String userid; user.xml 파일 💻 @Value로 값을 저장
@Resource
·
Framework/SPRING FRAMEWORK
byName 이용 javax.annotation.Resource ( 스프링 라이브러리가 아님 ) 기능: 빈의 타입(type)이 아닌 빈의 이름(name, id)으로 자동으로 주입된다. @Autowired @Qualifier(value=”id값”) 와 동일 문법: @Resource(name = “cat2”) // id=”cat2” 인 빈이 주입된다. Cat cat; ✅ Cat.java ✅ Person.java ✅ user.xml ✅ TestMain.java ✅ @Resource(name = “cat1”) 결과
@Autowired - NoSuchBeanDefinitionException
·
Framework/SPRING FRAMEWORK
💻 빈 없는 경우 => NoSuchBeanDefinitionException 주입해야되는 빈은 반드시 존재해야 한다. 없으면 NoSuchBeanDefinitionException 발생된다. 비활성화 가능하다. @Autowired(required=false) ✅ UserDAO dao 변수는 있는데 등록된 UserDAO 빈이 없다. ✅ 주입해야 되는 빈이 없기 때문에 NoSuchBeanDefinitionException 발생한다. 👇👇👇 💻 해결 => @Autowired(required=false) ✅ (required=false)를 줌으로써 옵션으로 바뀌게 된다. => NullPointerException 으로 바뀐다.
@Autowired - NoUniqueBeanDefinitionException
·
Framework/SPRING FRAMEWORK
✅ Cat.java - 변수 두 개를 작성한다. - 생성자, getter/setter, toString() 작성한다. ✅ Person.java - 변수 두개를 작성한다. - 다 작성해도 상관없지만 필요한 username의 set만 작성한다. - cat은 Autowired로 주입할 것이기 때문에 그대로 둔다. ✅ user.xml - 어노테이션을 쓰기 위해 필요한 를 작성해준다. (Namespaces에서 context도 체크) - Cat 빈을 등록한다. - Person 빈을 등록한다. 결과 💻 NoUniqueBeanDefinitionException 타입(type)으로 찾아서 주입하기 때문에 만약 동일한 타입이 여러 개인 경우에 발생한다. 👇👇👇 💡 해결 1 @Autowired @Qualifier(value..
@Autowired
·
Framework/SPRING FRAMEWORK
org.springframework.beans.factory.annotation.Autowired. Type 이용 속성 또는 생성자, setter 메소드에 설정 가능하고 필수 속성이다. ( required=false 로 필수 속성 해제가능) 기본적으로 일치하는 타입을 찾아서 injection 된다. 자동으로 주입 주입받는 대상을 타입(type)으로 찾아서 자동 주입 사용위치 3가지 변수 (권장) 생성자 메서드 💻 생성자 ✅ UserDAO.java 홍길동, 이순신 두 문자열이 담긴 배열을 담은 List 변수를 작성한다. ✅ UserService.java 변수와 필드생성자, setter를 작성한다. List의 기본 생성자도 작성한다. ✅ user.xml DAO를 등록한다. => 객체 생성됨 UserServi..
어노테이션+최소한의 XML Configuration Metadata 설정방법
·
Framework/SPRING FRAMEWORK
👉 반드시 지정해야 된다. @Required spring 5.x deprecated. @Autowired (Type 이용) 자동으로 주입 주입받는 대상을 타입(type)으로 찾아서 자동 주입 사용위치 3가지 변수 (권장) 생성자 메서드 주입해야되는 빈은 반드시 존재해야 한다. 없으면 NoSuchBeanDefinitionException 발생된다. 비활성화 가능하다. => @Autowired(required=false) 타입(type)으로 찾아서 주입하기 때문에 만약 동일한 타입이 여러개인 경우에는 NoUniqueBeanDefinitionException 발생된다. 💡 NoUniqueBeanDefinitionException 해결방법 @Autowired @Qualifier(value=”id값”) 타입이 여..
Bean Scope
·
Framework/SPRING FRAMEWORK
1. 기본적으로 컨테이너에 한 개의 빈 객체를 생성하여 재사용된다.( per Container ) 2. 빈의 스코프(scope)를 설정할 수 있는 방법을 제공한다. 3. 태그의 scope 속성을 사용한다. 📌 scope 설정 가능한 값 scope=”singleton” (기본) ⇒ 빈을 한번만 생성하고 재사용함 ⇒ 필요시 getBean()할 때 이전에 생성된 빈을 반환 ⇒ 따라서 하나의 빈으로 재사용한다. ⇒ 여러 사용자가 하나의 빈을 공유해서 사용하게 된다. scope=”prototype” ⇒ 빈을 매번 생성 ⇒ 필요시 getBean()할 때 새롭게 객체생성해서 빈을 반환 ⇒ 여러 사용자가 빈을 공유 불가 ⇒ 자신만의 특정 데이터를 관..
자바의 싱글톤패턴 구현
·
Framework/SPRING FRAMEWORK
1️⃣ 생성자를 private으로 지정한다. 2️⃣ 자기자신의 메서드에서 생성한다. 3️⃣ static 변수로 지정한다.
xoo | 수진