【初心者向け/ITスクール56日】Spring Maven
はじめに
今日は、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