背景架構是真難入門啊!!!IDE的使用,環境的搭建,架構下載下傳,上手,每一步都惡心人。
花了整整兩天,才學會用idea,并且初步了解了maven(TM就是一個npm),然後跟着下載下傳了對應的jar包,搭建了一個簡單的servlet。
這裡暫時記錄一下遇到的坑。
首先,為什麼放棄Myeclipse?這個IDE隻能下破解版的,界面是真的醜,下載下傳的那些主題也特别僵硬。最重要的是,由于版本太低,隻能用低版本的jdk,經常報一個version 51***的error,隻能把jdk調到1,6,對應maven、spring都要調低版本,麻煩的很。
後來就嘗試換了idea,好在上手還算快,但是也有幾個巨坑:
1、idea中的project對應Myeclipse中的workspace,而module才是project,是以在建立一個project的時候,一定要在Project location再添加一個檔案夾

2、建立maven項目需要選準了
3、pom.xml中的依賴版本一定要注意jdk相容問題!!!!
4、記得将java檔案目錄設定為資源根目錄,右鍵檔案夾:
5、如果maven中配置了對應架構的依賴還是報錯:could not resolve symbol...直接File - Invalidate Cache,重新開機就好了
目前,我隻是寫了個超級簡單的servlet,目錄如圖:
基本上都是IDE幫我弄好了檔案夾,那個s是建立的,裡面的Servlet.java是寫的一個servlet類。web.xml中的mapping需要自己配置,IDE不會管的。
到現在還是沒明白怎麼開始用Spring,官網是很全,但是我暫時沒找到像HelloWorld之類的萌新入門案例。
總之一句話,寫代碼真是件簡單的事。
Two hours later...
絕望的我已經開始搜尋這個:
好在還真有超級超級簡單的案例,根據案例,建立一個弱智類HelloWorld:
package s;
public class HelloWorld{
private String message;
private String name;
public void setName(String name) { this.name = name; }
public void setMessage(String message){ this.message = message; }
public void getMessage(){ System.out.println("Your Message : " + message); }
public void printName(){ System.out.print("Name : " + name); }
}
然後在同一個包下建立了另外一個厲害類:
package s;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
obj.getMessage();
obj.printName();
}
}
這兩個類聯系起來需要靠一個xml的配置檔案,就像servlet類将servlet處理檔案與web請求聯系起來一樣,這裡建立一個beans.xml關聯兩個java類;
<?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="helloWorld" class="s.HelloWorld">
<property name="message" value="Hello World!"/>
<property name="name" value="春妹子"/>
</bean>
</beans>
(xml檔案的開頭竟然不支援縮進)
最後運作那個MainApp,結果如圖:
由于配置比較簡單,是以可以很簡單粗暴的去了解:
1、id作為一個辨別符去讓getBean方法進行擷取對應的類
2、class是一個路徑的完整映射,類似于servlet配置中的<servlet-class>
3、而property是執行個體化類後傳入的變量,name、value對應key與value
我是這樣了解的,配置了beans.xml後,所有bean中的class映射的類都将在初始化時被執行個體化并儲存在某個特殊的地方,儲存方式類似于Map,其實中key就是那個id。
可以通過context.getBean()方法擷取,傳入id可以得到對應的執行個體,傳回的大概是一個Object類型,是以需要進行強制類型轉換。
之後,我對代碼做了少許調整:
package s;
public class HelloWorld{
private String name;
private int uid;
public void setName(String name) { this.name = name; }
public void printName(){
System.out.println("Name : " + name + uid + "号");
uid++;
}
}
在類中加入了一個計數器,然後主函數代碼修改如下:
public class MainApp {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
ApplicationContext context2 = new ClassPathXmlApplicationContext("Beans.xml");
HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
HelloWorld obj2 = (HelloWorld) context2.getBean("helloWorld");
HelloWorld obj3 = (HelloWorld) context.getBean("helloWorld");
obj.printName(); // Name : 春妹子0号
obj.printName(); // Name : 春妹子1号
obj2.printName(); // Name : 春妹子0号
obj3.printName(); // Name : 春妹子2号
}
}
通過輸出可以判定這樣的事實:
1、每一個context儲存的類都是唯一的,可以簡單了解成單例
2、可以通過再次調用new Class***來擷取一個新的容器,并重新生成所有對應類
是以這就是傳說中的注入嗎?nice,nice,我也是了解spring架構的人了!
轉載于:https://www.cnblogs.com/QH-Jimmy/p/7832934.html