SpringBoot基础

2024-06-24 08:30

SpringBoot基础

说到微服务,我们不得不说martinfowler了,martinfowler定义了微服务架构的定义,


如martinfowler所说,微服务是一种架构,而springboot是实现微服务的局限


大家可以参考官网:https://martinfowler.com/


正如martinfowler所说,微服务架构需要具备的特性如下:

  • 微服务架构的九大特性

    • 特性一:“组件化”与“多服务”

    • 特性二:围绕“业务功能”组织团队

    • 特性三:“做产品”而不是“做项目”

    • 特性四:“智能端点”与“傻瓜管道”

    • 特性五:“去中心化”地治理技术

    • 特性六:“去中心化”地管理数据

    • 特性七:“基础设施”自动化

    • 特性八:“容错”设计

    • 特性九:“演进式”设计

案例

环境准备

pom.xml

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.15.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>


            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

自动配置

/**
 * @SpringBootApplication标注一个主程序类,说明这是一个spring boot程序
 */
@SpringBootApplication
public class HelloWorldMainApplication{

    public static void main(String[] args) {
        //springboot应用启动方法
        SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}
<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-dependencies</artifactId>
		<version>1.5.15.RELEASE</version>
		<relativePath>../../spring-boot-dependencies</relativePath>
</parent>

@SpringBootApplication

image.png

image.png

image.png

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
		@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
		@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {

@SpringBootConfiguration

image.png

package org.springframework.boot;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.context.annotation.Configuration;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {
}

@EnableAutoConfiguration

image.png

@SuppressWarnings("deprecation")
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(EnableAutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {

	String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";

	/**
	 * Exclude specific auto-configuration classes such that they will never be applied.
	 * @return the classes to exclude
	 */
	Class<?>[] exclude() default {};

	/**
	 * Exclude specific auto-configuration class names such that they will never be
	 * applied.
	 * @return the class names to exclude
	 * @since 1.3.0
	 */
	String[] excludeName() default {};

@AutoConfigurationPackage

image.png

image.png

image.png

image.png


有了自动配置类,免去了我们手动配置注入功能组件等的工作

image.png

image.png

image.png

相关新闻
热点
视频
投票
查看结果
Tags

站点地图 在线访客: 今日访问量: 昨日访问量: 总访问量:

© 2025 个人网站 版权所有

备案号:苏ICP备2024108837号

苏公网安备32011302322151号