SpringBoot学习

约定大于配置

         SpringBoot的约定大于配置,按我的理解是:对比SpringMVC,需要在web.xml里面配置前端控制器,还需要在核心配置文件(*-servlet.xml)中配置视图解析器等,更要配置第三方的Tomcat服务器。而SpringBoot就不需要我们配置这些,他内嵌了Tomcat服务器,我们只需要在Maven配置文件(Pom.xml)里面导入SpringMVC所需要的依赖就可以了。
  这就是SpringBoot的优势,在传统所需要配置的地方,SpringBoot都进行了约定(配置好了),开发人员能配置得更少,更直接地开发项目,写业务逻辑代码。
spring boot和maven的约定大于配置体现点:
   1.maven的目录文件结构
   1)默认有resources文件夹,存放资源配置文件。src-main-resources,src-main-java
默认的编译生成的类都在targetwen。
   2)默认有target文件夹,将生成class文件盒编程生成的jar存放在target文件夹下

        2.spring boot默认的配置文件必须是,也只能是application.命名的yml文件或者properties文件,且唯一
        1)spring boot默认只会去src-main-resources文件夹下去找application配置文件

IoC

        Spring的核心之一是IoC,IoC全称为Inversion of Control,中文译为控制反转,是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。

        所谓IoC,对于Spring框架来说,就是由Spring来负责对象的创建、配置和管理,所以可将IoC理解为一个大容器。IOC通过将对象创建和管理的控制权从应用代码转移到Spring容器中,实现了松耦合设计。IoC使用依赖注入(DI)来管理组成一个应用程序的组件,这些对象被称为Spring Beans。

DI

        依赖注入(Dependency Injection,简称DI)是一种软件开发技术,其中创建的对象依赖的其他对象不由该对象自身创建,而是由外部容器在运行时注入。这种技术有助于减少代码之间的耦合,提高代码的可测试性和可维护性。‌

        依赖注入的实现方式主要有两种:‌Setter注入和‌构造方法注入。Setter注入是通过在被注入类中编写属性的setter方法,然后在配置文件中设置需要注入的属性值。构造方法注入则是通过在被注入类中编写带有参数的构造方法,并在配置文件中通过<constructor-arg>标签进行配置。‌

        依赖注入的主要目的是为了解耦,使得类之间的依赖关系由容器在运行时动态决定,而不是在编译时硬编码。这种方式可以提升代码的重用性和灵活性,使得系统更加模块化和可扩展

Spring Boot 常用注解

@Controller 和 @RestController

@Controller 和 @RestController 注解都可以用来处理 HTTP 请求。@Controller 注解表示这个类是一个控制器,用于接收来自客户端的请求并处理它们。而 @RestController 注解是一个组合注解,相当于 @Controller 和 @ResponseBody 注解的结合。使用 @RestController 注解的类可以直接返回 JSON 数据或 XML 等数据格式。

@RequestMapping

@RequestMapping 注解是用来映射 HTTP 请求的。可以将它用在类和方法上,表示类或方法处理指定的请求路径和 HTTP 请求方法。例如,@RequestMapping("/user") 可以用来处理 /user 路径的请求,@RequestMapping(value = "/user", method = RequestMethod.POST) 可以用来处理 POST 方法的 /user 路径的请求。

@Autowired

@Autowired 注解是 Spring 框架中的依赖注入注解。它可以用来自动装配 Spring 容器中的 Bean 对象。使用 @Autowired 注解可以避免手动编写代码来获取 Bean 对象的实例。

@Component

@Component 是一个通用的注解,用于标识一个类为 Spring 的 Bean 对象。使用 @Component 注解标记的类会被 Spring 自动扫描,并将其实例化成 Bean 对象放入 Spring 容器中。

@Service

@Service 注解用于标识一个类为业务层的 Bean 对象。与 @Component 注解类似,使用 @Service 注解标记的类会被 Spring 自动扫描并实例化成 Bean 对象放入 Spring 容器中。

@Repository

