JAVA—Spring

2024/8/31

配置maven

配置pom.xml

在<dependencies></dependencies>中添加依赖

一般添加

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!--<version>2.6.6</version>-->
 </dependency>

搭建Spring Boot

使用@SpringBootApplication标注一个应用程序的主类

  • @SpringBootApplication 注解使得这个类成为Spring Boot应用的入口。
  • main 方法是Java应用的入口,通过调用 SpringApplication.run() 来启动Spring Boot应用。
package org.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class EasySpringAA {
    //项目启动类 运行起该类 就运行了整个项目
    public static void main(String[] args) {
        SpringApplication.run(EasySpringAA.class,args);
    }
}

约定大于配置

“约定大于配置”(Convention over Configuration)是软件开发中的一个设计原则,尤其在框架设计中常被提及。这个原则的核心思想是:通过合理的默认约定,使得开发者可以在不需要大量显式配置的情况下进行开发。只有在默认约定不适用时,才需要进行额外配置。

IOC

SpringIOC:IOC是Inversion of Control的缩写,多数书籍翻译成“控制反转”

将对象的创建和依赖管理的控制权从程序代码手动管理转移到外部框架,从而实现松耦合和更灵活的代码结构。

//springboot提供了很多注解标注类,让spring管理这些类的对象的生命周期
//@Controller(控制类) @RestController(控制类) @Service(业务类) @Repository(Dao类)
//@Component(其他功能类) @Bean

依赖注入DI

依赖注入是实现控制反转的一种常用方式,依赖注入的目的是将对象之间的依赖关系从内部实现中剥离出来,通过外部传递的方式来提供依赖对象。

核心思想:传统编程中,对象通常通过在代码中显式创建依赖对象的实例(new),来管理依赖关系。这种方式会导致代码的耦合度很高,难以维护测试。依赖注入通过将对象的创建和依赖关系的管理外包给框架或容器,减少对象之间的耦合度

在Spring中,spring会自动注入依赖关系

TestA testa;
@Autowired
public void setTesta(TestA testa){
    System.out.println("2------注入属性");
    this.testa=testa;
}

如上,我们在外面声明一个testa,并没new,而在方法中直接使用了

常用注解

@Controller

@Controller是Spring框架中一个注解,用于标记一个类为控制器,表示这个类会处理http请求,并返回视图,负责用户的请求映射到具体的方法

人话:与前端进行交互,接收请求,返回结果。

与ResController类似,但通常是返回一个视图

@Controller
public class EasyBController {
    @RequestMapping("testm")
    public ModelAndView testM(){
        ModelAndView mav=new ModelAndView();
        mav.setViewName("index");
        mav.addObject("username","张三");
        return mav;
    }
}

@ResController

@RestController
public class EasyAController {
    @Autowired  
    TestA test;//用@Autowired注解用于注入依赖,Spring 将会自动找到一个 TestA类型的Bean并注入到test变量中。
    @RequestMapping("testa")
    public String testA(){
        test.test();
        return "EasyA method";
    }

@RequestMapping("testa"):注解用于映射http请求到特定的处理方法中,teata作为url路径被映射到testA()方法上,当用户访问/testa时,会调用该方法并返回方法的返回值

@Service

用于标识一个类是服务层组件。通常定义业务逻辑,通常位于应用程序的业务逻辑层,在典型的三层架构中,@Service 注解的类通常位于服务层,它们调用数据访问层的代码(通常使用 @Repository 注解),并且将处理后的数据返回给控制器层(通常使用 @Controller@RestController 注解)。

@Repository

@Repository 标识一个类是数据访问层组件,表明这个类用于与数据库进行交互。

@Component

@Component 是 Spring Framework 中的一个通用注解,用于标识一个类是 Spring 管理的一个组件(Bean)。它是 Spring 容器中的基础注解,可以用于任何需要被 Spring 容器管理的类上。@Component 是一个通用注解,它可以用于任何层(数据访问层、业务层、表示层等)的类上,而不像 @Controller@Service@Repository 那样有特定的用途。

@Bean

@Bean 是 Spring 框架中的一个注解,用于告诉 Spring 容器一个方法将返回一个对象,该对象要被注册为 Spring 应用上下文中的一个 Bean。与 @Component 类似,@Bean 也是用来定义 Spring 管理的 Bean 的方式之一,但它通常用于更灵活或需要显式控制的情况。

@Component使用在类上用于实例化Bean
@Controller使用在web层类上用于实例化Bean
@Service使用在service层类上用于实例化Bean
@Repository使用在dao层类上用于实例化Bean

@Configuration

@Configuration 是 Spring Framework 中的一个注解,用于标识一个类作为配置类。配置类是用来定义 Spring 应用上下文中的 Bean 的类。通过使用 @Configuration 注解,开发者可以在 Java 类中直接定义 Bean,而不必使用 XML 配置文件,从而实现了 Java 配置的方式。

主要特点

