Spring Stereo type

JAVA/Java_DataBase 2013.12.19 17:23

@Component

스프링 빈 객체가 됨.

@Controller

스프링 Controller역활을 함

@Repository

저장소 역활을 함(Dao)

자동 예외변환을 처리해줌

@Service

비즈니스로직을 구현한 클래스에 붙임


@Repository를 제외한 다른 스테레오 타입의 경우 현재 

명칭만 지정되어 있을 뿐임. 추후 네이명 적용 예정


저작자 표시 비영리 변경 금지
신고

'JAVA > Java_DataBase' 카테고리의 다른 글

Spring Stereo type  (0) 2013.12.19
mysql 정책 변경  (0) 2013.12.11
AOP?  (0) 2013.11.07
빈의 라이프 사이클  (0) 2013.11.05
빈의 객체 범위  (0) 2013.10.23
객체간의 의존관계 설정.  (0) 2013.10.21

mysql 정책 변경

JAVA/Java_DataBase 2013.12.11 11:01

https://kldp.org/node/72564


해당 블로그가면 확인가능

저작자 표시 비영리 변경 금지
신고

'JAVA > Java_DataBase' 카테고리의 다른 글

Spring Stereo type  (0) 2013.12.19
mysql 정책 변경  (0) 2013.12.11
AOP?  (0) 2013.11.07
빈의 라이프 사이클  (0) 2013.11.05
빈의 객체 범위  (0) 2013.10.23
객체간의 의존관계 설정.  (0) 2013.10.21

AOP?

JAVA/Java_DataBase 2013.11.07 23:04

http://isstory83.tistory.com/90


AOP관련 설명 사이트.


이건 어떻게 가볍게 설명이 안됨..

잘쓰신분꺼를 봐야될듯

저작자 표시 비영리 변경 금지
신고

'JAVA > Java_DataBase' 카테고리의 다른 글

Spring Stereo type  (0) 2013.12.19
mysql 정책 변경  (0) 2013.12.11
AOP?  (0) 2013.11.07
빈의 라이프 사이클  (0) 2013.11.05
빈의 객체 범위  (0) 2013.10.23
객체간의 의존관계 설정.  (0) 2013.10.21

빈의 라이프 사이클

JAVA/Java_DataBase 2013.11.05 01:05

*구글 이미지 검색 후 붙임

안나올시 

http://www.javajigi.net/download/attachments/3664/bean-lifecycle.jpg


빈의 라이프 사이클의 경우 내가 써봐야.. 뭐.. 

그림파일로 만들어준 고마운 분들이 많으므로 그것으로 대체!


BeanNameAware 인터페이스

빈 객체가 자신의 이름을 알아야 하는 경우에 사용하며 

빈 클래스가 BeanNameAware를 구현한 경우 컨테이너는 setBeanName()매서드를 호출하여 빈객체의 이름을 전달 한다. 

setBeanName(String arg) arg의 경우 객체가 생성될 때의 해당 객체(빈)의 id또는 Name의 값을 전달받는다.


ApplicationContextAware 인터페이스

빈 객체가 필요한 객체를 스프링 컨테이너(BeanFactory나 ApplicationContext)로부터 직접 사용해야할 경우



BeanLifeCycle.zip



여기에 소스 올리는게 더 힘들거 같아서 그냥.. 


예시 프로그램 만들어서 올렸다.


당근... 나도 공부하는 입장이라.. 누누이 말하지만 


다른 잘하시는 분 블로그를 미친듯이 참조했으니 어디서 빼꼈느니 어쩌구 저쩌구 말은 하지 말길바람.



*추가

InitializingBean 인터페이스 

spring지원 초기화 메서드 , 객체 생성 -> 프로퍼티 초기화 -> 컨테이너 관련 설정 =>호출 


DisposableBean 인터페이스

spring 지원 소멸 메소드 , 빈 객체를 컨테이너에서 제거하기 전에 호출 하여 빈객체가 자원을 반납하게 함


오버라이드 메소드이니 implements에 추가하면 이클립스의 경우 클래스 이름에 빨간불 들어오면서 추가할 수 있게 해준다. 




저작자 표시 비영리 변경 금지
신고

'JAVA > Java_DataBase' 카테고리의 다른 글

mysql 정책 변경  (0) 2013.12.11
AOP?  (0) 2013.11.07
빈의 라이프 사이클  (0) 2013.11.05
빈의 객체 범위  (0) 2013.10.23
객체간의 의존관계 설정.  (0) 2013.10.21
Spring API  (0) 2013.10.21

빈의 객체 범위

JAVA/Java_DataBase 2013.10.23 23:27

지난번에 bean 사용법과 더불어 여러기능에 대해서 

