SpringBoot

概念:

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

 

特点:

1. 创建独立的Spring应用程序

2. 嵌入的Tomcat,无需部署WAR文件

3. 简化Maven配置

4. 自动配置Spring

5. 提供生产就绪型功能,如指标,健康检查和外部配置

6. 绝对没有代码生成和对XML没有要求配置

 

使用:

使用idea编辑器创建SpringBoot项目,idea默认使用Maven管理SpringBoot项目

创建Web项目时需要勾选web选项

 

作用:

SpringBoot是用来做微服务的,什么是微服务?微服务架构是一项在云中部署应用和服务的新技术。

 

创建SpringBoot项目:

首先修改idea中的mavensetting.xml文件,idea自带的maven远程仓库服务器在国外,所以下载速度相当慢,因此使用阿里云的远程仓库,可以加快下载速度。

在配置完成远程仓库后,我们就可以在idea中选中我们的要创建的项目:Spring Initializr

选择完成后,选择默认的urlhttp://start.spring.io,然后直接下一步下一步,记得别忘了选web这个选项。

 

创建springboot的配置文件

SpringBoot的配置文件是application.properties或者我们可以起名字叫application.yml

application.properties可以写数据库相关的配置信息,比如:

server.port=8080 这个是指定tomcat服务器的访问的端口号

server.context-path=test 这个是给访问项目前加一个前缀,加了这个以后, 访问项目就是:http://localhost:8080/test/项目中的名字

yml是另一种配置文件的格式,它比properties的好处在于,可以省略很多的关键字:

比如:

server:

  port: 8080

    context-path: /girl

上面这么写和properties写是一样的,但是要记得,yml文件中,在关键字冒号后面要有一个空格,比如port: 8080,这个冒号和8080之间就要有空格,否则就会报错。

如何在yml中声明变量并在controller中取出在网页中显示?

我们可以在yml文件里面声明变量,然后在我们的controller里面取到,比如:

user001: B

那么我们在controller里面就可以直接写成:

@Value("${user001}")

private String user001;

这样我们就取到了user001的值

还有就是,当我们新建一个controller类的时候,所使用的注解是@RestController,而不是Controller,这个和Controller的区别我会在后面总结。

@RestController

public class TestController {

    @Value("${user001}")

    private String user001;

    @RequestMapping("test")

    public String Test(){

        return user001;

    }

}

以上大概就是我们创建一个controller的基本代码,还有就是,我们在运行我们的项目时,要使用DemoApplication.java这个类,这个类中有这个代码:

@SpringBootApplication

public class DemoApplication {

public static void main(String[] args) {

SpringApplication.run(DemoApplication.class, args);

}

}

 

@SpringBootApplication这个注解意思就是我们启动项目就是要通过以下这个类来启动。

那么我们如何在配置文件中使用我们已经声明完成的变量?这个时候我们就可以这么写:

user001: 001

age: 18

context: "user001:${user001},age:${age}"

我们在controller中就可以这么使用:

@Value("${context}")

private String context;

 

如何读取配置文件中的信息并封装成实体类

如果我们想把配置文件中的信息,读取并自动封装成实体类,这样我们就可以在代码中直接的使用,这个时候,我们就需要借助@ConfigurationProperties这个注释,使用方法如下:

首先,我们在yml文件里面这么写:

 

 

girl:

  name: qxf

  age: 23

然后我们新建一个实体类名字叫Girl,在里面这么写:

@Component

@ConfigurationProperties(prefix = "girl")

public class Girl {

    private String name;

    private String age;

    public Girl() {

    }

    public Girl(String name, String age) {

        this.name = name;

        this.age = age;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public String getAge() {

        return age;

    }

    public void setAge(String age) {

        this.age = age;

    }

}

给出相应的构造方法和set/get方法,idea的快捷键是alt+insert,然后我们在头文件声明:

@Compont就是标记一个组件,这个是spring中的注解,可以配合Autowired使用

@ConfigurationProperties就是注解将配置文件中的信息读取并封装,并且我们在prefix前缀中声明出我们在yml文件中的名字girl

最后,我们在controll里面这么写:

@RestController

public class TestController {

    @Autowired

    private Girl girl;

    @RequestMapping("test")

    public String Test(){

        return girl.getName()+"\t"+girl.getAge();

    }

}

这样就可以直接使用我们在配置文件中声明的实体类了

 

一个项目中有多个配置文件,怎么选择启动哪一个配置文件?

首先,我们有三个配置文件:

一个是application.yml,一个是application-dev.yml,一个是application-prop.yml

其次,我们在application.yml中写:

spring:

    profiles:

        active: dev(或者prop

这个时候我们就可以通过访问不同的端口号访问不同的配置文件了,但是暂时不理解这样写有什么用。。。

 

Controller中常用的注释有哪些?

@Controller 处理http请求,要配合模板使用,但是基本不用,因为性能较低

@RestController Spring4后新加的注解,原来返回json需要@ResponseBody配合@Controller

@RequestMapping 配置url映射

@RequestMapping还可以这么写:@RequsetMapping(value={"/hello","/hi"}),这样的话,就可以通过hello或者hi访问了

url连接访问的都是get方式访问的,所以当我们在

@RequestMapping(value = "/test",method = RequestMethod.GET)的时候,可以直接访问,但是如果我们把method改成了post,就需要借助工具或者写一个表单来进行访问了。

@PathVariable 获取url中的数据

使用方法:

 @RequestMapping(value = "/test/{id}",method = RequestMethod.GET)

    public String Test(@PathVariable("id") Integer id){

        return "id: "+id;

}

这样写完以后,在访问时这么访问:http://localhost:8080/test/1;就可以拿到id=1

当然,{id}这个东西也可以写在test的前面而不是后面

 

@RequestParam 获取请求参数的值

使用方法:

@RequestMapping(value = "/test",method = RequestMethod.GET)

    public String Test(@RequestParam("id") Integer id){

        return "id: "+id;

}

这样写完以后,就可以访问url中带的参数了,访问时这么写: http://localhost:8080/test?id=100,就可以拿到id=100

我们也可以这么写给设置默认值:

    @RequestMapping(value = "/test2", method = RequestMethod.GET)

    public String Test2(@RequestParam(value = "name",required = false,defaultValue = "0") StringBuffer name){

        return "name: "+name;

}

这样的话,如果我们不写,默认值就是0,否则的话就是我们写的值

 

@GetMapping 组合注解

当然我们还可以使用@GetMapping(value="/test")来替代下面这句话:

@RequestMapping(value = "/test",method = RequestMethod.GET)

这两句话都是一样的,使用的效果完全一样

 

使用SringBoot对数据库进行增删改查

Spring-Data-Jpa

JPA定义了一系列对象持久化的标准,目前实现这一规范的产品有HibernateTopLink

所以我们通过使用Jpa来实现对数据库的增删改查,而且通过Jap,我们可以反向生成数据库中的表,即和Hibernate非常的相似,通过新建一个实体类然后生成一张表。

具体步骤如下:

第一步:引入Japmysql 的相关jar

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-jpa</artifactId>

<version>1.5.7.RELEASE</version>

</dependency>

 

<dependency>

<groupId>org.wisdom-framework</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.34_1</version>

</dependency>

第二步:配置yml文件,设置Jpa的相关参数

spring:

datasource:(这个是数据库的相关配置)

    driver-class-name: com.mysql.jdbc.Driver

    url: jdbc:mysql://localhost:3306/test

    password: 12345678

    username: root

  jpa:

    hibernate:

      ddl-auto: update

      show-sql: true

create是每次程序运行都会创建一个新的表,如果你之前有这个表的话,它会帮你删除掉。

update是如果你里面有数据,它会帮你保留,而不会删除表中的数据。

第三步:新建一个实体类

@Entity

public class Boy {

    @Id

    @GeneratedValue//设置自增

    private Integer id;

    private String name;

    private String sex;

 

    public Boy() {

    }

    public Boy(Integer id, String name, String sex) {

        this.id = id;

        this.name = name;

        this.sex = sex;

    }

    public Integer getId() {

        return id;

    }

    public String getName() {

        return name;

    }

    public String getSex() {

        return sex;

    }

    public void setId(Integer id) {

        this.id = id;

    }

    public void setName(String name) {

        this.name = name;

    }

    public void setSex(String sex) {

        this.sex = sex;

    }

}

第四步:新建一个接口,这个接口继承了JpaRepository类并且映射了Boy

public interface BoyRepository extends JpaRepository<Boy,Integer> {

}

第五步:新建一个Controller

@RestController

public class BoyController {

    //查询所有

    @Autowired

    private BoyRepository boyRepository;

    @GetMapping(value = "/boys")

    public List<Boy> boylist(){

        return boyRepository.findAll();

    }

    //新增

    @GetMapping(value = "/save")

    public Boy boyadd(@RequestParam("name") String name,

                      @RequestParam("sex") String sex){

        Boy boy = new Boy();

        boy.setName(name);

        boy.setSex(sex);

        return boyRepository.save(boy);

    }

    //查询

    @RequestMapping(value = "/findById/{id}")

    public Boy findById(@PathVariable("id") Integer id){

        return boyRepository.findOne(id);

    }

    //更新

    @RequestMapping(value = "/update/{id}")

    public Boy update(@PathVariable("id") Integer id,

                      @PathVariable("name") String name,

                      @PathVariable("sex") String sex){

        Boy boy = new Boy();

        boy.setId(id);

        boy.setName(name);

        boy.setSex(sex);

        return boyRepository.save(boy);

    }

    //删除

    @RequestMapping(value = "/delete/{id}")

    public void delete(@PathVariable("id") Integer id){

        boyRepository.delete(id);

    }

}

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值