일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 스택
- javascript
- sql
- List
- dfs
- Java
- 스프링부트
- BFS
- 힙덤프
- string
- GC로그수집
- union_find
- alter
- html
- scanner
- Properties
- map
- Calendar
- Union-find
- deque
- 큐
- CSS
- spring boot
- JPA
- NIO
- date
- 리소스모니터링
- priority_queue
- set
- math
- Today
- Total
매일 조금씩
01/25 ! - Spring(2) : DI(Dependency Inject)의 2가지 형태 bean configuration file(xml)과 annotation 본문
01/25 ! - Spring(2) : DI(Dependency Inject)의 2가지 형태 bean configuration file(xml)과 annotation
mezo 2021. 2. 25. 19:58Java
Java .. 객체지향 -> 패턴
효율 - enterprise (대용량, 분산, 분업)
=> 아키텍처
동영상 - 정리
생활코딩
동빈나
신입 sw 인력을 위한 실전 자바 동영상
전자정부 프레임워크
* 우리나라 공공기관 사용하는 기본 프레임워크(라이브러리)
=> open source
eclipse ide
* jsp => model2 => spring MVC
DI
AOP
* tomcat / 다른것
* 데이터베이스 / 다른것
* Platform(OS) / 다른것
+ 업무
1. window program
* 반응성
2. web program (*)
3. mobile program
mobile web (*) - jQuery web
app
★ 현재 Maven 프로젝트로 Spring의 특징인 DI를 구현중이다.
Spring
1. 개발환경
가장 중요한건 sts이다.
STS - eclipse plug-in
- bean configuration file
- maven project
전자정부 프레임워크(jdk 14 버전 안돌아감)
우리가 설치한 것들이 모두 여기에 포함되어 있다!
2. DI - Dependency Inject(의존 주입)
객체 생성/초기화
1) new 생성자
2) setter
=> spring
spring bean configuration file 설정
2-1. bean configuration file
1) 초기화를 태그 안에서 하기
p 속성 사용
> spring3 > com.exam.spring5
<bean id="to" class="com.exam.spring5.BoardTO" p:seq="1" p:subject="제목" />
이렇게 <bean> 안에 p 속성을 사용하여 초기화 할수 있다.
2) ArrayList 집어오기 - <list> 사용
> spring3 > com.exam.spring6 > AppEx02.java
BoardListTO 를 만들었는데 이에 관한걸 bean configuration file로 초기화 해줄 수 있다.
1. ArrayList<String> 초기화, 가져오기
<bean id="listTO" class="com.exam.spring6.BoardListTO" scope="prototype">
<property name="userLists">
<list>
<value>홍길동</value>
<value>박문수</value>
</list>
</property>
<property name="boardLists">
<list>
<bean class="com.exam.spring6.BoardTO">
<property name="seq" value="1" />
<property name="subject" value="제목1" />
</bean>
<bean class="com.exam.spring6.BoardTO">
<property name="seq" value="2" />
<property name="subject" value="제목2" />
</bean>
</list>
</property>
</bean>
2. ArrayList<BoardTO> 초기화, 가져오기
<bean id="to1" class="com.exam.spring6.BoardTO" scope="prototype">
<property name="seq" value="1" />
<property name="subject" value="제목1" />
</bean>
<bean id="to2" class="com.exam.spring6.BoardTO" scope="prototype">
<property name="seq" value="2" />
<property name="subject" value="제목2" />
</bean>
<bean id="listTO" class="com.exam.spring6.BoardListTO" scope="prototype">
<property name="userLists">
<list>
<value>홍길동</value>
<value>박문수</value>
</list>
</property>
<property name="boardLists">
<list>
<ref bean="to1" />
<ref bean="to2" />
</list>
</property>
</bean>
for(BoardTO to: listTO.getBoardLists()) {
System.out.println(to.getSeq());
System.out.println(to.getSubject());
}
3) HashMap, Set 집어오기
> spring3 > com.exam.spring7 > AppEx02.java
<bean id="to1" class="com.exam.spring7.BoardTO" scope="prototype">
<property name="seq" value="1" />
<property name="subject" value="제목1" />
</bean>
<bean id="to2" class="com.exam.spring7.BoardTO" scope="prototype">
<property name="seq" value="2" />
<property name="subject" value="제목2" />
</bean>
<bean id="listTO" class="com.exam.spring7.BoardListTO">
<property name="boardMaps">
<map>
<entry key="to1">
<ref bean="to1"/>
</entry>
<entry key="to2">
<ref bean="to2"/>
</entry>
</map>
</property>
<property name="boardSets">
<set>
<ref bean="to1" />
<ref bean="to2" />
</set>
</property>
</bean>
package com.exam.spring7;
import org.springframework.context.support.GenericXmlApplicationContext;
import com.exam.spring7.BoardListTO;
import com.exam.spring7.BoardTO;
public class AppEx02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
GenericXmlApplicationContext ctx
= new GenericXmlApplicationContext("classpath:com/exam/spring7/context.xml");
BoardListTO listTO = (BoardListTO)ctx.getBean("listTO");
for(BoardTO to: listTO.getBoardMaps().values()) {
System.out.println(to.getSeq());
System.out.println(to.getSubject());
}
for(BoardTO to: listTO.getBoardSets()) {
System.out.println(to.getSeq());
System.out.println(to.getSubject());
}
ctx.close();
}
}
4) Properties - 프로그램 환경설정
> spring3 > com.exam.spring8 > AppEx02.java
to를 Properties로 할 경우이다.
따로 BoardTO같은 to클래스를 생성할 필요가 없다.
get,set이 내부적으로 정의 되어 있어서 바로 사용 가능하다.
<bean id="client" class="com.exam.spring8.BookClient" scope="prototype">
<property name="configs">
<props>
<prop key="server">127.0.0.1</prop>
<prop key="connectionTimeout">5000</prop>
</props>
</property>
</bean>
package com.exam.spring8;
import java.util.Properties;
public class BookClient {
private Properties configs;
public Properties getConfigs() {
return configs;
}
public void setConfigs(Properties configs) {
this.configs = configs;
}
}
package com.exam.spring8;
import java.util.Properties;
import org.springframework.context.support.GenericXmlApplicationContext;
import com.exam.spring8.BookClient;
public class AppEx02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
GenericXmlApplicationContext ctx
= new GenericXmlApplicationContext("classpath:com/exam/spring8/context.xml");
BookClient client = (BookClient)ctx.getBean("client");
Properties config = client.getConfigs();
System.out.println(config.getProperty("server"));
System.out.println(config.getProperty("connectionTimeout"));
}
}
5) 인터페이스를 활용한 (model2 와 비슷한 형태로 만들기)
> spring4 > com.exam.spring4
BoardDAO, BoardAction은 인터페이스이다.
BoardDAO.java -> DatabaseBoardDAO.java
BoardAction.java -> InsertAcion.java
> spring4 > com.exam.spring4 > App.java
> spring4 > com.exam.spring4 > AppJava.java
bean configuration file 사용하지않고 Java 코드로만 만들기
+ jdbc 연결
> spring4 > com.exam.spring4 > MariadbBoardDAO.java
6) bean configuration file 없이 annotation으로 만들기
> spring5
bean configuration file인 context.xml을 대체하는 java 파일이 있다. 여기선 BeanConfig.java 이다.
@Configuration
@Scope("prototype")
을 클래스 위에 쓰고
@Bean 를 new를 return 하는 메서드 위에 쓴다.
@Bean 에서 name이라는 속성을 사용하여 뭘로 불릴지 정할수 있다.
생성자를 통한 주입, 프로퍼티를 통한 주입
7) 5번을 annotation으로 만들기
> spring4 > com.exam.spring4 > BeanConfig.java
> spring4 > com.exam.spring4 > AppAnno.java