當前位置:首頁 » 雲伺服器 » springboot搭建http伺服器

springboot搭建http伺服器

發布時間: 2022-08-15 00:05:50

❶ 如何構建spring boot

Spring Boot充分利用了javaConfig的配置模式以及「約定優於配置」的理念,能夠極大的簡化基於Spring
MVC的Web應用和REST服務開發。

Spring
4倡導微服務的架構,針對這一理念,近來在微博上也有一些有價值的討論,如這里和這里。微服務架構倡導將功能拆分到離散的服務中,獨立地進行部署,Spring
Boot能夠很方便地將應用打包成獨立可運行的JAR包,因此在開發模式上很契合這一理念。目前,Spring
Boot依然是0.5.0的里程碑版本,因此相關的文檔尚不完善,本文將會以一個簡單的樣例來介紹基於這個項目的開發過程。

要Spring
Boot進行功能開發,需要使用Gradle或者Maven作為構建工具。在本例中,我們會使用Eclipse和Maven插件進行開發。要使用Spring
Boot,首先創建一個Maven工程,並修改Maven主要的配置文件pom.xml,如下所示:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>0.5.0.M7</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring3</artifactId>
</dependency>
</dependencies>

<properties>
<start-class>com.levin.Application</start-class>
</properties>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

<repositories>
<repository>
<id>spring-milestone</id>
<url>http://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>

<pluginRepositories>
<pluginRepository>
<id>spring-milestone</id>
<url>http://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>

在上面的配置中,需要將工程的parent設置為spring-boot-starter-parent,並添加對spring-boot-starter-web的依賴,這樣我們就無需設置各個依賴項及其版本信息了。並且在構建中要聲明使用spring-boot-maven-plugin這個插件,它會對Maven打包形成的JAR進行二次修改,最終產生符合我們要求的內容結構。

在我們的應用中將要發布一個REST服務,顯示一個基本的用戶信息,首先定義一個簡單的模型類:

package com.levin;

public class Person {
private String name;
private String email;

public Person(String name, String email) {
this.name = name;
this.email = email;
}

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}

}

接下來,我們需要聲明一個Spring MVC的Controller,響應對實體的請求:
@Controller
public class ShowPersonController {
@RequestMapping("/showPerson")
public @ResponseBody Person showPerson() {
return new Person("levinzhang","[email protected]");
}
}

這個類與我們在使用Spring MVC定義Controller時並無任何差別。接下來,我們需要聲明一個主類啟動這個應用程序:
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}

這個類的main方法中使用了SpringApplication幫助類,並以Application這個類作為配置來啟動Spring的應用上下文。在這個類中使用了ComponentScan以及EnableAutoConfiguration註解,其中ComponentScan註解會告知Spring掃描指定的包來初始化Spring
Bean,這能夠確保我們聲明的Bean能夠被發現。EnableAutoConfiguration將會啟動自動配置模式,在我們的配置中會將對Tomcat的依賴級聯進來,因此在應用啟動時將會自動啟動一個嵌入式的Tomcat,因為在樣例中使用了Spring
MVC,所以也會自動注冊所需的DispatcherServlet,這都不需要類似web.xml這樣的配置。

在Eclipse中要運行這個應用的話,可以直接以Java
Application的形式來運行這個main函數,此時會啟動應用,我們在瀏覽器中可以看到如下的運行效果,這就是我們想要的REST服務:

在開發調試完成之後,可以將應用打成JAR包的形式,在Eclipse中可以直接使用Maven插件的package命令,最終會形成一個可運行的JAR包。我們使用java
–jar命令就可以運行這個JAR包了。所呈現出的效果與在調試期是一樣的。現在看一下這個JAR包解壓後的目錄結構:

這個JAR包與傳統JAR包的不同之處在於裡面有一個名為lib的目錄,在這個目錄中包含了這個簡單應用所依賴的其他JAR包,其中也包含內置的嵌入式Tomcat,正是使用它,才能發布服務和訪問Web資源。除了我們編寫的源碼編譯形成的CLASS以外,在org目錄下還有許多Spring所提供的CLASS,正是依賴這些CLASS,才能夠載入位於lib目錄下JAR中的類。這樣的載入機制與在OSGi
bundle中聲明Bundle-Classpath很類似,不過在OSGi中會由容器來負責載入指定路徑下的類。這大致闡述了這樣一個JAR包能夠發布服務的原因。

