初识微服务和Spring boot

spring boot 基本概念

    • 1.什么是微服务
    • Spring boot
    • 使用spring boot有四大好处:
  • 代码结构
    • 自动配置
    • 自定义bean
    • 配置文件格式及使用
    • yml的使用
    • 自定义spring配置文件
  • 这个时候我们可以使用@ImportResource 注解
    • SpringBoot 多环境配置及切换

1.什么是微服务

官网介绍一一微服务是现在非常主流的一种架构风格,一个大型的复杂项目,由一个或多个小型服务组成。系统中的各个小型服务可被独立部署,各个小型服务之间是松耦合的,并且这些小型服务之间以轻量级的通信协作(http)作为基础进行通信,这样的微服务器架构独立性更强、粒度更细、性能更高、安全性、可扩展性、可重用性都更高。
初识微服务和Spring boot_第1张图片微服务,就是一个项目可以由多个小型服务构成(这里的小型服务就称之为微服务)。用微服务架构开发的系统,如果要对订单服务进行升级/维护,只需要修改订单服务,其他的服务不需要更改,甚至不需要重新启动;如果用户服务访问量太大,需要横向扩展,那么只需针对用户服务增加服务器数量,扩展集群,其它服务也不受影响。所以微服务架构独立性更强、可扩展性比较强。
注意:并不是用了Spring Boot就表示实现了微服务架构,Spring Boot只是让我们更加方便地构建项目,真正的微服务需要架构上的支持。

Spring boot

是一个pivotal(原spring团队)公司开发的框架,采用规约大于配置的原则整合其他以spring为核心的框架集,是框架的框架。SpringBoot是由Pivotal团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。

使用spring boot有四大好处:

  1. spring boot 把各种依赖分类(打包)成了44个应用starter,一个产品starter,6个替代性技术starter。每个starter是相关jar包的集合,自动引入。
  2. 让配置更加简单
    初识微服务和Spring boot_第2张图片
  3. 让部署更简单
    初识微服务和Spring boot_第3张图片
  4. 让监控更简单
    初识微服务和Spring boot_第4张图片

代码结构

每个项目的代码应该有package,否则在使用@ComponentScan,@EntityScan,
@SpringBootApplication 等注解时可能导致一些问题。建议按照Java规范有一个包,类似于:com.company.project
@SpringBootApplication 注解始终应该在main方法所在的类上,并且该类应该放在与其它controller、dao、service等子包同级的目录层次。例如:
初识微服务和Spring boot_第5张图片

自动配置

spring boot 简化了配置,遵循着约定大于配置的思想。例如在项目中依赖某个jar包,spring boot “猜测”你应该是要在项目中使用这个jar中的类,因此会帮助你配置这个jar中的bean。你只需要在启动类上添加@EnableAutoConfiguration的注解,表示你希望spring boot开启自动配置的功能。不仅支持spring boot 官方的starter,还支持第三方常用的一些jar。打开spring boot 自动配置的jar包中spring.factories文件可以看到默认支持自动配置的框架,类库等。
初识微服务和Spring boot_第6张图片

自定义bean

推荐用Java配置文件(注解+properties文件),通过在类上添加@Configuration注标识一个类是配置类。建议集中到单个类中,通常mian方法所在的类比较适合担任责任

配置文件格式及使用

spring boot 提供两种默认的全局配置文件分别是:application.properties和application.yml,两种格式的配置效果相同,风格各异,按个人喜好二选一即可。

yml的使用

在使用 yaml 为属性赋值时, 如果属性是 Set/List/数组时, 我们使用[]中括号。 如果属性
是 Map 集合/对象类型的属性时, 要使用{}大括号。
【示例代码 1-3: 从 yml 文件注入值到 Bean 中】
定义两个实体类, 使用 yml 文件创建实体类对象并为其注入值, 实现步骤如下。

  1. 定义两上实体类, Student、 Pet。
    创建一个 entity 包, 在 entity 包下创建这两个类。

初识微服务和Spring boot_第7张图片
初识微服务和Spring boot_第8张图片
2. 到 application.yml 中添加如下配置实现创建 Student 对象并为这个对象赋值。
(通过 yaml 给对象注值)
初识微服务和Spring boot_第9张图片
3.将 yml 中 student 的值注入到实体类 Student 的对应属性上面, 需要在 Student 实体类上
面添加如下代码:

/学生类
@Component//为当前JavaBean创建bean的实例对象
@ConfigurationProperties(prefix="student"/∥student为yml文件中的对象名。
/这两个注解组合使用实现创建当前类的bean实例对象,对象名为student并使用yml文件为这个对象赋值。

4.在测试类测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {

    @Resource
    private Student student;

    @Test
    public void contextLoads() {
        System.out.println(student.getName()+student.getAge());
    }

}

自定义spring配置文件

spring boot会自动装配、自动配置,相比于SSM框架时需要配置多个spring配置文件,而spring boot会自动将spring一系列配置文件给配置好,无需我们去配置。如果出于需求,需要我们自己去进行spring配置文件的创建,那spring会不会去自动识别?

  1. 自定义一个spring配置文件
    1-1.先创建一个类
public class StudentServiceImpl {
    private Spring name;

    public Spring getName() {
        return name;
    }

    public void setName(Spring name) {
        this.name = name;
    }
}

1-2.在 resources 目录下创建 spring.xml 配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="student" class="com.example.demo.entity.StudentServiceImpl">
        <property name="name" value="小南"/>
    </bean>
</beans>

1-3.进行测试

    @Resource
    private ApplicationContext context;
    @Test
    public void  test(){
        StudentServiceImpl studentService = (StudentServiceImpl)
                context.getBean("stu");
        System.out.println("name 的值为: " + studentService.getName());
    }

报了如下错误, 说明自己编写的一个 Spring 配置文件并没有被框架识别。
初识微服务和Spring boot_第10张图片

这个时候我们可以使用@ImportResource 注解

要解决上面的问题, 我们可以使用 注解让当前 SpringBoot 项目能够识别自定义的 Spring 配置文件。
@Configuration 注解标注的类就是一个配置类, 功能等价于创建一个 Spring 配置文件。

@Bean 是用来创建 bean 的组件对象并添加到 Spring 容器中。
使用@Configuration 和@Bean 注解后, 可以把之前手动编写的 Spring 配置文件以及到主
程序中写的@ImportResource 注解给拿掉。

SpringBoot 多环境配置及切换

SpringBoot 默认会读取 application.properties 主配置文件中的配置信息, 当我们
把开发环境、 测试环境、 生产环境的配置信息分别保存到各自配置文件中时, 如何实现这三
个环境的自由切换? ( application-test.properties、 application-dev.properties 配置文件的命名
格式为: application-环境名.properties)

你可能感兴趣的:(初识微服务和spring,boot)