spring 学习 (1) 一个REST简单的例子

本文介绍了如何使用Spring Boot创建一个简单的REST应用,并分享了在搭建过程中遇到的问题及解决方法,包括开发环境配置、代码实现、构建工具的选择等。

今天希望能用spring 来做一个hello world 的REST 应用,体会一下。 

- 基本上是按照spring 官网的例子做的。 

1 环境的建立

2 简单的代码

3 如何构建。 

4 测试

5 其他 -STS导入

6 下一步,以及注意事项

-----------------------------------------

1 环境

- STS

本来是已经装好了eclipse, 为了体会STS开发的感觉,于是做升级, 但是总是有问题。 于是干脆下载了一个STS 的4.3 的版本https://spring.io/tools/sts/all

发现web, eclipse 都集成了。 这么方便 何乐而不为呢 ^_^

- Gradle

没有用过, 也想尝试一下这个号称比maven 还新的构建工具的优劣, 所以也安装了。 

下载包, 然后解压缩, 再设置环境变量。 测试 gradle -v 就可以了 

可以参考 http://my.oschina.net/moziqi/blog/308842

- maven

maven 也没有怎么用过, 只是知道他确实比较方便,由于包的依赖可以再pom 中设置自动下载。 但是和ant 还是有不少区别, 尤其是是java 项目的代码结构上。 

下载了zip 的版本。 https://maven.apache.org/download.cgi?Preferred=ftp://mirror.reverse.net/pub/apache/

然后同样解压缩, 设置环境变量。 测试 mvn -v 就可以了

 -- 安装maven 遇到问题, mvn -v 有support exception。 一看就知道是java 版本问题。 直接下载了java 1.7 然后设置环境变量。 再测试, 就没有问题了。 


2 简单的代码

首先创建文件夹 src/main/java/hello. 

Greeting.java

package hello;
public class Greeting {
    private final long id;
    private final String content;
    public Greeting(long id, String content) {
        this.id = id;
        this.content = content;
    }
    public long getId() {
        return id;
    }
    public String getContent() {
        return content;
    }
}


Application.java

package hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}


GreetingController.java

package hello;
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class GreetingController {
    private static final String template = "Hello, %s!";
    private final AtomicLong counter = new AtomicLong();
    @RequestMapping("/greeting")
    public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
        return new Greeting(counter.incrementAndGet(),
                            String.format(template, name));
    }
}


注意

1) 如果加代码。 

package 是hello。 报错。 发现问题是source 的问题。 就是项目的source 不是用的src main java 而是src

2)  GreetingController

发现spring 的都无法调用  语法错误。 猜测如果做了build 应该就会download了。 

- 那么看起来maven 写好了需要先buld 一下? 


3 构建过程 

1) mvn spring-boot:run - 过程可能比较久, 因为要download 依赖的包。 

然后就可以测试了 wow

你可以看到已经启动了 

    2015-05-09 12:23:05.491  INFO 23532 --- [           main] hello.Application

                       : Started Application in 8.026 seconds (JVM running for 10.025)

浏览器 http://localhost:8080/greeting

你可以看到显示:

    {"id":1,"content":"Hello, World!"}

2) 方式2 mvn clean package

不明白这时候还在download 什么,


3) gradle

./gradlew bootRun


4) ./gradlew build  -- 这样可以先build 出jar 然后

java -jar build/libs/gs-rest-service-0.1.0.jar


4 测试 

浏览器 输入 http://localhost:8080/greeting?name=user

{"id":1,"content":"Hello, user!"}


5 其他

1) 之前自己也同样的操作, 以为15分钟就可以搞定, 但是遇到了很多问题。 

- jdk 版本问题, 应该是用1.7. 如果是1.6 就是unsupported 

- 无法执行jar, 因为自己没有绑定tomcat。 这个目前是通过创建dynamic web service 来做的。 绑定了tomcat。 不知道原理以及是否有别的方式。 


2) Spring 官网的指南做的非常人性化。 可以STS 直接导入。 

但是总觉得太方便了隐藏了很多东西。 最好还是自己手把手做。 最后可以考虑尝试一下就好了。 

过程呢, 就是就是new 一个工程, import from spring guide。 列表中选择rest 这个。 

也可以选择是gradle 还是maven 还有是初始版的还是最终版的。 点击完成, 就全建好了。 


6 Next

1) Ioc 使用一下

2) spring mvc 的例子。 


TODO

1 pom 还看不懂 需要学习一下 

有意思, spring-boot-starter-web 里面

Effective POM = Your POM + (grand)parent POMs. The Effective POM does not exist on your filesystem per se, it's generated on-the-fly whenever your run a Maven build

- 那么看起来maven 写好了需要先buld 一下? 

2  pojo

javabean

EJB bean

- 无法执行jar, 因为自己没有绑定tomcat。 这个目前是通过创建dynamic web service 来做的。 绑定了tomcat。 不知道原理以及是否有别的方式。 





转载于:https://my.oschina.net/sizhe/blog/412621

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值