如果我們想要使用HTML、JSP等Web資源的話,在Controller中直接返回對應的視圖就可以了。

如果我們想要將這個JAR包轉換成可以在Servlet容器中部署的WAR的話,就不能依賴於Application的main函數了,而是要以類似於web.xml文件配置的方式來啟動Spring應用上下文,此時我們需要聲明這樣一個類:
public class HelloWebXml extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}

}

這個類的作用與在web.xml中配置負責初始化Spring應用上下文的監聽器作用類似,只不過在這里不需要編寫額外的XML文件了。

如果要將最終的打包形式改為WAR的話,還需要對pom.xml文件進行修改,除了需要將packaging的值修改為war以外,還需要對依賴進行適當的配置(這一部分在Spring
Boot的樣例和文檔中均未提及,提醒大家注意):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>

在這里需要移除對嵌入式Tomcat的依賴,這樣打出的WAR包中,在lib目錄下才不會包含Tomcat相關的JAR包,否則將會出現啟動錯誤。另外,在移除對Tomcat的依賴後,為了保證編譯正確,還需要添加對servlet-api的依賴,因此添加如下的配置:

<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>7.0.42</version>
<scope>provided</scope>
</dependency>

在這里將scope屬性設置為provided,這樣在最終形成的WAR中不會包含這個JAR包,因為Tomcat或Jetty等伺服器在運行時將會提供相關的API類。此時,執行mvn
package命令就會得到一個WAR文件,我們可以直接將其放到Tomcat下運行(需要7.0.42版本以上)。

以上介紹了基於Spring Boot開發應用的過程,目前它的文檔尚不完善,但是在GitHub上有不少的樣例,包括與Spring
Data集成訪問資料庫(關系型以及非關系型)、安全、WebSocket等,讀者感興趣可以下載運行,需要注意的是有些樣例中使用的是0.5.0.M6版本,這個版本有問題,運行時會出錯,建議手動修改為0.5.0.M7或快照版本。

基於以上的介紹,希望讀者能夠對Spring
Boot這個新項目有所了解。它簡化了JAR包管理和相關基礎設施環境的配置,能夠幫助我們快速開發Web應用或構建REST服務,希望它能夠盡快完善成熟,更多地用於實踐,提升開發效率。

❷ 新手,springBoot項目寫完之後,別人怎麼通過http的網址訪問到我的網址,也就是如何上線,網址已經購買好了

將項目打包發布到伺服器就可以了啊

❸ 如何使用spring boot快速構建後台

Spring Boot建議使用Maven或Gradle,本文以Maven為例。
首先創建一個一般的Maven項目,有一個pom.xml和基本的src/main/java結構。
在pom.xml中寫上如下內容:
<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.github.abel533</groupId>
<artifactId>spring-boot</artifactId>
<version>1.0-SNAPSHOT</version>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.0.RELEASE</version>
</parent>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.5.RELEASE</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>

首先是增加了<parent>
增加父pom比較簡單,而且spring-boot-starter-parent包含了大量配置好的依賴管理,在自己項目添加這些依賴的時候不需要寫<version>版本號。
使用父pom雖然簡單,但是有些情況我們已經有父pom,不能直接增加<parent>時,可以通過如下方式:
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.2.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

java.version屬性
上面pom.xml雖然沒有出現這個屬性,這里要特別提醒。
Spring默認使用jdk1.6,如果你想使用jdk1.8,你需要在pom.xml的屬性裡面添加java.version,如下:
<properties>
<java.version>1.8</java.version>
</properties>123123

