带你了解SpringBoot

一,SpringBoot简介

随着互联网的兴起,Spring势如破竹,占据着Java领域轻量级开发的王者地位。随着Java语言的发展以及市场开发的需求,Spring推陈出新,推出了全新的Spring Boot框架。Spring Boot是Spring家族的一个子项目,其设计初衷是为了简化Spring配置,从而可以轻松构建独立运行的程序,并极大提高开发效率。

近几年微服务开发需求的迅速增加,Spring Boot框架的出现恰好完美解决了这些问题,同时其内部还简化了许多常用的第三方库配置,这也间接体现了Spring  Boot框架的优势。

二,知识点总结

  1. Spring Boot 的自动配置:Spring Boot 可以自动配置多个组件(如 Datasource、Template Engine、Web Server 等),避免了在应用程序中进行繁琐的配置。

  2. Spring Boot Starter:Spring Boot Starter 是一组预先配置好的依赖关系,他们可以快速地集成 Spring Boot 相关的技术,如 Spring MVC、Spring Data、Security 等。

  3. Spring Boot Actuator:Spring Boot Actuator 是 Spring Boot 提供的一个监控和管理应用程序的框架,可以监控应用程序的健康状态、性能指标、日志等。

  4. Spring Boot Test:Spring Boot Test 是一个基于 JUnit 的测试框架,它可以自动化测试 Spring Boot 项目,并提供了一系列的 Mock 测试工具。

  5. Spring Boot DevTools:Spring Boot DevTools 可以监听文件变化并自动重新加载应用程序,同时提供了一组方便的开发工具,如 LiveReload、JVM 属性控制器等。

  6. Spring Boot 部署:Spring Boot 可以使用多种方式进行部署,如使用 Maven 插件打包为 jar、war 文件,然后部署到 Servlet 容器中,也可以使用 Spring Boot 自带的嵌入式 Web 容器直接运行应用程序。

  7. `==`:比较两个对象在内存中是不是同一个对象,即在内存中的存储位置一致。例如:两个String对象存储的值一样,但可能存储在不同地方)

    equals:比较两个对象的内容。于两个对象而言(例如:String对象),值相等意味着它们包含同样的字符序列。

三,SpringBoot常用注解

1,基本注解

@Service: 注解在类上,表示这是一个业务层bean

@Controller:注解在类上,表示这是一个控制层bean

@Repository: 注解在类上,表示这是一个数据访问层bean

@Component: 注解在类上,表示通用bean ,value不写默认就是类名首字母小写

@Autowired:按类型注入.默认属性required= true

@Resource: 按名称装配。

2,元注解

@Documented:将会在被此注解注解的元素的javadoc文档中列出注解,一般都打上这个注解没坏处

@Target:注解能被应用的目标元素,比如类、方法、属性、参数等等,需要仔细思考

@Retention:仅在源码保留,还是保留到编译后的字节码,还是到运行时也去加载,超过90%的应用会在运行时去解析注解进行额外的处理,所以大部分情况我们都会设置配置为RetentionPolicy.RUNTIME

@Inherited:如果子类没有定义注解的话,能自动从父类获取定义了继承属性的注解,比如Spring的@Service是没有继承特性的,但是@Transactional是有继承特性的,在OO继承体系中使用Spring注解的时候请特别注意这点,理所当然认为注解是能被子类继承的话可能会引起不必要的Bug,需要仔细斟酌是否开启继承

@Repeatable:Java 8引入的特性,通过关联注解容器定义可重复注解,小小语法糖提高了代码可读性,对于元素有多个重复注解其实是很常见的事情,比如某方法可以是A角色可以访问也可以是B角色可以访问,某方法需要定时任务执行,要在A条件执行也需要在B条件执行

@Native:是否在.h头文件中生成被标记的字段,除非原生程序需要和Java程序交互,否则很少会用到这个元注解

3,启动注解

@SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中

@ComponentScan:让spring Boot扫描到Configuration类并把它加入到程序上下文。

@SpringBootConfiguration :等同于spring的XML配置文件;使用Java代码可以检查类型安全。

@EnableAutoConfiguration :自动配置

4,HTTP注解

@RequestBody:HTTP请求获取请求体(处理复杂数据,比如JSON)

@RequestHeader:HTTP请求获取请求头

@CookieValue:HTTP请求获取cookie

@SessionAttribute:HTTP请求获取会话

@RequestAttribute:HTTP请求获取请求的Attribute中(比如过滤器和拦截器手动设置的一些临时数据),

@RequestParam:HTTP请求获取请求参数(处理简单数据,键值对),

@PathVariable:HTTP请求获取路径片段,

@MatrixAttribute:HTTP请求获取矩阵变量允许我们采用特殊的规则在URL路径后加参数(分号区分不同参数,逗号为参数增加多个值)

5,其他注解

@Transient:表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性。

@ConfigurationProperties:给对象赋值,将注解转换成对象。

@RequestMapping:和请求报文是做对应的

@EnableCaching:注解驱动的缓存管理功能

@GeneratedValue:用于标注主键的生成策略,通过 strategy 属性指定

@JsonIgnore:作用是json序列化时将Java bean中的一些属性忽略掉,序列化和反序列化都受影响。

@JoinColumn(name=”loginId”):一对一:本表中指向另一个表的外键。一对多:另一个表指向本表的外键。

四,SpringBootApplication注解

SpringBoot程序启动入口一个是SpringApplication.run,一个是@SpringBootApplication注解,这个注解是由三部分组成:

1. @ComponentScan注解,主要用于组件扫描和自动装配。

2. @SpringBootConfiguration注解,这个注解主要是继承@Configuration注解,主要用于加载配置文件。

3. @EnableAutoConfiguration注解,这个注释启用了Spring Boot的自动配置功能,可以自动为您配置很多东西。

源码

@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 {

    @AliasFor(annotation = EnableAutoConfiguration.class)
    Class[] exclude() default {};

    @AliasFor(annotation = EnableAutoConfiguration.class)
    String[] excludeName() default {};

    @AliasFor(annotation = ComponentScan.class, attribute = "basePackages")
    String[] scanBasePackages() default {};
	@AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses")
    Class[] scanBasePackageClasses() default {};

}

实例

@SpringBootApplication
public class HelloDemo implements CommandLineRunner {
 
    private static final Logger log = LoggerFactory.getLogger(HelloDemo.class);
 
    public static void main(String args[]) {
        SpringApplication.run(HelloDemo.class);
    }
 
    @Override
    public void run(String...args) throws Exception {
        log.info("hello 51gjie");
    }
}

@SpringBootApplication = @Configuration + @ComponentScan + @EnableAutoConfiguration,是这三个Spring注释的组合,只需一行代码即可提供所有三个注释的功能。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值