# Spring10

제로·2023년 1월 22일
0

Spring

목록 보기
10/18

1. 스프링 backend단 컨테이너 설정 환경

  1. 스프링 backend단은 다음과 같은 구조로 처리된다.
    Controller <==> Service <==> Dao <==> DB서버 연동
  2. 요청값을 받은 WAS는 web.xml과 front controller단을 처리하여 이와 연관관게가 있는 컨테이너를 거쳐 controller단에서 상호작용을 처리한다.
  3. 위 객체들은 컨테이너에서 메모리를 로딩한 후 실행된다.
  4. 그리고, Autowired옵션에 의해서 객체들은 필드에 선언하여 연관관계를 가지고 처리된다.
  5. Database의 경우는 보통 서버마다 환경설정(ip, port, sid, 계정, 비번)을 Dao에서 처리할 때, 컨테이너에서 설정하는 경우가 많다
    그래서, autowired하기보다 컨테이너에서 클래스로 선언하여, 위에 필요한 속성값을 처리해주는 경우가 많다.(연결객체)
  6. 그 외에서 컨테이너에 올려져 있다는 가정하에 호출하여 의존성 자동 주입 연결하여 사용하는 경우가 많다.

2. 가상 환경 설정

  • a01_diexp.backend : 호출할 패키지
  • DIExp21.java : 호출해서 테스트할 메인 화면
  • di21.xml : 컨테이너
@@ di21.xml : 호출할 패키지 설정
  <!-- 특정 패키지 annotaion에 해당하는 클래스 메모리 로딩 -->
  	<context:component-scan base-package="a01_diexp.backend">
  		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
  		<context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>
  		<context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
  	</context:component-scan>
   
   // 사용할 DB 정보 처리(driver,ip,port,sid,id,pass 등)
<bean id="dbCon" class="a01_diexp.backend.DB"
c:_0="oracle.jdbc.driver.OracleDriver" c:_1="localhost" c:_2="1521"
  		c:_3="xe" c:_4="scott" c:_5="tiger"/>  

-----------a01_diexp.backend 하위의 클래스들------------
@@ DB.java
	public class DB{ // 필요한 정보 변수 설정 및 생성자 생성
    	private static String driver;
        private static String ip;
        private static String port;
        private static String sid;
        private static String user;
        private static String pass; 
        
        Connection con=null;
		// 1. 메모리 로딩
            try {
                Class.forName(driver);
                //System.out.println("드라이버 로딩 성공");
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                System.out.println("드라이버 에러:"+e.getMessage());
            }
            // 2. 연결정보 처리.
            String info = "jdbc:oracle:thin:@"+ip+":"+port+":"+sid;
            con = DriverManager.getConnection(info,user,pass);
            //System.out.println("연결 성공");
            return con;
    }
    
@@ A06_PerparedDao.java : DB처리할 자바클래스

	@Repository
    public class A06_PareparedDao implements A03_Dao {
    	public List<Dept> getDeptList(Dept sch){
        	해당 메서드 처리할 내용
            return list;
        }
    }

@@ Dao.java : A06_PerparedDao.java을 상속받은 인터페이스
	
    public interface A03_Dao {
    	// 서비스에서 사용할 메서드 
    	public List<Dept> getDeptList(Dept sch); 
    }

@@ Service.java

	@Service
    public class A02_Service {
      @Autowired
      private A03_Dao dao;
     	
        // 서비스단에서 자바 로직처리
     	public List<Dept> getDeptList(Dept sch){
		if(sch.getDname()==null) sch.setDname("");
		if(sch.getLoc()==null) sch.setLoc("");
		return dao.getDeptList(sch);
		};
     
     }
 
 @@ Controller.java
 
 	@Controller
    public class A01_Controller {

      @Autowired
      private A02_Service service;
      
      // main java파일에서 출력할 내용
      public void getDeptList(Dept sch){
		List<Dept> dlist = service.getDeptList(sch);
		if(dlist!=null && dlist.size()>0) {
			for(Dept d:dlist) {
				System.out.print(d.getDeptno()+"\t");
				System.out.print(d.getDname()+"\t");
				System.out.print(d.getLoc()+"\n");
			}
		}else {
			System.out.println("검색된 부서정보가 없습니다.");
		}
	};
}
 -----------------------------------------------------

@@ DIExp21.java : 처리된 내용을 호출할 main 화면

public static void main(String[] args) {
	String path="a01_diexp\\di21.xml"; // 컨테이너 호출
    GenericXmlApplicationContext ctx = new GenericXmlApplicationContext(path);
    // 컨트롤러 호출
    A01_Controller con = ctx.getBean("a01_Controller",A01_Controller.class);
 	con.getDeptList(new Dept());
	System.out.println("종료");
	ctx.close();
}
 

 	

출력된 부서정보 DB 테이블 정보

profile
아자아자 화이팅

0개의 댓글

관련 채용 정보