添加spring-boot-starter-web依賴
Spring通過添加spring-boot-starter-*這樣的依賴就能支持具體的某個功能。
我們這個示例最終是要實現web功能,所以添加的是這個依賴。
更完整的功能列表可以查看:using-boot-starter-poms
添加spring-boot-maven-plugin插件
該插件支持多種功能,常用的有兩種,第一種是打包項目為可執行的jar包。
在項目根目錄下執行mvn package將會生成一個可執行的jar包,jar包中包含了所有依賴的jar包,只需要這一個jar包就可以運行程序,使用起來很方便。該命令執行後還會保留一個XXX.jar.original的jar包,包含了項目中單獨的部分。
生成這個可執行的jar包後,在命令行執行java -jar xxxx.jar即可啟動項目。
另外一個命令就是mvn spring-boot:run,可以直接使用tomcat(默認)啟動項目。
在我們開發過程中,我們需要經常修改,為了避免重復啟動項目,我們可以啟用熱部署。
Spring-Loaded項目提供了強大的熱部署功能,添加/刪除/修改 方法/欄位/介面/枚舉 等代碼的時候都可以熱部署,速度很快,很方便。
想在Spring Boot中使用該功能非常簡單,就是在spring-boot-maven-plugin插件下面添加依賴:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.5.RELEASE</version>
</dependency>
</dependencies>12345671234567

添加以後,通過mvn spring-boot:run啟動就支持熱部署了。
注意:使用熱部署的時候,需要IDE編譯類後才能生效,你可以打開自動編譯功能,這樣在你保存修改的時候,類就自動重新載入了。
創建一個應用類
我們創建一個Application類:
@RestController
@EnableAutoConfiguration
public class Application {

@RequestMapping("/")
String home() {
return "Hello World!";
}

@RequestMapping("/now")
String hehe() {
return "現在時間:" + (new Date()).toLocaleString();
}

public static void main(String[] args) {
SpringApplication.run(Example.class, args);
}

}

注意:
Spring Boot建議將我們main方法所在的這個主要的配置類配置在根包名下。

❹ 如何搭建spring boot

