Spring(1)


スプリングとは?


JAvaのWebフレームワークは、java言語に基づいて使用されます.

フレームワークとは?


プログラム設計では予め構築されたフレームワークである.
常用機能を集めたクラスの集まりです.

スプリングフィーチャー


  • 依存注入(DI):プログラムコンポーネント間の依存構造を外部ファイルで定義します.
    プロファイルが分離されているため、メンテナンスが容易であり、各コンポーネント間の結合性が低下します.
    ex)JavaでOracleを使用します.

  • 反転制御(IoC)
    開発者によるオブジェクトの作成と消滅
    IoCは開発者によってオブジェクトのライフサイクルを管理するのではなく,オブジェクトの作成と消滅の代わりにスプリングによって管理される.
    開発者ではなくスプリングに制御権がある

  • 観点に向けたプログラミング(AOP)
    ログ、トランザクション、セキュリティなど複数のモジュールの共通機能を別々に管理できます
    これは再利用性を高めるプログラミングテクニックです.

  • POJOメソッド
    Java EEを使用するよりも、既存のライブラリをサポートする方が簡単で、オブジェクトが軽い
  • スプリングアイテムの作成



    springmvcプロジェクトの選択

    に命名
    そしてPOMxmlで複数の設定を行う

    pom.xml


    mavenの構築情報ファイル、プロジェクト管理と構築に必要な環境設定、依存性管理などの情報を記述する

    maven


    ここで、MavenはJavaプロジェクトを管理するツールで、ライブラリをxmlに自動的にダウンロードしたり、
    審査

    lombok、hikari、mybatisなど複数のライブラリを追加しました.

  • lombok-javaでの繰返し方法は、アシスタントを使用して自動的に作成されるライブラリです.
    ex)getter、setter、ジェネレータ

  • hikaricp-jdbcはデータベース接続プールを管理する方法で、必要に応じてデータベースに接続すると時間がかかるので、Webアプリケーションを実行しながら、データベースとの接続に予め設定しておきます.

  • mybatis-oracleの制御を簡単に支援

  • KR->ボード->マッパーフォルダを作成し、TimeMapperを使用します.xmlファイルを生成します.
    
    <!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    TimeMapper.xmlに上のコードを追加
    これはmybatisの有効性をチェックするコードのようです.

    src/test/javaフォルダ
    kr.board.マッピングパッケージの作成後
    TimeMapperインタフェースの生成

    gettime 3メソッドの生成

    root-context.xml設定

    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xsi:schemaLocation="http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
    		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
    		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
    
    	<!-- Root Context: defines shared resources visible to all other web components -->
      <!-- [DB 관련 설정 : DB 관련 정보를 커넥션 풀 객체에 담는 설정]-->
      <!-- HikariConfig 빈 등록 -->
    	<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
         
          <!--변수 설정: property 태그 사용, name="변수 이름" value = "저장 값" -->
    		<property name="driverClassName"
    			value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
    		<property name="jdbcUrl"
    			value="jdbc:log4jdbc:oracle:thin:@localhost:1521:XE"></property>
    
    		<property name="username" value="admin"></property>
    		<property name="password" value="1234"></property>
    	</bean>
    	
      	<!-- DataSource 등록: 데이터베이스의 정보들을 포장하고있다-->
    	<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"
    		destroy-method="close">
          <!-- 생성자를 통한 의존성 주입-->
    		<constructor-arg ref="hikariConfig">
    
    		</constructor-arg>
    
    	</bean>
    
         <!--마이바티스 주요 객체 sessionFactory클래스 빈등록 -->
    	<bean id="sqlSessionFactory"
    		class="org.mybatis.spring.SqlSessionFactoryBean">
          <!-- setter를 통한 의존성 주입 -->
    		<property name="dataSource" ref="dataSource"></property>
    
    	</bean>
      <!-- 컴포넌트 자동 스캔 명령 -->
      
    	<mybatis-spring:scan base-package="kr.board.mapper" />
    	
    
    </beans>
    
    root-context.xmlは、mvc設定に関連する様々な処理を処理するプロファイルです.
    DAO、VO、サービスなどのファイルの使用方法は、空(オブジェクト)を管理するドキュメントです.
    ダウンロードライブラリを使用する場所で、必要に応じてオブジェクトを使用し、このドキュメントのbeanタグを使用して空の登録と注入を行う方法です.
    viewに関連しないオブジェクトを定義する
    Service.Repository、DBなどのビジネスロジックに関する設定を提供

    root-contextでチェックする必要があります

    TimeMapperTestクラスの作成
    
    package kr.board.persistence;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    import kr.board.mapper.TimeMapper;
    import lombok.Setter;
    import lombok.extern.log4j.Log4j;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
    @Log4j
    
    public class TimeMapperTests {
    	@Setter(onMethod_ = @Autowired) //setter에서 사용된 onmethod는 setTimeMapper에 @Autowired를 추가해준다 lombok으로 생성된 클래스에 대한 정보는 이클립스를 통해 확인할 수 있다
    	private TimeMapper timeMapper;
    
    	@Test
    	public void testGetTime3() {
    		log.info("xml 이용 : " + timeMapper.getTime3());
    		
            
    // timeMapper : 인터페이스
    // getTime3 : 메소드 선언.
    // 인터페이스를 implements 받아서 자식 클래스를 생성하고 메소드를 오버라이드 하는 처리를
    // 스프링 컴파일러가 자동으로 처리.
    // getTime3 매칭되는 xml 파일의 mybatis 값을 읽어서 결과를 리턴.
    
    	}
    
    }
    

    junit


    JUnitライブラリを使用します.
    JUnitライブラリは、プロジェクト全体を駆動せずにコードテストを行うことができるライブラリです.
    テストコードはsrc/test/java、resourcesフォルダで使用できます

  • @Test
    junitでは、各テストが相互に影響しないように、テストを実行する方法を指定します.
    独立実行にあこがれる

  • @Ignore
    テストを実行しない
  • @Before/@After
    テストメソッドの実行前と実行後のメソッドの選択
    @BeforeClass/@AfterClass
    各メソッドではなく、このクラスで1回のみ実行されるメソッドで、テストメソッドの数に関係なく1回のみ実行されます.

    Spring-Test


  • @RunWidth(SpringJUnit4ClassRunner.class)
    Junitの機能を拡張してApplicationContextを作成および管理
    テスト用にスプリングのコア機能コンテナオブジェクトを生成できると考えられる.

  • @ContextConfiguration(location="ファイルの場所")
    コンテナを追加するのではなく、コンテナで使用するためにbeanを登録するxmlファイルを指定するスプリングシート設定ファイルの場所を指定できます.@RunWith操作は、コンテナを作成することを意味しますが、どのファイルを参照するか分からないため、操作の説明を同時に書く必要があります.

  • @Autowired
    スプリングに使用されるように、自動的に依存注入を行う

  • kr.board.domainパッケージを作成します.
    BoardVOクラスファイルの作成
    BoardVOは表の欄の構造と値を反映する

    @Dataはlombokのアシスタントで、getter、setter、equals、toStringなどを自動的に生成します
    BoardMapperは、src/main/resourcesフォルダのkr/board/mapperフォルダにあります.xmlの作成
    BoardMapper.xmlはクエリー操作用のxmlファイルです
    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE mapper
     PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="kr.board.mapper.BoardMapper">
    <select id="getList" resultType="kr.board.domain.BoardVO">
    <![CDATA[
    select * from tbl_board where bno > 0
    ]]>
    <!-- xml에서 <> 에 대한 잘못된 해석을 방지. -->
    </select>
    </mapper>
    
    cdata는 해당 영역을 단순한 문자로 인식한다
    
    src/main/javaのkr/board/mapperパッケージの下にBoardmapperがあります.Javaインタフェースの生成
    
    package kr.icia.mapper;
    import java.util.List;
    import kr.icia.domain.BoardVO;
    public interface BoardMapper {
    
    public List<BoardVO> getList();
    }
    
    src/test/javaのkr.board.Mapperパッケージの下にあるBoardMapper Tests.Javaで
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
    @Log4j
    public class BoardMapperTests {
    @Setter(onMethod_ = @Autowired)
    private BoardMapper mapper;
    @Test
    public void testGetList() {
    mapper.getList().forEach(board -> log.info(board));
    // 향상된 for : 배열과 배열 1개를 담을 변수
    // 람다식 : -> 를 기준으로 좌항은 전달값 , 우항은 처리
    // 목록은 게시물 여러개(배열), 그중 1개를 board 에 담은 다음에
    // 해당 내용을 로그로 출력. 배열 원소가 끝날때 까지 반복.
    }
    }
    

    https://yeahajeong.tistory.com/51
    https://codevang.tistory.com/259
    コメントサイト