springboot开发应用实现以及应用场景

springBoot

java的开发方式

  • 农耕时代java开发:

   

  • 工业时代java开发

 

  • 现代化java开发:

  • 各种微服务齐活:服务注册与发现、负载均衡与熔断、网关等

  • 各种组件一起上:springboot、springcloud...

优先配置:阿里云中央仓库

<mirror>

       <id>nexus-aliyun</id>

       <mirrorOf>*</mirrorOf>

       <name>Nexus aliyun</name>

       <url>http://maven.aliyun.com/nexus/content/groups/public</url>

</mirror>

简介:

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

Spring Boot 简化了基于Spring的应用开发,只需要“run”就能创建一个独立的、生产级别的Spring应用。

优点:

  • 简单配置

  • 简化开发过程

  • 很容易集成第三方依赖[推荐]

 

方式一

springmvc实现

实现步骤:

  • 创建maven工程

  • 导入相关依赖的jar包(例如:spring-web、spring-webmvc等)

  • 编写springmvc核心配置文件

  • 编写web.xml文件

  • 编写XxxController

创建maven工程,导入坐标

<!--父工程-->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.7.RELEASE</version>
</parent>

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

编写业务代码

estController
public class HelloController {
    /**
     * 
     * @return
     */
    @RequestMapping("/hello")
    public String sayHello(){
        return "hello, Spring Boot";
    }
}
  • 编写引导程序

该程序是发布springboot应用的入口(只需要run一下)

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class,args);
    }
}
  • 测试

在DemoApplication里运行主方法

方式二

创建spring initializr工程

通过idea工具创建工程时,不再选择maven了而是选择spring initializr。然后去勾选相关依赖。

  • 编写controller
@RestController
public class HelloController {


    /***
     * 请求 /hello  输出hello springboot!
     * @return
     */
    @RequestMapping(value = "/hello")
    public String hello(){
        return "hello springboot! demo2!";
    }

}

测试:

 

(1)语法

(2)案例

在resources目录下新建application.properties

#tomcat port

server.port=18081

#app context

server.servlet.context-path=/demo

 

application.yml(application.yaml)

(1)语法

普通数据:

说明:

key: value(注意:冒号有一个空格)

示例:

name: tom

key: value

#对象 user: 回车 两个空格name1: tom

对象数据或map

#说明:

key:

  key1: value1

  key2: value2

 

#示例:

user:

    name: tom

    age: 23

    addr: beijing

集合数据1:存储简单类型

 

说明:

key:

    value1

    value2

或:

key: value1,value2

 

示例:

city:

    beijing

    anhui

    jiangxi

    shenzhen

或:

city: [beijing,anhui,jiangxi,shenzhen]

集合数据2:存储对象类型

 

说明:

key:

    key1: vlaue1

    key2: value2

    

示例:

student:

    - name: zhangsan

      age: 23

      addr: BJ

    - name: lisi

      age: 25

      addr: SZ

 

(2)案例

将springboot-demo1中的application.properties换成application.yml,代码如下

 

server:

  port: 18081

servlet:

    context-path: /demo

 

配置文件与配置类的属性映射方式(了解)

(1)使用注解@Value映射

@value注解将配置文件的值映射到Spring管理的Bean属性值

(2)使用注解@ConfigurationProperties映射