한번 써본적이 있는거 같다. 


request에도 여러 설정이 있고 bean에도 여러설정이 있는데

scope라고 해서 빈의 속성을 결정해주는게 있다.

<bean id="jdbcDao" class="springtest.jdbcDao" scope="??"></bean>



범위 

 설명

 singleton

 스프링 컨테이너에 의해 한개의 빈 객체만 생성

 prototype

 빈을 사용할 때마다 객체를 생성 

 request

 HTTP 요청마다 빈 객체를 생성(WebApplicationContext에서만 적용) 

 session

 HTTP 세션마다 빈 객체를 생성(WebApplicationContext에서만 적용) 

 global-session

글로벌 HTTP 세션에 대해 빈 객체를 생성. 포틀릿을 지원하는 컨텍스트에 대해서만 적용가능 



*나도 퍼온거라 .. 마지막 부분꺼만 대체 무슨 말인지를 모르겠다;;


singleton 이란거는 디자인 패턴이나 이런곳에서 뒤져보면 많은 설명이 있지만 설명하자면


TYPE A                        TYPE B

String A = "B";               String A = "B";

String B = "B";               String B = new String("B");


타입A와 타입B의 차이라고 할 수 있는데


TYPE A                                     TYPE B

A -------------"B"                    A -------------- "B"

B -----------┘                        B ---------------"B"


여기서 싱글톤은 타입A와 같다고 생각하면 되겠다.

한번 생성이 되고 나면 계속해서 처음 객체를 생성한 것만을 리턴해준다.


prototype같은 경우는 타입B와 동일하다고 보면되고

request는 사용자가 어떤 행위를 하여서 서버에 요청이 들어갔을 경우에 생성이 된다.

session은 홈페이지에 접속한 사용자마다 세션이라는 것이 생성이되는데 그 세션마다 어떠한 빈을 생성하게 한다했을 경우에 설정하는 거 같고..


전체적으로 좀 부족한 설명이긴 한데 나도 배우는 입장이라 이해해주기를 바란다~

싱글톤 패턴의 경우에는 주의사항이 있다. 객체를 한번만 생성하기 때문에 매우 편리하지 않을까 하는 생각도 있는데 쉽게 풀어 설명하면 전역변수라고 생각하면 되겠다. 여기저기서 참조해서 사용할 수 있는

리딩이라던지 DBConnection을 리턴해준다던지의 용도로 사용하면 적절하지만 긴 시간동안 처리되는 작업 또는 공유적으로 처리되는 변수값들 또는 작업들을 싱글톤으로 지정했을 경우에는 


-상호 배제(mutual exclusion, Mutex, 뮤텍스)는 동시 프로그래밍에서 공유 불가능한 자원의 동시 사용을 피하기 위해 사용되는 알고리즘으로, 임계 구역(critical section)으로 불리는 코드 영역에 의해 구현된다.

공유 불가능한 자원의 예로는 동시에 실행되고 있는 프로그램간의 통신에 사용되는 비트 단위의 깃발, 계수기,  등이다. 문제는 스레드가 언제라도 정지되거나 시작될 수 있다는 것이다.

예) 프로그램의 일부분이 여러 단계를 거치면서 데이터를 읽고 쓰고 있다고 하자. 그런데 예상치 못한 사건 등에 의해 다른 스레드가 동작하기 시작했다. 첫 번째의 스레드가 쓰고 있는 영역에서, 이 두 번째의 스레드가 또 다른 작업을 시작한다면, 해당 영역의 값은 부적절하며 예상할 수 없는 상태에 놓이게 된다. 게다가 두 번째의 스레드가 값을 덮어 써버리기라도 한다면, 복구 불가능한 상태로 되고 만다. 그러므로 공유 데이터를 접근하는 프로그램 내부의 이른바 임계 구역이라는 부분은 홀로 수행되도록 보호되어야 하며, 다른 스레드가 동일한 부분의 프로그램을 수행해서 동일한 공유 데이터를 접근하는 것을 막아야 한다.

단일 프로세서 시스템에서, 상호 배제를 구현하는 가장 단순한 방법은 인터럽트를 억제해서 공유 데이터가 손상되는 것을 막는 것이다. 성능에 최소한의 영향을 주기 위해 인터럽트가 발생하지 않을 명령어 집합의 수는 가능한 최소로 유지시키는 것이 좋다.

상호배제를 처음으로 소프트웨어를 통해 해결한 사람은 네덜란드 수학자 데커(Dekker)이며 그 알고리즘을 데커의 알고리즘이라 한다.

상호배제는 교착상태의 4가지 필요조건 중 하나이다.

(출처 : 위키펌)