Helloworld使用傳統的springmvc,需要配置web.xml,applicationContext.xml,然後打包為war在tomcat中運行,而如果使用springboot,一切都變得簡單起來了。下面使用Maven來創建springboot的webapp工程pom.xml4.0.0org.springframeworkgs-spring-boot0.1.0org.springframework.bootspring-boot-starter-parent1.3.3.RELEASEorg.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-testtest1.8org.springframework.bootspring-boot-maven-;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;@{@RequestMapping("/")publicStringindex(){return"GreetingsfromSpringBoot!";}}其中:@RestController表示使用springmvc來接收request請求@RequestMapping映射到主頁當請求返回的時候,是純文本,那是因為@RestController是由@Controller和@ResponseBody組成Application@{publicstaticvoidmain(String[]args){ApplicationContextctx=SpringApplication.run(Application.class,args);System.out.println("Let':");}}其中:@SpringBootApplication代表了其有四個註解組成:@Configuration,@EnableAutoConfiguration,@EnableWebMvc,@ComponentScan在SpringApplication.run中會去自動啟動tomcatrun方法返回上下文,在這個上下文中可以拿到所有的bean沒有一行配置代碼、也沒有web.xml。基於SpringBoot的應用在大多數情況下都不需要我們去顯式地聲明各類配置,而是將最常用的默認配置作為約定,在不聲明的情況下也能適應大多數的開發場景。總體而言springboot是對javawebapp開發的簡化單元測試@RunWith(SpringJUnit4ClassRunner.class)@(classes=MockServletContext.class)@{privateMockMvcmvc;@Beforepublicvoidbefore()throwsException{mvc=MockMvcBuilders.standaloneSetup(newHelloController()).build();}@Afterpublicvoidafter()throwsException{}/****Method:index()**/@TestpublicvoidtestIndex()throwsException{//TODO:Testgoesheremvc.perform(MockMvcRequestBuilders.get("/").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andExpect(content().string(equalTo("GreetingsfromSpringBoot!")));}}建立restfullweb伺服器接上,使用srpingboot建立web伺服器就非常簡單了,首先建立一個pojo類publicclassGreeting{privatefinallongid;privatefinalStringcontent;}然後使用control來handlehttp請求@{="Hello,%s!";privatefinalAtomicLongcounter=newAtomicLong();@RequestMapping("/greeting")publicGreetinggreeting(@RequestParam(value="name",defaultValue="World")Stringname){returnnewGreeting(counter.incrementAndGet(),String.format(template,name));}}其中:@RequestParam表明了參數要求,如果要必填則設置required=true返回是一個對象,會被自動轉換為json當我們訪問:greeting時候返回{"id":1,"content":"Hello,World!"}greeting?name=User時候返回{"id":2,"content":"Hello,User!"}資料庫訪問另一個非常常用的問題。在傳統開發中,我們需要配置:類路徑上添加數據訪問驅動實例化DataSource對象,指定url,username,password注入JdbcTemplate對象,如果使用Mybatis,還要配置框架信息下面一個例子講述用用springboot來代替。數據訪問層我們將使用SpringDataJPA和Hibernate(JPA的實現之一)。開始之前先介紹兩個概念springdata為了簡化程序與資料庫交互的代碼,spring提供了一個現成的層框架,spring家族提供的spring-data適用於關系型資料庫和nosql資料庫;例如SpringDataJPA,SpringDataHadoop,SpringDataMongoDB,SpringDataSolr等;具體的可以參考官網:.mysql.jdbc.Driverspring.datasource.password=xxx#SpecifytheDBMSspring.jpa.database=MYSQL#.jpa.show-sql=true#Hibernateddlauto(create,create-drop,update)spring.jpa.hibernate.ddl-auto=update#Namingstrategyspring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy#)spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect其中,hibernate的ddl-auto=update配置表名,資料庫的表和列會自動創建寫下實體類:@Entity@Table(name="student")publicclassStudent{@Id@GeneratedValue(strategy=GenerationType.AUTO)privatelongid;@NotNullprivateStringname;privateStringage;}@Entity,說明被這個註解修飾的類應該與一張資料庫表相對應,表的名稱可以由類名推斷,當然了,也可以明確配置,只要加上@Table(name="books")即可。需要特別注意,每個Entity類都應該有一個protected訪問級別的無參構造函數,用於給Hibernate提供初始化的入口。@Idand@GeneratedValue:@Id註解修飾的屬性應該作為表中的主鍵處理、@GeneratedValue修飾的屬性應該由資料庫自動生成,而不需要明確指定。@ManyToOne,@ManyToMany表明具體的數據存放在其他表中,在這個例子里,書和作者是多對一的關系,書和出版社是多對一的關系,因此book表中的author和publisher相當於數據表中的外鍵;並且在Publisher中通過@OneToMany(mapped="publisher")定義一個反向關聯(1——>n),表明book類中的publisher屬性與這里的books形成對應關系。@Repository用來表示訪問資料庫並操作數據的介面,同時它修飾的介面也可以被componentscan機制探測到並注冊為bean,這樣就可以在其他模塊中通過@Autowired織入。:@{ListfindByLastName(StringlastName);}詳細的可以看springjpa的具體介紹。最後使用:@{@AutowiredprivateStudentDao;@RequestMapping("/get-student-counts")@(){Liststudents=(List).findAll();returnString.format("%d",students.size());}}主要一點是:我在CustomerRepository實現中每天添加方法:findByLastName,@Autowired就會一直報錯。

熱點內容
mf90pos機密碼是什麼 發布:2024-05-04 22:24:04 瀏覽:749
編譯預處理和函數區別 發布:2024-05-04 22:16:49 瀏覽:430
java復選框 發布:2024-05-04 22:13:24 瀏覽:528
安卓怎麼玩頁游 發布:2024-05-04 22:03:17 瀏覽:141
編譯器後面的代碼消失 發布:2024-05-04 22:02:11 瀏覽:60
openwrt編譯ipk 發布:2024-05-04 22:00:25 瀏覽:829
管理雲伺服器 發布:2024-05-04 21:36:31 瀏覽:552
給linux虛擬機傳文件 發布:2024-05-04 21:36:28 瀏覽:313
加密手機在哪裡 發布:2024-05-04 21:18:59 瀏覽:191
掃雷電腦配置低怎麼辦 發布:2024-05-04 21:07:37 瀏覽:821