eclipse下第一个spring-boot

2018-01-22  本文已影响810人  liangxifeng833

eclipse下创建spring-boot参考文章http://blog.csdn.net/clementad/article/details/51334064

  1. 按着以上文章创建好后, 目录结构如下:


    image.png
  2. 以上HelloController.java是自己创建的内容是:
package com.lxf;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @RequestMapping(value="/hello", method=RequestMethod.GET)
    public String say()
    {
        return "spring boot hello world";
    }
}
  1. 在MyfirstSpringBootApplication文件中main方法右键->run as -> Spring Boot App,就可以把spring-boot启动, 也就意味着spring-boot中的tomcate会自动启动, 默认端口是8080, 注意如果有占用会启动失败;
  2. 启动成功后,在控制前会看到类似以下的提示,代表8080端口已启用
    image.png
    5.访问地址: http://localhost:8080/hello
    image.png

spring-boot的启动方式

  1. 在MyfirstSpringBootApplication文件中main方法右键->run as -> Spring Boot App. 关闭spring-boot,在控制前右上侧有红色的关闭按钮;
  2. 进入项目目录
cd ~/workspaceEE/myfirst-spring-boot/ 
mvn spring-boot:run
  1. 进入项目目录
cd ~/workspaceEE/myfirst-spring-boot/ 
mvn install
cd target

后会看到在target目录下多了一个 myfirst-spring-boot-0.0.1-SNAPSHOT.jar, 然后使用java命令启动

java -jar myfirst-spring-boot-0.0.1-SNAPSHOT.jar

属性配置

server: 
  port: 8089
  context-path: /gril
cupSize: B
age: 19
content: "cupSize = ${cupSize}, age = ${age}" //在配置文件中引用配置文件自身的属性

girl:  //定义公有属性,该配置需要新建 GirlProgerties.java类配合使用
  age: 199
  heigh: 19.99  
package com.lxf;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "girl") //该配置对应application.yml配置文件中的girl属性
public class GirlProgerties {
    private Integer age;
    private float height;
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public float getHeight() {
        return height;
    }
    public void setHeight(float height) {
        this.height = height;
    }   
}
package com.lxf;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
 * 获取application.yml属性内容
 * @author lxf
 */
@RestController
public class HelloController {
    @Value("${cupSize}")
    private String cupSize;
    @Value("${age}")
    private int age;
    @Value("${content}")
    private String content;
    @Autowired
    private GirlProgerties girlProgerties;
    @RequestMapping(value="/hello", method=RequestMethod.GET)
    public String say()
    {
        return cupSize + " " +age + content + girlProgerties.getAge();
    }
}
server: 
  port: 8088
  context-path: /gril
cupSize: A
age: 18
content: "cupSize = ${cupSize}, age = ${age}"

girl:
  age: 188
  heigh: 18.8  
spring: 
  profiles:
    active: develop
java -jar myfirst-spring-boot-0.0.1-SNAPSHOT.jar --spring.profiles.active=production
http://localhost:8088/gril/hello
http://localhost:8089/gril/hello

Controller的使用

package com.lxf;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@Controller
public class HelloController {
    @RequestMapping(value="/hello", method=RequestMethod.GET)
    public String say()
    {
        return "index";
    }
}

pom.xml添加依赖

        <!-- 配置模板 -->
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

在src/main/resources/templates中新增index.html

<h1>Hello Spring Boot</h1>

启动后访问: http://localhost:8088/gril/hello

配置两个url指向同一个控制器方法

    @RequestMapping(value={"/hello", "hi"}, method=RequestMethod.GET)
    public String say()
    {
        return cupSize + " " +age + content + girlProgerties.getAge();
    }

以上配置http://localhost:8088/gril/hellohttp://localhost:8088/gril/hi等效
同时@RequestMapping也可以作用在控制器上与springMvc用法一致

获取URL参数的注解

image.png
    @RequestMapping(value="/hello/{id}", method=RequestMethod.GET)
    public String say(@PathVariable("id") Integer id)
    {
        return "id="+id;
    }

访问: http://localhost:8088/gril/hello/12, 输出结果 id=12

    @RequestMapping(value="/hello", method=RequestMethod.GET)
    public String say(@RequestParam(value="id", required=false, defaultValue="0") Integer myId)
    {
        return "id="+myId;

访问: http://localhost:8088/gril/hello/hello?id=123 , 输出: id=123

@RequestMapping(value="/hello", method=RequestMethod.GET)
@GetMapping(value="/hello") 和以上一行等效

使用数据库

        <!-- 配置使用数据库 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.27</version>
        </dependency>
server.port=8099
#DB Configuration:
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test
spring.datasource.username=root
spring.datasource.password=123456


#JPA Configuration:
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true
package com.lxf.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import org.springframework.stereotype.Component;

/**
 * gril实体类, 对应girl数据库
 * @author lxf
 */
@Entity
@Table(name="t_girl")
public class Girl {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    
    private Integer age;
    
    private String curSize;
    
    public Girl(){}

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getCurSize() {
        return curSize;
    }

    public void setCurSize(String curSize) {
        this.curSize = curSize;
    }   
}
spring.jpa.hibernate.ddl-auto=update
package com.lxf;

import com.lxf.model.Girl;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface GirlRepository extends JpaRepository<Girl,Integer> {
    /**
     * 自定根据年龄查询列表
     * @param age
     * @return
     */
    public List<Girl> findByAge(Integer age);
}
package com.lxf;

import com.lxf.model.Girl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.transaction.Transactional;

@Service
public class GirlService {
    @Autowired GirlRepository girlRepository;

    /**
     * 使用@Transactional事务注解
     */
    @Transactional
    public void insertTwo()
    {
        Girl girlA = new Girl();
        girlA.setAge(36);
        girlA.setCurSize("A");


        girlRepository.save(girlA);

        Girl girlB = new Girl();
        girlB.setAge(38);
        girlB.setCurSize("BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBb");
        girlRepository.save(girlB);
    }
}
package com.lxf;

import com.lxf.model.Girl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 请求controller
 */
@RestController
public class GirlController {
    @Autowired
    private GirlRepository girlRepository;
    @Autowired GirlService girlService;

    /**
     * 查询女孩列表
     * @return
     */
    @GetMapping(value="/girls")
    public List<Girl> girlList()
    {

        return girlRepository.findAll();
    }
    @GetMapping(value = "/girls/{id}")
    public Girl girlFindOne(@PathVariable("id") Integer id)
    {
        return girlRepository.findOne(id);
    }
    /**
     * 新增女生
     */
    @PostMapping(value = "/girls")
    public Girl girlAdd(@RequestParam("cupSize") String cupSize,
                          @RequestParam("age") Integer age)
    {
        Girl girl = new Girl();
        girl.setAge(age);
        girl.setCurSize(cupSize);
        return girlRepository.save(girl);
    }

    /**
     * 更新女孩信息
     * @param id
     * @param cupSize
     * @param age
     * @return
     */
    @PutMapping(value = "/girls/{id}")
    public Girl girlUpdate(@PathVariable("id") Integer id,
                           @RequestParam("age") Integer age,
                           @RequestParam("cupSize") String cupSize
                           ){
        Girl girl = new Girl();
        girl.setId(id);
        girl.setCurSize(cupSize);
        girl.setAge(age);
        return girlRepository.save(girl);
    }

    /**
     * 删除女生信息
     * @param id
     */
    @DeleteMapping(value = "/girls/{id}")
    public void girlDel(@PathVariable("id") Integer id)
    {
        girlRepository.delete(id);
    }

    /**
     * 通过年龄查询列表
     * @param age
     * @return
     */
    @GetMapping(value = "/girls/age/{age}")
    public List<Girl> girlListByAge(@PathVariable("age") Integer age)
    {
        return girlRepository.findByAge(age);
    }

    /**
     * 调用事务同时添加两条记录
     */
    @PostMapping(value = "/girls/two")
    public void girlAddTwo()
    {
        girlService.insertTwo();
    }
}
上一篇下一篇

猜你喜欢

热点阅读