위와같이 상호배제의 문제가 발생할 것으로 추측된다. (직접 겪어본건 아니라서;;;)


저작자 표시 비영리 변경 금지
신고

'JAVA > Java_DataBase' 카테고리의 다른 글

AOP?  (0) 2013.11.07
빈의 라이프 사이클  (0) 2013.11.05
빈의 객체 범위  (0) 2013.10.23
객체간의 의존관계 설정.  (0) 2013.10.21
Spring API  (0) 2013.10.21
빈생성 및 사용  (0) 2013.10.21

객체간의 의존관계 설정.

JAVA/Java_DataBase 2013.10.21 22:56

public class Excutor {


public static void main(String[] args) {

// TODO Auto-generated method stub

ApplicationContext context = new FileSystemXmlApplicationContext("src/springtest/xmlPack/testxml.xml");

jdbcService test = (jdbcService)context.getBean("service");

test.serviceTest();

}

}


public class jdbcDao {

public jdbcDao(){}

public int insert(){

System.out.println("insert작업");

return 0;

}

public int delete(){

System.out.println("delete작업");

return 0;

}

}



public class jdbcService {

private jdbcDao jdbc;

public jdbcService (){

}

public jdbcService(jdbcDao jdbc){

this.jdbc = jdbc;

}

public void serviceTest(){

jdbc.insert();

jdbc.delete();

}

}


<?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="testDao" class="springtest.testDao">

<constructor-arg value="testEEEE"></constructor-arg>

</bean>

<bean id="jdbcDao" class="springtest.jdbcDao">

</bean>

<bean id="service" class="springtest.service.jdbcService">

<constructor-arg ref="jdbcDao"></constructor-arg>

</bean>

</beans>



어려워 보일수도 있는데 xml설정을 보면 대충 답을 알수가 있다. 
jdbcDao라는 빈을 선언하고 id="service"를 보면 jdbcService클래스에 생성자 인수로 jdbcDao의 객체를 초기화로 집어넣는 것을 볼 수 있다. 이또한 constructor-arg를 아무것도 하지 않으면 기본 생성자로 생성이 되게 된다.

위와 같은 설정으로 jdbcDao와 jdbcService는 의존관계를 가지는 설정이 되게 된다.
만약 객체가 아니라 값일경우에는 constructor-arg ref가 아니라 value를 사용하면 된다.

또는 property로 설정이 가능한데
setXXX식의 매소드가 추가되어서 처리가 가능하다

public class jdbcService {

private jdbcDao jdbc;

public setjdbcDao(jdbcDao jdbc){

this.jdbc = jdbc;

}

public void serviceTest(){

jdbc.insert();

jdbc.delete();

}

}

<property name="jdbcDao" ref="jdbcDao"></property>

이런식으로 처리가 가능해진다.

그리고 한번만 그 객체를 쓴다고 가정하였을 경우에는

위 xml을

<?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="jdbcDao" class="springtest.jdbcDao">

</bean>

<bean id="service" class="springtest.service.jdbcService">

<property name="jdbcDao">

<bean id="jdbcDao" class="springtest.jdbcDao"></bean>

</property>

</bean>

</beans>

단점은 맨위에 있는 jdbcDao Bean과 다르게 여러번 사용이 불가능하며 임의로 다른 곳에서 긁어다가 쓸수가 없다는것이다 단지 지금위의 xml에 정의된대로 service라는 것에만 가능하다는 것이다.




저작자 표시 비영리 변경 금지
신고

'JAVA > Java_DataBase' 카테고리의 다른 글

빈의 라이프 사이클  (0) 2013.11.05
빈의 객체 범위  (0) 2013.10.23
객체간의 의존관계 설정.  (0) 2013.10.21
Spring API  (0) 2013.10.21
빈생성 및 사용  (0) 2013.10.21
DI 의존성 주입.  (0) 2013.10.15

Spring API

JAVA/Java_DataBase 2013.10.21 22:24

http://docs.spring.io/spring/docs/3.1.4.RELEASE/javadoc-api/


저작자 표시 비영리 변경 금지
신고

'JAVA > Java_DataBase' 카테고리의 다른 글

빈의 객체 범위  (0) 2013.10.23
객체간의 의존관계 설정.  (0) 2013.10.21
Spring API  (0) 2013.10.21
빈생성 및 사용  (0) 2013.10.21
DI 의존성 주입.  (0) 2013.10.15
IS-A와 HAS-A  (0) 2013.10.11

빈생성 및 사용

JAVA/Java_DataBase 2013.10.21 22:18

Excutor.java 

public class Excutor {


public static void main(String[] args) {

// TODO Auto-generated method stub

ApplicationContext context = new FileSystemXmlApplicationContext("src/springtest/xmlPack/testxml.xml");

testDao test = (testDao)context.getBean("testDao");

test.printing();

}


}


testDao.java

public class testDao {

public String msg;

public testDao(){};

public testDao(String msg)

{

this.msg = msg;

}

public void printing()

{

System.out.println("EEEEE" + msg);

}

}



testXml.xml

<?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="testDao" class="springtest.testDao">

<constructor-arg value="testEEEE"></constructor-arg>

</bean>


</beans>




스프링은 bean으로 관리한다 그래서 xml에 bean의 이름을 정해주고 getBean("beanID이름")을 넣어줘서 불러준다. testXml.xml을 보면 testDao라고 있는데 저기에 <constructor-arg value=""></constructor-arg>가 없을 경우 객체를 생성시 testDao의 기본 생성자인 testDao(){};에 의해 생성되게 된다.


저작자 표시 비영리 변경 금지
신고

'JAVA > Java_DataBase' 카테고리의 다른 글

객체간의 의존관계 설정.  (0) 2013.10.21
Spring API  (0) 2013.10.21
빈생성 및 사용  (0) 2013.10.21
DI 의존성 주입.  (0) 2013.10.15
IS-A와 HAS-A  (0) 2013.10.11
SPRING TOOL SUITE 설치하기  (0) 2013.10.01

DI 의존성 주입.

JAVA/Java_DataBase 2013.10.15 00:41

DI 의존성주입이라고 하던데


어렵게 설명해봐야 뭔말인지도 모를테고 핵심만 아는것이 중요하다고 생각된다.


여기저기 여러설명이 있는데 


읽어보다보니 헷갈려서 그냥.. 내가 알아서 정리하고 느낀 내용만 쓰려고한다.


쉽게 말하면


그 뭐지..


그거 있잖아 자판기인데 과자도 팔고 음료수도파는 그런자판기


그걸 인터페이스라고 생각해보자



자판기 = 인터페이스


사람 = 사용 클래스


여기서 중요한건 이 사람이 과자를 먹을지 음료수를 먹을지는 돈넣고 눌러야 안다는 거지


과자 = 인터페이스 상속 받은 클래스 A

음료수 = 인터페이스 상속 받은 클래스 B


A,B가 있는데 이사람이 여기서 공통적으로 해야되는 것은 누르는 행위지

그럼 그 공통 행위를 push()메소드라고 가정하면


                                             자판기 인터페이스

                                             *push() 메소드


                       자판기 인터페이스 상속    자판기 인터페이스 상속

                                과자 클래스                 음료수 클래스

           push()메소드(출력값 "과자과자")     push()메소드(출력값 "음료음료")


로 기본 적으로 구조를 생각한다음


사람 클래스

선택 메소드 {

    자판기인터페이스 자판 = new 과자클래스();

    자판.push();

    자판 = new 음료수클래스();

    자판.push();

}

이렇게 쓸수 있다는거지.

소스는 첨부해서 올릴께 발로 만든거라 유심히 보진마;;

대충봐;;

자판기.zip



저작자 표시 비영리 변경 금지
신고

'JAVA > Java_DataBase' 카테고리의 다른 글

Spring API  (0) 2013.10.21
빈생성 및 사용  (0) 2013.10.21
DI 의존성 주입.  (0) 2013.10.15
IS-A와 HAS-A  (0) 2013.10.11
SPRING TOOL SUITE 설치하기  (0) 2013.10.01
mysql 설치 및 DATABASE생성  (0) 2013.09.28

IS-A와 HAS-A

JAVA/Java_DataBase 2013.10.11 11:59

IS - A

상속 관계를 지칭

창은 무기이다(IS-A) 그래서 창은 무기를 상속해야 한다.




 <Interface>

 Weapon

 attack()

 

interface 상속


Spear 

 attack()



Has-A

구성과 집합을 지칭.

유닛은 무기를 가지고있다(Has-A). 그래서 유닛은 무기 객체로 구성될 수 있다.


 <Interface>

 Weapon

 attack()

 

interface 상속


Spear 

 attack()


Spear를 상속 받음


unit 

클래스변수 

 메소드 ...


저작자 표시 비영리 변경 금지
신고

'JAVA > Java_DataBase' 카테고리의 다른 글

빈생성 및 사용  (0) 2013.10.21
DI 의존성 주입.  (0) 2013.10.15
IS-A와 HAS-A  (0) 2013.10.11
SPRING TOOL SUITE 설치하기  (0) 2013.10.01
mysql 설치 및 DATABASE생성  (0) 2013.09.28
버블정렬  (0) 2013.09.16


티스토리 툴바