通过注解@ConfigurationProperties(prefix=''配置文件中的key的前缀")可以将配置文件中的配置自动与实体进行映射。

使用@ConfigurationProperties方式必须提供Setter方法,使用@Value注解不需要Setter方法。

 

注意使用该注解需要引入如下依赖:

<dependency>

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

    <artifactId>spring-boot-configuration-processor</artifactId>

    <optional>true</optional>

</dependency>

 

热部署

(1)配置pom

针对每次修改代码都需要重新发布程序,在springboot中提供了热部署插件。只需要在pom文件中添加热部署依赖即可,如下所示

<!--热部署-->

<dependency>

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

    <artifactId>spring-boot-devtools</artifactId>

</dependency>

同时需要给工程添加一个插件

<build>

    <plugins>

        <plugin>

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

            <artifactId>spring-boot-maven-plugin</artifactId>

            <configuration>

                <fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->

            </configuration>

        </plugin>

    </plugins>

</build>

 

(2)开启自动构建工程

1、在idea的settings中勾选自动构建工程选项即可。如图所示:

 

2、Shift + Ctrl + Alt + /:选择registry,弹出框选择 compiler.automake.allow.when.app.running 勾选上即可

 

测试访问<http://localhost:18081/demo/hello> 后台更改数据,无需重启服务,直接刷新页面就可以看到最新数据。

 

@Mapper注册到userDao接口中

springboot起步依赖

springboot自动配置

配置文件

热部署

五.springboot集成其他框架(重点)

    集成spring Data redis

Spring Data:  Spring 的一个子项目。用于简化数据库访问,支持NoSQL关系数据库存储。其主要目标是使数据库的访问变得方便快捷。

添加Redis启动器

创建工程了添加Redis启动器。

 

<!--redis-->

<dependency>

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

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

</dependency>

 

配置application

在application.properties文件中配置连接Redis的信息:

#redis,端口可以不填,默认就是6379

spring.redis.host=192.168.200.128

spring.redis.port=6379

 

更新程序

更新UserServiceImpl类中的findAll方法。在该类中注入RedisTemplate对象。

 

@Service

public class UserServiceImpl implements UserService {

 

    @Autowired

    private UserMapper userMapper;

    @Autowired

    private RedisTemplate redisTemplate;

 

    @Override

    public List<User> findAll() {

        // 首先判断缓存中是否有数据

        List<User> users = (List<User>) redisTemplate.boundValueOps("heima:springboot:user:id:1").get();

        if(users == null){

            // 从数据库中查询

            users = userMapper.findAll();

            // 放入缓存

            redisTemplate.boundValueOps("heima:springboot:user:id:1").set(users);

        }

        return users;

    }

}

 

集成springData JPA无需配置

需求

完成对user表的CRUD操作

创建工程

创建工程,并且勾选相关依赖(Spring Data JPA)

 

 

<dependencies>

        <dependency>

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

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

        </dependency>

        <dependency>

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

            <artifactId>spring-boot-starter-web</artifactId>

        </dependency>

 

        <dependency>

            <groupId>mysql</groupId>

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

            <scope>runtime</scope>

        </dependency>

        <dependency>

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

            <artifactId>spring-boot-starter-test</artifactId>

            <scope>test</scope>

        </dependency>

    </dependencies>

 

 

/**

* @Entity:表明为一个实体对象

* @Table:指定映射的表

* @Id:指定为主键

* @GeneratedValue:指定注解的生成策略

*    TABLE:使用一个特定的数据库表格来保存主键。

*    SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。

*   IDENTITY:主键由数据库自动生成(主要是自动增长型)

*    AUTO:主键由程序控制

* @Column:指定表的列名

*/

@Entity

@Table(name = "user")

public class User {

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)//主键生成策略

    @Column(name = "id")//指定列名

 

    private Integer id;

    private String username;

    private String password;

    private String address;

 

编写dao接口

在工程src目录下创建dao接口,需要继承JpaRepository对象(该对象完成对数据库的CRUD过程,并且支持分页查询、排序等功能)。

 

public interface UserDao extends JpaRepository<User, Integer> {

    

}

 

编写service接口以及实现类

1、编写service接口:

 

/**

* 服务接口

*/

public interface UserService {

 

 

    List<User> findAll();

 

 

    User findUserById(Integer id);

 

 

    void add(User user);

 

 

    void update(User user);

 

 

    void deleteUserById(Integer id);

 

 

    Integer getAllCount();

}

 

实现类

 

/**

* 服务实现类

*/

@Service

public class UserServiceImpl implements UserService {

    @Autowired

    private UserDao userDao;

    /**

     * 查询所有用户

     * @return

     */

    @Override

    public List<User> findAll() {

        return userDao.findAll();

    }

 

    /**

     * 根据id 查询用户

     * @param id

     * @return

     */

    @Override

    public User findUserById(Integer id) {

        Optional<User> optionalUser = userDao.findById(id);

        return optionalUser.get();

    }

 

    /**

     * 添加

     * @param user

     */

    @Override

    public void add(User user) {

 

        userDao.save(user);

    }

 

    /**

     * 更新

     * @param user

     */

    @Override

    public void update(User user) {

        userDao.save(user);

    }

 

    /**

     * 删除

     * @param id

     */

    @Override

    public void deleteUserById(Integer id) {

        userDao.deleteById(id);

 

    }

 

    /**

     * 查询数量

     * @return

     */

    @Override

    public Integer getAllCount() {

       return Integer.valueOf(userDao.count() + "");

    }

}

 

1.创建工程勾选依赖

2.编写pojo,添加注解

3.编写Dao(需要继承JpaRepository<T,ID>)

4.编写Service

5.编写Controller

@RestController

@RequestMapping("/user")

public class UserController {

    @Autowired

    private UserService userService;

 

    /**

     * 查询所有用户

     * @return

     */

    @RequestMapping("findAll")

    public List<User> findAll(){

        return userService.findAll();

    }

 

    /**

     * 根据id查询

     * @param id

     * @return

     */

    @RequestMapping("/findUserById/{id}")

    public User findUserById(@PathVariable Integer id){

       return userService.findUserById(id);

    }

 

    /**

     * 保存

     * @param user

     */

    @RequestMapping("/saveUser")

    public void saveUser(User user){

        userService.add(user);

    }

 

    /**

     * 更新

     * @param user

     */

    @RequestMapping("/update")

    public void updateUser(User user){

        userService.update(user);

    }

 

    /**

     * 删除

     * @param id

     */

    @RequestMapping("/deleteUserById/{id}")

    public void deleteUserById(@PathVariable Integer id){

        userService.deleteUserById(id);

    }

}

配置application.properties

 

#hibernate.ddl-auto,建表策略:

#update:每次运行程序,没有表会新建表,表内有数据不会清空,只会更新

#create:每次运行程序,没有表会新建表,表内有数据会清空

#create-drop:每次程序结束的时候会清空表

#validate:运行程序会校验数据与数据库的字段类型是否相同,不同会报错

在application.yml中配置相关JPA内容。

 

 

 

6.测试

 

pojo 实体类添加注解

@Entity:表明当前类是要跟数据库关联的实体类

@Table("xxx")数据库表名

@Id:指定主键

PS:注解说明

  • @Entity:表明为一个实体对象

  • @Table:指定映射的表

  • @Id:指定为主键

  • @GeneratedValue:指定注解的生成策略

    TABLE:使用一个特定的数据库表格来保存主键。

    SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。

    IDENTITY:主键由数据库自动生成(主要是自动增长型)

    AUTO:主键由程序控制

  • @Column:指定表的列明

集成定时器

步骤:

  • 开启注解支持

@EnableScheduling

 

  • 编写定时任务

在类上加@Component

@Scheduled

 

测试

 

备注:可以通过资料中提供的cron表达式工具去生成

CronTrigger配置完整格式为: [秒][分] [小时][日] [月][周] [年]

序号

说明

是否必填

允许填写的值

允许的通配符

1

0-59

, - * /

2

0-59

, - * /

3

小时

0-23

, - * /

4

1-31

, - * ? / L W

5

1-12或JAN-DEC

, - * /

6

1-7或SUN-SAT

, - * ? / L W

7

empty 或1970-2099

, - * /

 

六.springboot打包方式

步骤

  • 修改pom.xml(设置包类型<jar、war>)

  • 修改pom.xml(设置跳过测试代码)

  • 打包

  • 测试

实现

  • 在pom文件中指定包类型(可以不指定,默认就是jar)

 

跳过测试代码(不设置时会执行所有的测试代码)

 

<properties>

    <java.version>1.8</java.version>

    <skipTests>true</skipTests>

</properties>

 

打包

方式一:直接在idea中执行如下操作

 

方式二:通过命令执行

    1、通过cmd进入到工程的目录中,与pom.xml同级

2、然后执行命令:mvn clean package [-Dmaven.test.skip=true] --->[]内为可选操作,排除测试代码,也就是说打包时跳过测试代码

如下命令打包:mvn clean package -Dmaven.test.skip=true

 

测试:

java -jar springboot_demo4_jpa-0.0.1-SNAPSHOT.jar

-Xmx:最大堆内存

-Xms:初始堆内存

java -Xmx80m -Xms20m -jar springboot_demo4_jpa-0.0.1-SNAPSHOT.jar

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值