java-Spring框架-入门学习-第一天

 Spring 定义

​Spring是一款主流的 Java EE 开源框架,目的是用于简化Java企业级引用的开发难度和开发周期。从简单性、可测试性的角度而言,任何Java应用都可以从Spring中受益。Spring框架提供自己提供功能外,还提供整合其他技术和框架的能力。

​ 自2004年4月,Spring1.0 版正式发布以来,Spring已经步入到了第6个大版本,即 Spring6,本课程采用 Spring5.3.24 正式版本。


Spring的两个核心模块

IoC控制反转

Inverse of Control 的简写,为 控制反转,指把创建对象交给 Spring 进行管理。

作用 IoC使得代码不在直接依赖具体的对象,而依赖一个抽象,这个抽象运行会由IoC容器来注入具体的对象
反转资源获取方向,把自己创建资源、向环境索取资源的方式变为环境自动将资源准备好,我们享受资源注入。

AOP面向切面编程

Aspect Oriented Programming 的简写,为 面向切面编程。AOP 用来封装多个类的公共行为,将那些与业务无关,却为业务模块共同调用的逻辑封装起来,减少系统的重复代码

相关概念

IoC容器
IoC容器是用来实现IoC思想的一个工具或者说技术手段
它能够自动扫描应用程序中的对象,将它们实例化,并自动注入它们所需要的依赖对象,使应用程序的开发人员能够更加专注于业务逻辑的实现,而不用关心对象的创建和管理。Spring通过IoC容器来管理所有的Java对象的实例化和初始化,控制着对象与对象之间的依赖关系。

简单来说:  负责对象的实例化,定位,配置以及建立对象间的依赖关系

依赖注入DI

DI (Dependency Injection):依赖注入,依赖注入实现了控制反转的思想,是指Spring创建对象的过程中,将对象依赖属性通过配置进行注入。

依赖注入是一种将依赖关系从代码中分离出来,由Ioc容器在运行时动态注入到对象中的技术

依赖注入由两种注入方式 设值注入和构造注入 设值注入通过setter方法将依赖对象注入到被依赖对象中,构造注入则是构造被依赖对象是,通过构造函数参数 将依赖对象传入

IoC容器实现

Spring中的IoC容器就是IoC思想的一个落地产品实现。IoC容器中管理的组件也叫做bean。在创建bean之前,首先需要创建IoC容器,Spring提供了IoC容器的两种实现方式

  • BeanFactory

    这是IoC容器的基本实现,是Spring内部使用的接口,面向Spring本身,不提供给开发人员使用。

  • ApplicationContext

    BeanFactory的子接口,提供了更多高级特性,面向Spring的使用者,几乎所有场合都使用 ApplicationContext,而不使用底层的BeanFactory。

ApplicationContext的实现方式
类型说明
AnnotationConfigApplicationContext使用注解构建IoC容器
ClassPathXmlApplicationContext使用XML配置文件方式构建SpringIoC容器

Bean对象定义及获取

在Spring框架规范中,所有由spring管理的对象都称之为Bean对象

  

Spring定义在类上的注解
注解说明
@Component

用于描述Spring中的Bean,泛化概念,作用与任何层次,

使用时只需将该注解标注在相应的类即可

@Repository

用于数据访问层(Dao层)的类标识为Spring中的Bean

功能同@Component相同

@Service

用于业务层(Service层)的类标识为Spring中Bean

功能@Component相同

@Controller

用于控制层(Spring MVC的Controller)的类标识为

Spring中的Bean功能@Component相同

Bean对象获取

这边常见用的是通过注解获取对象Bean对象

//这边我们先需要创建一个被注解定义的java类,让其变成Spring Bean
@Component
class User{}
//这边创建一个测试类用于测试User的实例化对象被创建了
class TestUser{
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext("user的java包名");
User user = context.getBean(User.class);
System.out.println("user地址: " + user);

}}
依赖注入

第一种 : @Value 值的注入

//这边使用的是依赖注入第一种 @Value值的注入
@Repository
public class User {
    @Value("jdbc:mysql://localhost:3306/test")
    private String databaseUrl;
    @Value("root")
    private String username;
    @Value("root")
    private String password;