@Repository 注解用于标识一个类为数据访问层的 Bean 对象。使用 @Repository 注解标记的类会被 Spring 自动扫描并实例化成 Bean 对象放入 Spring 容器中。

@Transactional

@Transactional 注解用于标识一个方法或类需要事务支持。使用 @Transactional 注解可以让 Spring 自动管理事务的提交和回滚。

@Configuration 和 @Bean

@Configuration 注解用于标识一个类为 Spring 配置类。使用 @Configuration 注解标记的类可以包含一个或多个方法,这些方法会返回 Bean 对象,并将其放入 Spring 容器中。使用 @Bean 注解标记的方法可以用来创建一个 Bean 对象,并将其放入 Spring 容器中。

springbean的作用域

singleton(单例作用域)

这是Spring的默认作用域,表示在整个Spring IoC容器中只有一个Bean的实例。所有对该Bean的引用都指向同一个对象,通常用于无状态的Bean,即不需要修改其属性的Bean。

prototype(原型作用域)

表示每次获取或注入Bean时都会创建一个新的实例。这种作用域适用于有状态的Bean,因为每次操作都可能涉及到不同的状态。

request(请求作用域)

在每次HTTP请求时创建一个新的Bean实例,该实例仅在当前请求的生命周期内有效。适用于需要在每次请求中保持特定状态的情况。

session(回话作用域)

在一个HTTP Session中定义一个Bean实例,该实例在用户会话期间共享。适用于需要在用户会话期间保持某些状态的情况。

application(全局作用域)

限定一个Bean的作用域为ServletContext的生命周期。该作用域仅适用于web的Spring WebApplicationContext环境。

springbean的生命周期

  1. 根据配置情况调用 Bean 构造方法或工厂方法实例化 Bean。
  2. 利用依赖注入完成 Bean 中所有属性值的配置注入。
  3. 如果 Bean 实现了 BeanNameAware 接口,则 Spring 调用 Bean 的 setBeanName() 方法传入当前 Bean 的 id 值。
  4. 如果 Bean 实现了 BeanFactoryAware 接口,则 Spring 调用 setBeanFactory() 方法传入当前工厂实例的引用。
  5. 当一个 Bean 实现了 ApplicationContextAware 接口并在 Spring 容器中被实例化时,Spring 容器会自动调用该 Bean 的 setApplicationContext 方法,并将应用程序上下文ApplicationContext作为参数传递进来
  6. BeanPostProcessor是Spring框架中的一个重要接口,它允许开发者在Spring容器创建和初始化bean的过程中,对bean进行自定义处理。这包括在bean实例化之后、属性设置之前(postProcessBeforeInitialization方法),以及在bean初始化之后(postProcessAfterInitialization方法)执行自定义逻辑(Spring容器在创建和初始化每一个bean时,都会调用CustomBeanPostProcessor中的这两个方法,允许你进行自定义处理)
  7. InitializingBean 是 Spring 框架中的一个接口,它定义了一个 afterPropertiesSet 方法。当 Spring 容器创建 bean 的所有属性都被设置完成后,会调用这个方法。
  8. 如果在配置文件中通过 init-method 属性指定了初始化方法,则调用该初始化方法。
  9. 如果 BeanPostProcessor 和 Bean 关联,则 Spring 将调用该接口的初始化方法 postProcessAfterInitialization()。此时,Bean 已经可以被应用系统使用了。
  10. 如果在 <bean> 中指定了该 Bean 的作用范围为 scope="singleton",则将该 Bean 放入 Spring IoC 的缓存池中,将触发 Spring 对该 Bean 的生命周期管理;如果在 <bean> 中指定了该 Bean 的作用范围为 scope="prototype",则将该 Bean 交给调用者,调用者管理该 Bean 的生命周期,Spring 不再管理该 Bean。
  11. 如果 Bean 实现了 DisposableBean 接口,则 Spring 会调用 destory() 方法将 Spring 中的 Bean 销毁;如果在配置文件中通过 destory-method 属性指定了 Bean 的销毁方法,则 Spring 将调用该方法对 Bean 进行销毁。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值