Spring MVC(3):サービス


maven>ojdbc 8を追加します.

java

private NoticeService noticeService;
    
public void setNoticeService(NoticeService noticeService) {
    this.noticeService = noticeService;
}

dispatcher-servlet.xml

<bean id="noticeService" class="com.newlecture.web.service.NoticeService" />
	 
<bean name="/notice/list" class="com.newlecture.web.controller.notice.ListController" >
	<property name="noticeService" ref="noticeService" />
</bean>
以上のように、コントローラオブジェクトは、サービスオブジェクトの設定を許可します.
xmlタグを表示すると、beanのnameタグはリクエストを発行するuriです.
idタグは内部参照の名前であることがわかります.
refタグターゲットが参照型の場合
property nameターゲットを設定します.
したがって,DIオブジェクトを受信したい場所にそのオブジェクトを含めるsetterが必要である.

胃は結合力が強い場合です
界面の多形性を利用して結合力を低減する


前に示したように、梱包後
public interface NoticeService {
   
   public List<Notice> getList(int page, String field, String query);
   int getCount() throws ClassNotFoundException, SQLException;
   int insert(Notice notice) throws ClassNotFoundException, SQLException;
   int update(Notice notice) throws ClassNotFoundException, SQLException;
   int delete(int id) throws ClassNotFoundException, SQLException;
   
}
インタフェース宣言
<bean id="noticeService" class="com.newlecture.web.service.jdbc.JDBCNoticeService" />
このコードにサービスオブジェクトを挿入し、挿入すればいいです.

jdbc設定情報の分離


ニューヨークと違って、私たちは近づきます.
https://mvnrepository.com/artifact/org.springframework/spring-jdbc/5.2.12.RELEASE
上にREALEASEと表記し、多く使用されているバージョンをインポート
依存性をpomに追加すると
Javaファイル検索DirverManagerDataSourceを開きます.
ではimportフルパッケージ名+クラス名xmlに追加
結果は以下の通りです.
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" ></property>
		<property name="url" value="jdbc:oracle:thin:@localhost:1521/xepdb1" ></property>
		<property name="username" value="philz" ></property>
		<property name="password" value="1234" ></property>
	</bean>

	<bean id="noticeService" class="com.newlecture.web.service.jdbc.JDBCNoticeService" >
		<property name="dataSource" ref="dataSource"></property>
	</bean>

xmlプロファイルを開く

dispatcher-servlet.xmlは、複数のxmlファイルに分割できます.
  <listener>
  	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>
  		/WEB-INF/spring/service-context.xml
  		/WEB-INF/spring/security-context.xml
  	</param-value>
  </context-param>
  
  <servlet>
  	<servlet-name>dispatcher</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>/WEB-INF/spring/servlet-context.xml</param-value>
  	</init-param>
  </servlet>
ContextConfigLocationにはxmlが1つしかありません.
そのためには、設定情報を別途読む必要があります.ContextLoaderListenerは、Tomcat/セッションの開始/終了時にイベントを読み出すクラスである
問題は、最初のリクエスト時に上記の情報がロードされるため、少し遅いことです.
  <servlet>
  	<servlet-name>dispatcher</servlet-name>
...
  	<load-on-startup>1</load-on-startup>
  	<async-supported>true</async-supported>
  </servlet>
このように変更すると、最初のリクエストではなく、Tomcatを同時に非同期でロードします.
数字1が複数のサーブレットの場合の優先順位