    @Override
    public String toString() {
        return "UserDao{" +
                "databaseUrl='" + databaseUrl + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

执行操作

第二种构造参数注入

1 普通类对象

//这边使用的自动装配 @Autowired 这边使用的包名 demo.test.user
@Component
class User{
}
@Component
class UserDealWith{
@Autowired 
private User user;
}
class TestUser{
ApplicationContext context = new AnnnotationConfigApplicationContext("demo.test.user");
User user = context.getBean(User.class);
System.out.printIn("user"+ user)
}

解释

TestUser类现在包含了一个main方法,这样您就可以直接运行它。AnnotationConfigApplicationContext会加载包demo.test.user下的组件,并且因为UserDealWith类中有@Autowired注解,Spring会尝试自动装配一个User类型的bean。如果User类是一个组件(由@Component注解标记),并且没有多个同类型的bean导致歧义,那么UserDealWith中的user字段将会被自动装配。 

2.接口对象

//这边执行的包名 demo.test.user
interface Product {}  
  
@Component  
class Window implements Product {}  
  
@Component  
class WindowDealWith {  
    @Autowired  
    private Product product;  
}  
  
public class TestProduct {  
    public static void main(String[] args) {  
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext("demo.test.user");  
        WindowDealWith deal = context.getBean(WindowDealWith.class);  
    }  
}

WindowDealWith类通过 @Autowired 注解注入了一个 Product 类型的 product字段。由于 Window 类实现了Product 接口,Spring 会尝试在上下文中找到一个类型为Product  的 bean,并自动将它注入到WindowDealWith 的 product字段中。

一旦注入完成,WindowDealWith 类的实例 deal 就可以通过  product 字段来调用 Product  接口中定义的方法(如果Window​​​​​​​ 类提供了这些方法的实现的话)。但需要注意的是,你只能调用 Product  接口中声明的方法,而不能直接调用 Window 类特有的方法,除非你将  product  字段的类型更改为Window 或其超类/接口。

 @Resource 很少用,这边我主要记住其和@Autowired的区别

本次学习的问题

说说 @Autowired 注解和 @Resource 注解的区别?  

@Autowired注解是类型驱动的注入,它会根据字段或方法的类型在Spring容器中查找匹配的Bean进行注入。如果存在多个相同类型的Bean,可以通过@Qualifier注解来指定具体的Bean名称或ID。

@Resource注解则是名称驱动的注入,它会根据注解中的name属性来查找匹配的Bean进行注入。如果未指定name属性,Spring会先按类属性的变量名查找,如果还是未找到,则按类型进行查找。

@Resource注解在解决多个相同类型Bean的问题时,只要保证Bean命名唯一,就可以避免冲突。
在使用位置上

@Autowired注解可以放置在构造方法、Setter方法、字段和方法上,提供了更大的灵活性。

而@Resource注解则只能放置在Setter方法和字段上

  • 27
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pulsar-java-spring-boot-starter是一个用于在Spring Boot应用程序中集成Apache Pulsar消息队列的开源库。Apache Pulsar是一个可扩展的、低延迟的分布式消息传递平台,它具有高吞吐量和高可靠性的特点。 pulsar-java-spring-boot-starter允许开发人员在Spring Boot应用程序中轻松地发送和接收Pulsar消息。它提供了一组容易使用的注解和工具类,简化了与Pulsar集群的交互。 使用pulsar-java-spring-boot-starter,开发人员可以通过添加依赖和配置一些属性来快速集成Pulsar到他们的Spring Boot应用程序中。一旦集成完成,开发人员可以使用注解来定义消息的生产者和消费者。通过生产者注解,开发人员可以将消息发送到Pulsar集群,并指定消息的主题和内容。通过消费者注解,开发人员可以订阅Pulsar主题,并定义接收和处理消息的方法。 除了基本的生产者和消费者功能,pulsar-java-spring-boot-starter还提供了一些其他特性。例如,它支持失败重试机制,当消息发送或接收出现问题时,可以自动重试。它还支持消息过滤器,可以按条件过滤接收的消息。而且,它还提供了一些监控和管理功能,可以方便地监控消息的生产和消费情况。 总之,pulsar-java-spring-boot-starter为Spring Boot开发人员提供了一种方便、快捷地集成Apache Pulsar消息队列的方法。它简化了与Pulsar集群的交互,提供了易于使用的注解和工具类,让开发人员可以更专注于业务逻辑的实现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值