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
テストを実行しない
テストメソッドの実行前と実行後のメソッドの選択
@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
コメントサイト
Reference
この問題について(Spring(1)), 我々は、より多くの情報をここで見つけました https://velog.io/@jinwoo2025/Backend-Spring1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol