spring boot 初体验(一)

本文介绍了Spring Boot的初始化和运行方式,包括IDEA中项目右键运行、命令行启动和jar/war包启动。同时,详细讲解了Spring Boot的项目属性配置,如application.yml和不同环境的配置文件。此外,还涉及了数据库操作和事务管理,包括GirlModel、HelloController、GirlRepository和GirlService的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring boot 初始化和运行方式

微服务构架–>SpringCloud -->SpringBoot
环境:
jdk:1.8.0_181
maven:3.3.9
工具:IDEA
构建项目:
在这里插入图片描述
在这里插入图片描述
配置Maven:
在这里插入图片描述
settings.xml

	<mirror>
      <id>nexus-aliyun</id>
      <mirrorOf>*</mirrorOf>
      <name>Nexus aliyun</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>

三种启动项目方式:

1.项目右键–》Run:GirlApplication
在这里插入图片描述
2. 命令行启动

 mvn spring-boot:run

3.jar 包启动

编译项目 在target目录中生成 girl-0.0.1-SNAPSHOT.jar文件

mvn install
java -jar girl-0.0.1-SNAPSHOT.jar

4.war包启动
pom.xml 修改配置

    <!--可以打包为jar/war-->
    <packaging>war</packaging>

编译项目 在target目录中生成 girl-0.0.1-SNAPSHOT.war文件

mvn install

把 war包放入tomcatwebapp文件下启动tomcat即可。

SpringBoot 项目属性配置

application.yml

spring:
  profiles:
    active: dev
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/dbgirl
    username: root
    password: zhangtao
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

application-dev.yml

server:
  port: 8080
#  servlet:
#    context-path: /girl
content: "cuppSize: ${cupSize}"
girl:
  cupSize: B
  age: 18

application-prod.yml

server:
  port: 8081
  servlet:
    context-path: /girl
content: "cuppSize: ${cupSize}"
girl:
  cupSize: F
  age: 18

jar 启动方式

java -jar girl-0.0.1-SNAPSHOT.jar --spring.prospring.profiles.active=prod

GirlModel.java

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;


//@Component 注入 @ConfigurationProperties(prefix = "girl") yml girl
@Component
@ConfigurationProperties(prefix = "girl")
public class GirlModel {

    private String cupSize;

    private Integer age;

    public String getCupSize() {
        return cupSize;
    }

    public void setCupSize(String cupSize) {
        this.cupSize = cupSize;
    }
}

HelloController.java

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

/*
@RestController =@Controller +@ResponseBody
@Controller 需要模版
 */
@RestController
@RequestMapping(value = {"/hello","/hi"},method = RequestMethod.GET)
public class HelloController {

//    @Value("${cupSize}")
//    private String cupSize;
//
//    @Value("${content}")
//    private String content;
    @Autowired
    private GirlModel girlmodel;

// @PathVariable 获取url中参数
// @RequestParam 获取请求中参数 ?id=1&age=2
//    @RequestMapping(value = {"/hello","/hi"},method = RequestMethod.GET)
//@RequestMapping(value = "/say",method = RequestMethod.GET)
    @GetMapping(value = "/say")
    public String say(@RequestParam(value = "id",required = false,defaultValue = "0") Integer id) {
//        return girlmodel.getCupSize();
//        return "index";
    return "id:"+id;
    }
}

pom.xml 引入的模块

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

模版的引入
在这里插入图片描述

数据库的操作

设计接口

请求类型请求路径功能
GET/girls获取女生列表
POST/girls创建一个女生
GET/girls/id通过id查询一个女生
PUT/girls/id通过id更新一个女生
DELETE/girls/id通过id删除一个女生

pom.xml

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
spring:
  profiles:
    active: dev
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/dbgirl
    username: root
    password: zhangtao
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

新建数据库girldb
表索引为InnoDB 其他不支持事物管理

Girl.java

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

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

@Entity
@JsonIgnoreProperties(value = { "hibernateLazyInitializer" })
public class Girl {

    @Id
    @GeneratedValue
    private Integer id;


    private String cupSize;


    private Integer age;

    public Girl() {
    }

    public Integer getId() {
        return id;
    }

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

    public String getCupSize() {
        return cupSize;
    }

    public void setCupSize(String cupSize) {
        this.cupSize = cupSize;
    }

    public Integer getAge() {
        return age;
    }

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

GirlRepository.java

import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface GirlRepository extends JpaRepository<Girl,Integer> {

    //通过年龄来查询
    List<Girl> findByAge(Integer age);

}

GirlController.java

import org.hibernate.criterion.Example;
import org.omg.CORBA.PRIVATE_MEMBER;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

import java.util.List;


@RestController
public class GirlController {

    @Autowired
    private GirlRepository girlRepository;

    @Autowired
    private GirlService girlService;


    /**
     * 查询所有女生列表
     * @return
     */
    @GetMapping(value = "/girls")
    public List<Girl> listGirl(){

        return girlRepository.findAll();
    }

    /**
     * 添加一个女生
     * @param cupSize
     * @param age
     * @return
     */
    @PostMapping(value = "/girls")
    public Girl AddGirl(@RequestParam("cupSize") String cupSize,
                               @RequestParam("age") Integer age){
        Girl girl=new Girl();
        girl.setCupSize(cupSize);
        girl.setAge(age);

        return girlRepository.save(girl);
    }

    @GetMapping(value = "/girls/{id}")
    public Girl girlFindOne(@PathVariable("id") Integer id){

        return girlRepository.getOne(id);
    }

    @PutMapping(value = "/girls/{id}")
    public Girl girlUpdate(@PathVariable("id") Integer id,
                         @RequestParam("cupSize") String cupSize,
                         @RequestParam("age") Integer age){

        Girl girl=new Girl();
        girl.setId(id);
        girl.setCupSize(cupSize);
        girl.setAge(age);

        return girlRepository.save(girl) ;
    }

    @DeleteMapping(value = "/girls/{id}")
    public void girlDelete(@PathVariable("id") Integer id){
        girlRepository.deleteById(id);;
    }


    @GetMapping(value = "/girls/age/{age}")
    public List<Girl> girlListByAge(@PathVariable("age") Integer age){
        return girlRepository.findByAge(age);
    }

    @PostMapping(value = "/girls/two")
    public void girlTwo(){
        girlService.insertTwo();

    }

}

数据库事物

GirlService.java

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Transactional
@Service
public class GirlService {

    @Autowired
    private GirlRepository girlRepository;


    public void insertTwo(){
        Girl girlA=new Girl();
        girlA.setCupSize("A");
        girlA.setAge(15);
        girlRepository.save(girlA);

        Girl girlB=new Girl();
        girlB.setCupSize("Bdd");
        girlB.setAge(16);
        girlRepository.save(girlB);

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值