🎃

【初心者向け/ITスクール56日】Spring Maven

2023/10/04に公開

はじめに

今日は、ITスクールに通った56日目の日で、今日学んだ知識を記事にシェアしたいと思います。本記事が、ITを勉強を始めた方々にもロードマップになればいいと思います。

いよいよJavaフレームワーク、Springについてん勉強しました。
SpringBootより設定しなければならないことが多かったので、相当難しかったです。

Spring

Springの仕組み

Java Resources

JavaのController,Modelなどがある領域

Java領域 (src/main/java): Javaコードを作成し、保管します。
Resource領域 (src/main/resources) : MyBatis(XML), DB(SQL), ...などを保存します。

-src -main -wepapp -WEB-INF

ViewなどWebの重要なファイルがあるフォルダー
cf) META-INFはJava関連の設定があるフォルダー

-views

html,jspがあるViewの領域

web.xml : プログラム実行時の設定ファイル。
クライアントのRequestを処理する [DispatcherServlet],
WEB APPの単位設定をロードする [ContextLoaderListener],
などが存在します。

-spring

root-context.xmlが存在し、workspace関連の設定があります。

-spring -appServlet

servlet-context.xmlが存在し、プロジェクトの設定情報があります。


	<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
	<resources mapping="/resources/**" location="/resources/" />

	<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
	<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />
	</beans:bean>
	
	<context:component-scan base-package="com.hyon.oct043" />

pom.xml : 必要なライブラリをMavenから引っ張るxml.
build.gradleと同じ役割です。

主要アノテーション

@RequestMapping:要求に応じてどのコントローラー、どのメソッドが処理されるかをマッピングするために使用します。value:要求を受け取るアドレス(URL)を設定します。method:どの要求を受け取るかを設定します(GET、POST、PUT、DELETE、FETCHなど)。

@RequestParam:リクエストパラメータを設定します。

@Controller:Springのコントローラー、ビュー(画面、.jsp)を返すことが目的です!

@RestController:ビューに応答しないControllerの一部で、データ(xml、json)を返すことが目的です!Spring 4.x.xから提供されています。

@ResponseBody:JavaオブジェクトのHTTPリクエストボディのマッピングを担当し、RestController = @Controller + @ResponseBodyです。

@Service:ビジネスロジックを実行するクラスを示す際に使用します。ビジネスロジック(Business Logic):ユーザーには見えませんが、ユーザーが望む結果を正しく導き出すために書かれたコード(例:DAOでの機能)。

@Bean:開発者が直接制御できない外部ライブラリなどをBeanとして作成する際に使用します。

@Autowired:プロパティ、setter、コンストラクタで使用し、タイプに応じてBeanをインジェクションします。

@XmlRootElement/ @XmlElement:OXM(Object XML Mapping)を行うために使用され、特定のデータをXML形式で作成します。マーシャリング(Mashalling):XMLデータを特定のデータに変換します。アンマーシャリング(Unmashalling):XMLデータを特定のデータに変換します。

★Configuration★

Springの場合、クラスではなくxmlからconfig情報を修正します。
src -resourceフォルダからfile -> others -> spring ....confifu を得れば、<XML>でJava Beanを直接注入したり、設定情報を変更することが可能です。

<?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="d" class="com.hyon.oct042.dog.Dog"></bean>

  <bean id="d2" class="com.hyon.oct042.dog.Dog">
	<property name="name" value="개님"></property>
	<property name="age" value="40"></property>
  </bean>
	
  <bean id="d3" class="com.hyon.oct042.dog.Dog">
	<constructor-arg value="개느님"></constructor-arg>
	<constructor-arg value="999"></constructor-arg>
  </bean>	
</beans>

dは直接、beanタグを入力する方法で、d2はフィールド(<property>)、d3はコンストラクタから注入する方法です。下端のbeansというタブから設定することができます。

@RequestMapping(value = "/", method = RequestMethod.GET)
   public String home(Locale locale, Model model) {
		
		
 //oct042beans.xmlをトード
 

//1.設定ファイルからSpring Containerを生成し、xml Beanオブジェクトを生成し、管理するクラスします。(AbstractApplication)
AbstractApplicationContext aac = 
	    new ClassPathXmlApplicationContext("oct042beans.xml");
		
//2. JVM終了時に、AbstractApplicationContextを終了し、データーをdeleteします。
aac.registerShutdownHook();
		

//3. JavaBeanを生成し、getter/setterで情報を得ます。
	
`
	Dog d = aac.getBean("d",Dog.class); 
	System.out.println(d);
		
	Dog d2 = aac.getBean("d2",Dog.class);
	System.out.println(d2.getName());
	System.out.println(d2.getAge());
	System.out.println("--------------");
		
	Dog d3 = aac.getBean("d3",Dog.class);
	System.out.println(d3.getName());
	System.out.println(d3.getAge());
	System.out.println("--------------");
		
	
	//4. AbstractApplicationContextをclose()します。
	aac.close();
			
	return "home";
		
	}
   }

Collectionがある場合のConfiguration

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd   
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context-3.1.xsd"	
	>

xmlns:contextを追加し、schema/contextを追加します。
xmi:schemaLocationにhttp://www.springframework.org/schema/context , http://www.springframework.org/schema/context/spring-context-3.1.xsd"を追加します。

ListとMapのBeanに登録する方法

 <property name="friends">
	   	<list value-type = "java.lang.String">
	   		<value>창명성</value>
	   		<value>조현일</value>
	   	</list>
	   </property>
	   <property name="family">
	   	  <map key-type ="java.lang.String" value-type="java.lang.Integer">
	   	      <entry key="아버지" value="400"></entry>
	   	      <entry key="어머니" value="390"></entry>
	   	      <entry key="남동생" value="3"></entry>
	   	  </map>
	   </property>	
	

以上です!

Discussion