Spring存储基础知识

一、对象存储 

1.创建bean对象

public class User {

    public void sayHi() {
        System.out.println("hi student");
    }
}

2.bean存入Spring

spring-config.xml,将 bean(com.spring.demo.User)存到 Spring 容器中,它的名称叫做 id id指的是将对象存储在IOC容器的姓名,class是要存储到IOC 中完整的Bean路径包括包名+类名 


    <bean id="user" class="com.spring.demo.User"></bean>

3.容器获取到bean对象

ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");

4.获取Bean对象

get bean 用法

4.1根据用户名称获取Bean对象(id)

Use user = (User) context.getBean("user"); // 根据名称获取

4.2根据类型获取Bean对象

当同一个类型注入到Spring多个情况,使用类型获取Bean就会报错

User user = context.getBean(User.class); // 根据类型获取

4.3根据用户名称+类型获取Bean对象

User user = context.getBean("user", User.class); 

二、类注解

1.必要工作

<content:component-scan base-package="com.java.demo"></content:component-scan>

2.@Controller

控制器,验证数据的准确性

2.1@Controller实现Bean处理

package com.java.demo.controller;

import org.springframework.stereotype.Controller;

@Controller
public class SController {
    public void sayHi() {
        System.out.println("do SController sayHi()");
    }
}

2.2读取Bean

详见本文第一项对象存储

3.@Service

服务,编排调度实际方法的

4.@Repository

持节层和数据库交互的

5.@Component

工具类

6.@Configuration

配置项

三、使用@Bean方法注解存储对象到Spring容器

1.bean对象命名 存储对象的名称为方法名

2.@Bean 配合五大类注解

@Component
@Order(1) // 控制注入的顺序
public class UserBeans {
    @Bean
    public User getuserbyid() {
        User user = new User();
        user.setUid(1);
        user.setUsername("张三");
        user.setPassword("123456");
        user.setAge(18);
        return user;
  }

3.@Bean重命名

@Bean(name={"名字"})

重命名后默认使用方法获取对象方法不可使用

四、对象注入

从Spring容器中读取某个对象,放到当前类里面

1.属性注入

1.属性注入
     @Autowired // 注入对象(更加简单的从 spring 容器中读取到对象) 
      @Resource
      private UserService userService;

优点:简单

缺点:

1.没办法实现final修饰的变量注入

2.兼容不好只适用于Ioc容器

3.风险:违背单一设计原则的概率更多

2.Setter注入

//    // 2.Setter 注入
 private UserService userService;

   @Autowired
  public void setUserService(UserService userService) {
      this.userService = userService;
  }

优点:符合单一设计原则

缺点:1.不能注入不可变对象(final)

2.使用setter对象可能会被修改

3.构造方法注入

   private final UserService userService;

    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }

优点:1.可以注入不可变对象

2.注入对象不会改变(构造方法只能执行一次)

3.保证注入对象完全被初始化

4.通用性更好

5.@Autowired vs @Resource

@Autowired根据类型查找 之后根据名称查找

@Resource 根据名称查找 之后根据类型查找

五、lombok使用

1.在框架中添加lombok依赖

pom文件添加

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.4</version>
    <scope>provided</scope>
</dependency>
 

2.使用注解

3.添加lombok插件

六、Bean作用域

1.单例模式 singleton

2.原型模式 prototype

3.请求作用域 request 每次请求都会创建一个Bean对象 适用于 Spring MVC/Spring Web

4.会话作用域 session  每次会话共享一个Bean对象 适用于 Spring MVC

5.全局作用域 application 一个Http servlet 中共享一个bean

@Scope(value = "prototype")

七、Bean生命周期

1.开辟内存空间

2.设置属性(注入属性)

3.初始化

   各种通知

   初始化前置方法

    初始化方法(xml、注解方法)

     初始化后置方法

4.使用Bean

5.销毁Bean对象

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud是一个基于Spring Framework的开发工具集,用于构建分布式系统的微服务架构。它提供了一系列的组件和工具,用于简化分布式系统开发、部署和管理的复杂性。以下是Spring Cloud的一些基础知识: 1. 服务注册与发现:Spring Cloud通过服务注册与发现组件,如Eureka、Consul等,实现了服务的自动注册和发现。服务提供者在启动时将自己注册到注册中心,服务消费者通过注册中心获取可用的服务实例。 2. 负载均衡:Spring Cloud通过Ribbon实现了客户端负载均衡。它可以根据负载均衡策略选择合适的服务实例进行请求转发,提高系统的可用性和性能。 3. 服务调用:Spring Cloud通过Feign或RestTemplate实现了服务之间的远程调用。开发者可以像调用本地方法一样调用远程服务,简化了服务间通信的复杂性。 4. 服务熔断与降级:Spring Cloud通过Hystrix实现了服务的熔断与降级。当某个服务发生故障或响应过慢时,可以通过熔断器快速失败并返回默认值,避免级联故障。 5. 配置中心:Spring Cloud Config提供了集中式的配置管理,可以将应用程序的配置集中存储在配置中心,并通过动态刷新机制实现配置的动态更新。 6. 链路追踪:Spring Cloud Sleuth和Zipkin可以实现分布式系统的链路追踪。通过生成唯一的跟踪ID,可以追踪请求在不同服务之间的流转路径,方便排查分布式系统的问题。 以上只是Spring Cloud的一些基础知识,它还包括了很多其他功能和组件,如服务网关、消息总线、分布式配置等。通过使用Spring Cloud,开发者可以更方便地构建和管理分布式系统的微服务架构。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值