  1. 标识配置类@Configuration 注解标识一个类为 Spring 配置类。这些类通常包含了 @Bean 注解的方法,这些方法返回的对象会被 Spring 容器管理。

  2. 定义 Bean:在 @Configuration 类中定义的 @Bean 注解方法会被 Spring 容器调用,方法返回的对象会被注册为 Spring 上下文中的 Bean。

  3. 支持依赖注入@Configuration 类支持依赖注入,可以在其方法中注入其他 Bean,并通过方法参数传递给 Bean 的构造函数。

  4. 容器内置的单例保证@Configuration 类中的 Bean 定义方法会被 Spring 容器以单例模式创建和管理,确保同一个 Bean 实例在整个应用程序上下文中只有一个。

StringBean的作用域

//singleton 单例模式 一个对象 默认的Bean的作用域
//prototype 原型模式 每次需要都来一个新的对象
//request   web项目中请求作用域 每次请求都会创建一个新的对象
//session   每次会话都会创建一个新的对象 1.默认30分钟没有访问就断掉会话 2.主动退出
//GlobalSession 全局的会话

1. Singleton(单例)

  • singleton是Bean的默认作用域。与Java中的单例设计模式类似,但有一些重要的区别。Spring的singleton作用域确保在整个Spring容器生命周期内,一个Bean类只有一个实例,而这个实例会被共享和复用。
  • 单一实例:Spring容器中每个singleton作用域的Bean在容器中只有一个实例,无论你请求多少次该Bean,得到的都是同一个对象。
  • 默认作用域:如果你不为Bean指定作用域,Spring会默认将其设为singleton
  • 全局共享:无论在Spring应用上下文中请求多少次,该Bean的实例都是相同的,所有请求者共享这个实例。
  • 管理生命周期:Spring容器管理singleton Bean的整个生命周期,包括实例化、初始化和销毁。

2. Prototype(原型)

  • 每次请求创建新实例:在Prototype作用域下,每当你通过Spring容器请求一个Bean时,都会得到一个全新的实例。
  • 不共享实例:与Singleton作用域共享同一实例不同,Prototype作用域确保每个依赖此Bean的组件都有自己独立的实例。
  • 适用于有状态Bean:如果Bean需要保存不同的状态信息,并且这些状态信息在不同使用者之间不应该共享,那么Prototype是合适的选择。

3. Request(请求)

定义:@Scope("request")

说明:在每个 HTTP 请求中,Spring 容器会创建一个新的 Bean 实例。这个作用域只适用于 Web 应用程序。

4. Session(会话)

  • 定义@Scope("session")

  • 说明:在每个 HTTP 会话中,Spring 容器会创建一个新的 Bean 实例。这个作用域只适用于 Web 应用程序。

springbean的生命周期

1--------构造方法
2--------注入属性
3--------BeanNameAware接口的setBeanName方法easyBean
4--------BeanFactoryAware接口的setBeanFactory方法

5--------ApplicationContextAware接口中的ApplicationContext方法
6--------执行BeanPostProcessor接口的before
7--------InitializingBean的afterPropertiesSet方法
8--------init method
9--------执行BeanPostProcessor接口的after

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值