1. https://sourceforge.net/projects/java-orm-plugin/

2. Java ORM Plugin for Eclipse > Download > JavaORMPlugin.zip파일(69kb) 다운로드 

3. zip파일 압축 해제 > JavaORMPlugin/plugins > JavaORMPlugin_1.0.0.201411180016.jar 만 복사

4. C:/sts-bundle/sts-3.9.13.RELEASE/plugins 폴더 안에 JavaORMPlugin_1.0.0.201411180016.jar파일

   붙여넣기

'IT > Spring' 카테고리의 다른 글

Spring 수업 노트 02  (0) 2021.10.20
Spring 수업 노트 01  (0) 2021.10.19

 

package test;

public class Gong implements People {
	public void eyesOn(){
		System.out.println("Gong eyesOn메소드 샐행");
	}
	public void eyesOff(){
		System.out.println("Gong eyesOff메소드 샐행");
	}
}
//-----------------------------------------
package test;

public class Dong implements People {
	public void eyesOn(){
		System.out.println("Dong eyesOn메소드 샐행");
	}
	public void eyesOff(){
		System.out.println("Dong eyesOff메소드 샐행");
	}
}

 

package test;
public interface People {
	void eyesOn();
	void eyesOff();
}

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="pD" class="test.Dong" /> 
	<bean id="pG" class="test.Gong" /> 
	<!-- lazy-init="true" init-method="initM" destroy-method="destroyM" -->

</beans>

 

package test;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
import polymorphism.TV;
public class PeopleClient {
	public static void main(String[] args) {
		AbstractApplicationContext a = new GenericXmlApplicationContext("test/testContext.xml");
//		BeanFactory factory = new BeanFactory();
		People pd = (People) a.getBean("pD"); // Spring 자동 제공
		People pg = (People) a.getBean("pG"); // Spring 자동 제공
		pd.eyesOff();
		pd.eyesOn();
		pg.eyesOn();
		pg.eyesOn();
        p = (People) a.getBean("pD"); // Spring 자동 제공
        p.eyesOn();
		p.eyesOn();
		a.close();
	}
}

객체를 얻어온다.


package com.springbook.ioc.injection;
import java.util.Map;
public class CollectionBean {
	private List<String> addressList;
	private Set<String> addressList;
	private Map<String, String> addressList;
	private Properties addressList;

	// List 타입 매핑
	public void setAddressList(List<String> addressList) {
		this.addressList = addressList;
	}

	public List<String> getAddressList() {
		return addressList;
	}

	// Set 타입 매핑
	public void setAddressList(Set<String> addressList) {
		this.addressList = addressList;
	}
	public Set<String> getAddressList() {
		return addressList;
	}

	// Map 타입 매핑
	public void setAddressList(Map<String, String> addressList) {
		this.addressList = addressList;
	}
	public Map<String, String> getAddressList() {
		return addressList;
	
		// Properties 타입 매핑
	public void setAddressList(Properties addressList) {
		this.addressList = addressList;
	}

	public Properties getAddressList() {
		return addressList;
	}
}
package com.springbook.ioc.injection;
import java.util.Map;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class CollectionBeanClient {

	public static void main(String[] args) {

		AbstractApplicationContext factory = new GenericXmlApplicationContext("collectionContext.xml");
		CollectionBean bean = (CollectionBean) factory.getBean("collectionBean");

		CollectionBean bean1 = new CollectionBean();
		List<String> addressList1 = new ArrayList<String>();
		addressList1.add("1");
		addressList1.add("2");
		addressList1.add("3");
		addressList1.add("4");
		addressList1.add("5");
		bean1.setAddressList(addressList1);
		for(String address : addressList1) {
			System.out.println("address: " +address);
		}
		// List 타입 매핑
		List<String> addressList = bean.getAddressList();
		for (String address : addressList) {
			System.out.println(address.toString());
		}
		// Set 타입 매핑 
		Set<String> addressList = bean.getAddressList();
		for (String address : addressList) {
			System.out.println(address.toString());
		}
		// Map 타입 매핑 *Map<Key, Value>
		Map<String, String> addressList = bean.getAddressList();
		for (Map.Entry<String, String> address : addressList.entrySet() ) {
		}
        System.out.println(String.format("Key : %s, Value : %s", address.getKey(), address.getValue()));
		 for(String s: addressList.keySet()){
         System.out.println(s);
         }
		for(String s: addressList.values()){
		 System.out.println(s);
        }
		
		// Properties 타입 매핑 *제네릭 타입 올 수 없다.
		
		  Properties addressList = bean.getAddressList(); for (Map.Entry address :
		  addressList.entrySet() ) {
		  System.out.println(String.format("Key : %s, Value : %s", address.getKey(),
		  address.getValue())); }
		 
		factory.close();
	}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	<bean id="collectionBean"
		class="com.springbook.ioc.injection.CollectionBean">
		<property name="addressList">

			<!-- List 타입 매핑 * -->
			<list>
				<value>서울시 강남구 역삼동</value>
				<value>서울시 성동구 행당동</value>
			</list>

			<!-- Set 타입 매핑 *중복허용?" -->
			<set value-type="java.lang.String">
				<value>서울시 강남구 역삼동</value>
				<value>서울시 성동구 행당동</value>
				<value>서울시 성동구 행당동</value>
			</set>

			<!-- Map 타입 매핑 -->
			<map>
				<entry>
					key element
					<key>
						<value>고길동</value>
					</key>
					<value>서울시 강남구 역삼동</value>
				</entry>
				<entry>
					<key>
						<value>마이콜</value>
					</key>
					<value>서울시 강서구 화곡동</value>
				</entry>
			</map>

			<!-- Properties 타입 매핑 -->
			<props>
				<prop key="고길동">서울시 강남구 역삼동</prop>
				<prop key="마이콜">서울시 강서구 화곡동</prop>
			</props>
		</property>
	</bean>
</beans>

p:변수명-ref="참조할 객체의 이름이나 아이디"

p:변수명="설정할 값"

List

list - value

Set

set - value

Map

map - entry - key{value}, value

Properties

props - prop[key]{}

 

 

 

 

'IT > Spring' 카테고리의 다른 글

JavaORMPlugin설치.txt  (0) 2021.11.15
Spring 수업 노트 01  (0) 2021.10.19

Spring tools suite
3.9.13 window

[질문]
#상속 
A클래스 B클래스 C인터페이스 D인터페이스
A extends B
A implements C
C extends D
*extends = 자식과 부모가 동급일 때

!중요[interface] 기본값 public
public private default protected
모든 메소드는 추상 메소드여야 한다.
abstract 재정의 필요
생성자를 가질 수 없다
몸체가 있으면 안된다.
#상수는 가질 수 있다.



interface A {
void handUp(); 몸체가 가질 수 없다.
void handDown();
A a new B();
a.handUp(); 자식꺼! Overriding된다.
((B) a).eyeOn(); B는 자료형 케스트연산자
상속 받은 자식의 클래스를 받을 수 있다

}
똑같은 인터페이스를 받았다고 해도 명시가 안되어 있으면 알리 어렵다.
class B implements A {
public void handUp(){ sysout~("A")}; 기본값 public 보다 높은 것만
public void handDown(){ sysout~("B")};



(1) Servers setting 
Window - preferences - servers - runtime Enviroment - add -tomcat 폴더 선택
(2) 환경설정
-웹브라우저- Chrome
-workspace - other - UTF-8
-Web CSS, HTML, JSP -> UTF-8

형상관리 = 라이브러리 버전 관리
412434143214123414

appliation - tomcat
아파치 = 서버
아파치 톰켓
sts-bundle #spring-tool-suite

Spring Framework는 IOC기반
IOC는 Inversion of Control의 약자로 말 그대로 제어의 역전
객체 결정 및 생성 -> 의존성 객체 생성 -> 객채 내의 메소드 호출
즉, 모든 작업을 사용자가 제어하는 구조인 것입니다.
즉, 제어의 흐름을 사용자가 컨트롤 하지 않고 위임한 특별한 객체에 모든 것을 맡기는 것입니다.
IOC란 기존 사용자가 모든 작업을 제어하던 것을 특별한 객체에 모든 것을 위임하여 객체의 생성부터 생명주기 등 모든 객체에 대한 제어권이 넘어 간 것을 IOC, 제어의 역전 이라고 합니다.


IOC는 DI와 DL의 의해 구현됩니다.
DL(Dependency Lookup) - 의존성 검색

DI(Dependency Injection) - 의존성 주입 
각 클래스 사이에 필요로 하는 의존관계를 빈 설정 정보를 바탕으로 컨테이너가 자동으로 연결


Spring Framework의 특징 POJO
POJO(Plain Old Java Object)



 POJO는 gettet/setter를 가진 단순 자바 오브젝트로 정의
"POJO를 사용함으로써, 당신의 코드는 더욱 심플해졌고, 그로인해 테스트 하기에 더 좋으며, 유연하고, 요구사항에 따라 기술적 선택을 바꿀수 있도록 바뀌었다."
 - javax.servlet, javax.servlet.http 패키지를 import해야 한다.
 - public 클래스로 선언되어야 한다.
 - Servlet, GenericServlet, HttpServlet 중 하나를 상속해야 한다.
 - 기본 생성자(Default Constructor)가 있어야 한다.
 - 생명주기가 해당하는 메소드를 재정의(Overriding) 한다



Spring Framework의 특징 AOP
AOP(Aspect Oriented Programming)란 말 그대로 관점 지향 프로그래밍

대부분 소프트웨어 개발 프로세스에서 사용하는 방법은 OOP(Object Oriented Programming) 
무분별하게 중복되는 코드를 한 곳에 모아 중복 되는 코드를 제거 할 수 있어지고 공통기능을 한 곳에 보관함으로써 공통 기능 하나의 수정으로 모든 핵심기능들의 공통기능을 수정 할 수 있어 효율적인 유지보수가 가능하며 재활용성이 극대화



Spring Framework의 특징 MVC (Model2)
Model
Model에서는 데이터처리를 담당하는 부분입니다. Model부분은 Serivce영역과 DAO영역으로 나누어지게 되고 여기서 중요한 것은 Service 부분은 불필요하게 HTTP통신을 하지 않아야하고 request나 response와 같은 객체를 매개변수로 받아선 안된다. 또한 Model 부분의 Service는 view에 종속적인 코드가 없어야 하고 View 부분이 변경되더라도 Service 부분은 그대로 재사용 할 수 있어야 한다.
Model에서는 View와 Controller 어떠한 정보도 가지고 있어서는 안된다.
 
View
View는 사용자 Interface를 담당하며 사용자에게 보여지는 부분입니다. View는 Controller를 통해 모델에 데이터에 대한 시각화를 담당하며 View는 자신이 요청을 보낼 Controller의 정보만 알고 있어야 하는 것이 핵심이다.
Model이 가지고 있는 정보를 저장해서는 안되며 Model, Controller에 구성 요소를 알아서는 안된다.

Controller
Controller에서는 View에 받은 요청을 가공하여 Model(Service 영역)에 이를 전달한다. 또한 Model로 부터 받은 결과를 View로 넘겨주는 역할을 합니다. Controller에서는 모든 요청 에러와 모델 에러를 처리하며 View와 Controller에 정보를 알고 있어야한다.
Model과 View의 정보에 대해 알고 있어야한다.


이렇게 Model, View, Controller를 나누는 이유는 소스를 분리함으로서 각 소스의 목적이 명확해 지고 유지보수하는데 있어서 용이하기 때문이다. Model의 Service영역은 자신을 어떠한 Controller가 호출하든 상관없이 정해진 매개변수만 받는다면 자신의 비즈니스 로직을 처리할 수 있어야한다. 
즉, 모듈화를 통해 어디서든 재사용이 가능하여야 한다는 뜻이다. 
이말은 View의 정보가 달라지더라도 Controller에서 Service에 넘겨줄 매개변수 데이터 가공만 처리하면 되기 때문에 유지보수 비용을 절감 할 수 있는 효과가 있다. 또한 Service영역의 재사용이 용이하기 때문에 확장성 부분에서도 큰 효과를 볼 수 있는 장점이있다.



Spring Core
Spring Core는 Spring Container을 의미합니다. core라는 말 그대로 Container는 Spring Framework의 핵심이며 그중 핵심은 Bean Factory Container입니다.  그 이유는 바로 Bean Factory는 IOC패턴을 적용하여 객체 구성 부터 의존성 처리까지 모든 일을 처리하는 역할을 하고 있기 때문입니다.

 

Spring Context
Spring context는 Spring Framework의 context 정보들을 제공하는 설정 파일입니다. Spring Context에는 JNDI, EJB, Validation, Scheduiling, Internaliztaion 등 엔터프라이즈 서비스들을 포함하고 있습니다.

 

Spring AOP
Spring AOP module은 Spring Framework에서 관점지향 프로그래밍을 할 수 있고 AOP를 적용 할수 있게 도와주는 Module입니다. 해당 AOP에 대한 내용은 위에서 설명 했기 때문에 넘어 가도록 하겠습니다.

 

Spring DAO
DAO란 Data Access Object의 약자로 Database Data에 접근하는 객체입니다. Spring JDBC DAO는 추상 레이어를 지원함으로써 코딩이나 예외처리 하는 부분을 간편화 시켜 일관된 방법으로 코드를 짤 수 있게 도와줍니다.

 

Spring ORM
ORM이란 Object relational mapping의 약자로 간단하게 객체와의 관계 설정을 하는 것입니다. Spring에서는 Ibatis, Hibernate, JDO 등 인기있는 객체 관계형 도구(OR도구)를 사용 할 수 있도록 지원합니다.


Spring Web
Spirng에서 Web context module은 Application module에 내장되어 있고 Web기반의 응용프로그램에 대한 Context를 제공하여 일반적인 Web Application 개발에 필요한 기본적인 기능을 지원합니다. 그로인해 Jakarta Structs 와의 통합을 지원하고 있습니다.

 

Spring MVC
Spring에서는 MVC에서는 Model2 구조로 Apllication을 만들 수 있도록 지원합니다. MVC (Model-View-Controller) 프레임 워크는 웹 응용 프로그램을 작성하기 위한 완전한 기능을 갖춘 MVC를 구현합니다. MVC 프레임 워크는 전략 인터페이스를 통해 고급 구성 가능하며 JSP, Velocity, Tiles, iText 및 POI를 포함한 수많은 뷰 기술을 지원하고 있습니다.
---------------------------------------------------------
  <servlet>
    <description></description>
    <display-name>HelloServlet</display-name>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.springbook.biz.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/hello.do</url-pattern>
  </servlet-mapping>

----------------------------------------------
HelloServlet.java
response.setContentType("text/html; charset=utf-8");

PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>현재시간</title></head>");
out.println("<body>");
out.println("현재 시간은");
out.println(new Date());
out.println("입니다.");
out.println("</body></html>");

}


----------------------------------------------
src/main/resources
<bean id="tv" class="polymorphism.SamsungTV" />


----------------------------------------------
TVUser
// servlet 파일이기 때문에
// servlet은 만들어만 놓고 controller가 구현시킨다.
AbstractApplicationContext factory = new GenericXmlApplicationContext("applicatoinContext.xml");
// BeanFactory factory = new BeanFactory();
TV tv= (TV)factory.getBean(args[0]);
tv.powerOn();
tv.volumeUp();
tv.volumeDown();
tv.powerOff();

factory.close();
----------------------------------------------

1. TVUser 클라이언트가 스프링 설정 파일을 로딩하여 컨테이너 구동
2. 스프링 설정 파일에 <bean> 등록된 SamsungTV 객체 생성
3. getBean() 메소드로 이름이 'tv'인 객체를 요청(Lookup)
4. SamsungTV 객체 변환

GenericXmlApplicationContext : 파일 시스템이나 클래스 경로에 있는 XML 설정 파일을 로딩하여 구동하는 컨테이너
XmlWebApplicationContext : 웹 기반의 스프링 애플리케이션을 개발할 때 사용하는 컨테이너
====================================
-------------
public class SamsungTV implements TV {
tv.powerOn();
tv.volumeUp();
tv.volumeDown();
tv.powerOff();
}
-------------
<bean id="tv" class="polymorphism.SamsungTV" />
-------------
AbstractApplicationContext factory = new GenericXmlApplicationContext("applicatoinContext.xml");
TV tv= (TV)factory.getBean(args[0]);
...
factory.close();
-------------
====================================
jsp 
servlet
container
 



Spring
servlet
spring container - xml
container에 담아 놓고 spring이 실행 되자 마자 :?파일을 찾는다 

<bean>
생명주기 관리 + 여러가지 서비스 제공
!스프링 프로젝트 전체에서 가장 중요한 역할

default 생성자만 인식
default 생성자라도 써줘야한다.
맴버변수 초기화 

====================================
-------------
<bean id="tv" class="polymorphism.SamsungTV" init-method="initMethod" destroy-method="destoryMethod"/> 
-------------
public class SamsungTV implements TV {
public void initMethod() {
System.out.println("객체 초기화 작업 처리...");
}
public void destoryMethod() {
System.out.println("객체 삭제 전에 처리할 로직 처리...");
}
-------------
scope="prototype" // singleton
TV tv1 = (TV) factory.getBean("tv");
TV tv2 = (TV) factory.getBean("tv");
TV tv3 = (TV) factory.getBean("tv");
====================================
생성자는 private 처리하고 
객체 하나만 생성해서 요청하는 곳에 빌려준다.
bean으로 객체를 생성하면 객체 하나만 생성
scope의 prototype으로 하면 요청할 때마다 새로운 객체를 반환

id 객체명 class 클래스명.클래스명
프리로딩 방식
즉시로딩 방식

sevlet에서 받아온 객체 읽어오는것
담아 놓는다
필요한 객체
getBean
id 생략 가능한데 객체명을 bean 클래스의 경로의 class명을 


INFO : org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [applicationContext.xml]
INFO : org.springframework.context.support.GenericXmlApplicationContext - Refreshing org.springframework.context.support.GenericXmlApplicationContext@7dc5e7b4: startup date [Tue Oct 19 18:27:54 KST 2021]; root of context hierarchy
==============>SamsungTV객체 생성
==============>LgTV객체 생성
LgTV객체의 init메소드 호출
INFO : org.springframework.context.support.GenericXmlApplicationContext - Closing org.springframework.context.support.GenericXmlApplicationContext@7dc5e7b4: startup date [Tue Oct 19 18:27:54 KST 2021]; root of context hierarchy
LgTV객체의 destroy메소드 호출

 

프리로딩

메모리 차지

속도 양호

lazy 로딩

 

people

eyesOn

eyesOff

'IT > Spring' 카테고리의 다른 글

JavaORMPlugin설치.txt  (0) 2021.11.15
Spring 수업 노트 02  (0) 2021.10.20

+ Recent posts