Spring中如何用注解方式存取JavaBean?有几种注入方式?

9 篇文章 0 订阅
订阅专栏

 

本篇文章将讲解如何在spring中使用注解的方式来存取Bean对象,spring提供了多种注入对象的方式,常见的注入方式包括 构造函数注入,Setter 方法注入和属性注入,不同的注入方式都有优缺点,下面我们来讲解一下~~


目录

文章目录

一、使用注解方式的前提

1.1 前置工作

1.2 什么是注解?

二、spring基于注解存储Bean对象

2.1 类注解方式

2.2 如何读取Bean对象?

2.3 读取Bean对象时的命名规则

2.4 方法注解方式

 三、基于注解获取Bean对象(对象装配)

3.1 属性注入

3.2 Setter方法注入

3.3 构造方法注入

3.4 三种注入方式的优缺点:

缺点3:设计原则问题

优点3:完全初始化

优点4:通用性更好

四、@Resource另⼀种注⼊关键字

4.1 @Autowired 和 @Resource 的区别

4.2 同⼀类型多个 Bean 报错处理


一、使用注解方式的前提

1.1 前置工作

在我们使用注解方式来存储 Bean对象 的前提,我们要先将配置文件写好,因为在spring框架中,约定大于配置!既然想使用它的方式,就要按照人家的规定来配置。

先在 spring-config.xml 中配置包扫描路径,这样才能使注解被正确识别:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:content="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    
    <content:component-scan base-package="com.demo"/>
    
</beans>

其中 base-package 中的路径对应你项目中的包名即可 

也就是说,即使添加了注解,如果不是在配置的扫描包下的类对象,也是不能被存储到 Spring 中的

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>spring-demo1</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>


    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>
    </dependencies>
</project>

1.2 什么是注解?

注解就是代码中的特殊标记,无需在xml中配置繁琐的Bean对象代码,注解可以作用在类、方法、属性上。spring 针对 Bean对象的管理提供了注解方式,在 spring中,注解可以分为两大类:

  1. 类注解: 以下四个注解都可以用来创建bean实例,只是为了便于开发者清晰区分当前层。
  2. 方法注解:@Bean
  • @Controller:表示的是业务逻辑层;
  • @Service:服务层;
  • @Repository:持久层;
  • @Configuration:配置层;
  • @Component:组件层

为什么需要这么多个类注解呢?

这是因为让程序猿看到类注解之后,就能直接了解当前类的用途,也是为了开发更加方便~

 在我们查看上面类注解的源码中,可以发现:

 其实这些注解⾥⾯都有⼀个注解 @Component,说明它们本身就是属于 @Component 的“⼦类”

二、spring基于注解存储Bean对象

2.1 类注解方式

@Controller 控制器存储

@Controller
public class BController {
    public String sayHi() {
        return "Hi,Controler.";
    }
}

@Service 服务存储

@Service
public class StudentService {
    public void sayHi(){
        System.out.println("Hi,Service");
    }
}

@Repository 仓库存储

@Repository
public class UserRepository {
    public String sayHi(){
        return "Hi,@Repository";
    }
}

@Component 组件存储

@Component
public class UserComponent {
    public String sayHi() {
        return "Hi,@Component.";
    }
}

@Configuration 配置存储

@Configuration
public class UserConfiguration {
    public String sayHi(){
        return "Hi,@Configuration";
    }
}

2.2 如何读取Bean对象?

这里以读取 BController 对象为例, 由于前两个首字母都是大写的,所以我们使用原类名就可以读取到相应的 JavaBean 了。

那如果我们的首字母不大写,或者只有一个字母大写会发生什么?

2.3 读取Bean对象时的命名规则

这个时候,我们就要查询 Spring 关于 bean 存储时⽣成的命名规则了。我们可以在 Idea 中使⽤搜索关键字“beanName”可以看到以下内容。

 它使⽤的是 JDK Introspector 中的 decapitalize ⽅法,源码如下:

    public static String decapitalize(String name) {
        if (name == null || name.length() == 0) {
            return name;
        }
        if (name.length() > 1 && Character.isUpperCase(name.charAt(1)) &&
                        Character.isUpperCase(name.charAt(0))){
            return name;
        }
        char chars[] = name.toCharArray();
        chars[0] = Character.toLowerCase(chars[0]);
        return new String(chars);
    }
  1. 如果第⼀个字⺟和第⼆个字⺟都为⼤写的情况,是把 bean 的⾸字⺟也⼤写存储了
  2. 其他的命名规则都是首字母小写即可(默认)

如果不遵守这个规则的话,可是会报错的,如下:找不到此Bean对象

2.4 方法注解方式

类注解用于标记类为Spring Bean,使用@ComponentScan扫描时,每个注解只会创建一个Bean对象,因此在同一个ApplicationContext容器中,获得的对象是同一个。

那么如果想要获取不同的对象怎么办呢? 下面我们就来聊一聊方法注解~

顾名思义,⽅法注解就是是放到某个⽅法上的,以下是简单的代码实现:需要注意的是 ⽅法注解 @Bean 要配合类注解才能将对象正常的存储到 Spring 容器中

@Component
public class StudentBeans {

    //    @Bean(name = {"s1", "s2"})
    @Bean
    public Student student1() {
        // 伪代码,构建对象
        Student stu = new Student();
        stu.setId(1);
        stu.setName("张三");
        stu.setAge(18);
        return stu;
    }

    @Bean
    public Student student2() {
        // 伪代码,构建对象
        Student stu = new Student();
        stu.setId(2);
        stu.setName("李四");
        stu.setAge(20);
        return stu;
    }

}
public class App {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        Student student = context.getBean("student1",Student.class);
        System.out.println(student);

        Student student2 = context.getBean("student2",Student.class);
        System.out.println(student2);
    }
}

@Bean默认情况下,Bean name = 方法名

 三、基于注解获取Bean对象(对象装配)

获取 bean 对象也叫做对象装配,是把对象取出来放到某个类中,有时候也叫对象注⼊。

对象装配(对象注⼊)的实现⽅法以下 3 种:

  1. 属性注⼊
  2. 构造⽅法注⼊
  3. Setter 注⼊

不同的注入方式有不同的适用场景和优缺点。以下案例则以将 Service 类注⼊到 Controller 类中为切入点,帮助大家了解三种注入方式的优缺点和区别~

3.1 属性注入

Controller

@Controller
public class BController {
    
    @Autowired
    private StudentService studentService;
    
    public void sayHi() {
        studentService.sayHi();
    }
}

Service 

@Service
public class StudentService {
    public void sayHi(){
        System.out.println("Hi,Service");
    }
}

此时,通过如下的代码,即可通过 Controller 的 sayHello() 方法调用 service 中的 sayHi() 方法。其余两种装配实现方式,该部分代码等同,Service 也等同,就不再赘述了。

public class App {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        BController controller = context.getBean("BController",BController.class);
        controller.sayHi();
    }
}

3.2 Setter方法注入

即,在 setter 方法前加上 @Autowired 注解。

@Controller
public class BController {
    
    private StudentService studentService;

    @Autowired
    public void setStudentService(StudentService studentService){
        this.studentService = studentService;
    }

    public void sayHi() {
        studentService.sayHi();
    }
}

3.3 构造方法注入

构造⽅法注⼊是在类的构造⽅法中实现注⼊。在类中添加带有参数的构造方法,Spring会根据参数类型和名称,在容器中找到相应的Bean进行注入。特别地,如果只有⼀个构造⽅法,那么 @Autowired 注解可以省略~

@Controller
public class BController {

    private StudentService studentService;

    @Autowired
    public BController(StudentService studentService){
        this.studentService = studentService;
    }

    public void sayHi() {
        studentService.sayHi();
    }
}

3.4 三种注入方式的优缺点:

1.属性注入最大的优点就是实现简单、使用简单

   属性注入的缺点主要包含以下 3 个:

  1. 功能性问题:无法注入一个不可变的对象(final 修饰的对象);
  2. 通用性问题:只能适应于 IoC 容器;
  3. 设计原则问题:更容易违背单一设计原则。

缺点1:功能性问题

使用属性注入无法注入一个不可变的对象(final 修饰的对象),如下图所示:

原因也很简单:在 Java 中 final 对象(不可变)要么直接赋值,要么在构造方法中赋值,所以当使用属性注入 final 对象时,它不符合 Java 中 final 的使用规范,所以就不能注入成功了。

如果要注入一个不可变的对象,要怎么实现呢?使用下面的构造方法注入即可。

缺点2:通用性问题

使用属性注入的方式只适用于 IoC 框架(容器),如果将属性注入的代码移植到其他非 IoC 的框架中,那么代码就无效了,所以属性注入的通用性不是很好。

缺点3:设计原则问题

单一设计原则 定义: 就一个类而言, 应该仅有一个引起它变化的原因。单一设计原则就是自己只负责自己的事,不需要去关心别人的事。

使用属性注入的方式,因为使用起来很简单,所以开发者很容易在一个类中同时注入多个对象,而这些对象的注入是否有必要?是否符合程序设计中的单一职责原则?就变成了一个问题。 但可以肯定的是,注入实现越简单,那么滥用它的概率也越大,所以出现违背单一设计原则的概率也越大。 注意:这里强调的是违背设计原则(单一职责)的可能性,而不是一定会违背设计原则此处针对对象是类。

2.Setter 注入的优缺点

要说 Setter 注入有什么优点的话,那么首当其冲的就是它完全符合单一职责的设计原则,因为每一个 Setter 只针对一个对象

它的缺点主要体现在以下 2 点:

  1. 不能注入不可变对象(final 修饰的对象);
  2. 注入的对象可被修改。

缺点2:注入对象可被修改

Setter 注入提供了 setXXX 的方法,意味着你可以在任何时候、在任何地方,通过调用 setXXX 的方法来改变注入对象,所以 Setter 注入的问题是,被注入的对象可能随时被修改

3. 构造方法注入的优缺点

构造方法注入是 Spring 官方从 4.x 之后推荐的注入方式。

构造方法注入相比于前两种注入方法,它可以注入不可变对象,并且它只会执行一次,也不存在像 Setter 注入那样,被注入的对象随时被修改的情况,它的优点有以下 4 个:

  1. 可注入不可变对象;
  2. 注入对象不会被修改;
  3. 注入对象会被完全初始化;
  4. 通用性更好。

优点2:注入对象不会被修改

因为加了final关键字,而且构造方法注入不会像 Setter 注入那样,构造方法在对象创建时只会执行一次,因此它不存在注入对象被随时(调用)修改的情况。

优点3:完全初始化

因为依赖对象是在构造方法中执行的,而构造方法是在对象创建之初执行的,因此被注入的对象在使用之前,会被完全初始化,这也是构造方法注入的优点之一。

优点4:通用性更好

构造方法和属性注入不同,构造方法注入可适用于任何环境,无论是 IoC 框架还是非 IoC 框架,构造方法注入的代码都是通用的,所以它的通用性更好。

四、@Resource另⼀种注⼊关键字

在进⾏类注⼊时,除了可以使⽤ @Autowired 关键字之外,我们还可以使⽤ @Resource 进⾏注⼊,如下代码所示:

@Controller
public class BController {

    @Resource
    private StudentService studentService;

    public void sayHi() {
        studentService.sayHi();
    }
}

4.1 @Autowired 和 @Resource 的区别

  1. 出身不同:@Autowired 来⾃于 Spring,⽽ @Resource 来⾃于 JDK 的注解;
  2. 使⽤时设置的参数不同:相⽐于 @Autowired 来说它只支持required,@Resource ⽀持更多的参数设置,例如name 设置,根据名称获取 Bean。
  3. @Autowired 可⽤于 Setter 注⼊、构造函数注⼊和属性注⼊,⽽ @Resource 只能⽤于 Setter 注⼊和属性注⼊,不能⽤于构造函数注⼊

4.2 同⼀类型多个 Bean 报错处理

当出现以下多个 Bean,返回同⼀对象类型时程序会报错,如下代码所示:

@Component
class UserComponent {
    @Bean
    public User user1() {
        User user = new User();
        user.setId(1);
        user.setName("Java");
        return user;
    }
    @Bean
    public User user2() {
        User user = new User();
        user.setId(2);
        user.setName("MySQL");
        return user;
    }
}

在另⼀个类中获取 User 对象,如下代码如下:

@Controller
public class UserController {
    // 注⼊
    @Resource
    private User user;
    public User getUser() {
        return user;
    }
}

解决同⼀个类型,多个 bean 的解决⽅案有以下两个:

  1. 使⽤ @Resource(name="user1") 定义。
  2. 使⽤ @Qualifier 注解定义名称,结合@Autowired

使⽤ @Resource(name="XXX")

@Controller
class UserController {
    // 注⼊
    @Resource(name = "user1")
    private User user;

    public User getUser() {
        return user;
    }
}

使⽤ @Qualifier

@Controller
public class UserController {
    // 注⼊
    @Autowired
    @Qualifier(value = "user2")
    private User user;
    public User getUser() {
        return user;
    }
}

@Qualifier中value可以省略~


 创作不易,欢迎大家私信我,一起探讨问题~ 

Spring第一讲:谈谈你对Spring的理解?从该问题着手深入解析Spring/Spring5新特性
Jet_qi的博客
12-27 1614
谈谈你对Spring的理解? 深入解析spring框架 摘要:面试时常常被面试官问到这个问题,题目太大了,我会从Spring架构/bean初始化流程/bean生命周期/设计模式这几个方面来回应面试官。spring框架的核心技术:控制反转/依赖注入/面向切面编程/spring的声明式事务/以及spring生态相关产品的简介,我会在这篇文章详细说明。 1、什么是Spring? (在servle..................
java读取properties值_Java读取properties文件内容的几种方式
weixin_36005427的博客
02-24 1710
一、通过context:property-placeholder加载配置文件jdbc.properties的内容ignore-unresolvable="true"/>上面的配置和下面配置等价,是对下面配置的简化:classpath:jdbc.properties二、使用util:properties标签进行暴露properties文件的内容注意:使用上面这行配置,需要在spring-d...
spring 依赖注入_【Spring基础】JavaBean的配置与依赖注入
weixin_39632693的博客
11-26 224
0 前言Spring的核心就是提供了一个IoC(Inversion of Control)容器,它可以管理所有轻量级的JavaBean组件,提供的底层服务包括组件的生命周期管理、配置和组装服务、AOP支持,以及建立在AOP基础上的声明式事务服务等。本本主要展示IoC容器对JavaBean装配,以及依赖的注入几种方式。看本文之前请务必学习JAVA基础。1 传统的实现方式先来看下面这个例子:clas...
javabean注解
Cxgoodjob的博客
11-06 555
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma...
每日一题07:Bean有几种注入方式?它们有什么区别?
hello77的blogggg 祝你得偿所愿
08-26 447
Bean有三种注入方式,属性注入,setter注入,构造方法注入
SpringjavaBean、依赖注入、面向切面AOP、使用注解开发
m0_73976305的博客
06-03 1672
JavaBean IoC理论基础 使用IoC容器 使用Spring 生命周期与继承 生命周期 继承 依赖注入 Dependency Injection 基本类型注入 非基本类型注入 集合注入 自动装配注入 面向切面AOP 使用SpringAOP 环绕方法 使用接口实现AOP 使用注解开发 注解实现配置文件 注解实现AOP操作 其他注解配置
java bean的注入,【SpringJavaBean的2种注入方法深入显出
weixin_42783709的博客
03-10 888
SpringJavaBean的2种注入方法深入浅出林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka在定义了 JavaBean 装载信息之后需要对其赋值。一个 JavaBean 的赋值可以通过构造方法完成初始化,或者通过 set()方法初始化和改变属性值。下面分别介绍如何在 XML 配置 JavaBean 的属性为构造方法和 set()方...
java bean spring_通过Spring实现JavaBean注入
weixin_42364539的博客
02-16 101
通过Spring实现JavaBean注入需求:通过配置文件, 实现注入JavaBean,从而获取到xml文件的Value值。实现方式:1.xml的配置。在resource目录下,DispatcherServlet-servlet.xml写我们需要注入javabean。如图所示:解释:我们定义一个webAppVersion,然后指定其类型为String。然后通过标签来实现Value的注入。标...
MongoDB——》SpringBootMongoDB注解概念及使用
小仙~
01-07 1996
版权声明:本文为博主原创文章,无需授权即可转载,甚至无需保留以上版权声明,转载时请务必注明作者。 https://blog.csdn.net/weixin_43453386/article/details/86007121 MongoDB——》SpringBootMongoDB注解概念及使用一、@Document : 文档1、概念2、用法二、@Id : 主键1、概念2、用法三、@Indexed ...
基于Spring-Data-Redis存储JavaBean对象
chenfengdejuanlian的专栏
01-05 8579
redis是使用比较广泛的缓存开源工具,一开始保存String对象的数据很方便,但是在保存一个对象上面费了点时间。下面就使用redis保存pojo对象。 1、安装redis 这个讲的很详细:http://www.cnblogs.com/koal/p/5484916.html 2、新建一个maven工程 在pom.xml添加配置文件<project xmlns="http://maven.a
Spring面试题大全
m0_59114107的博客
03-10 102
Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,因此Java开发者可以专注于应用程序的开发Spring最根本的使命是解决企业级应用开发的复杂性,即简化Java开发。
Spring的setter注入和构造器注入
Amelia_Liu的博客
12-05 1717
Emp.javapackage com.lovo.bean; public class Emp { private String name; private Dept dept; public Emp() { super(); } public Emp(String name, Dept dept) { super(); this.name = name;
JavaBean交给IoC容器管理和依赖注入DI
weixin_51992178的博客
09-16 495
Bean的作用域为单例模式,那么它会在一开始就被创建,而处于原型模式下,只有在获取时才会被创建,也就是说,单例模式下,Bean会被IoC容器存储,只要容器没有被销毁,那么此对象将一直存在,而原型模式才是相当于直接new了一个对象,并不会被保存。自动装配会根据set方法需要的类型,自动在容器查找是否存在对应类型或是对应名称以及对应构造方法的Bean,比如我们上面指定的为`byType`,那么其的card属性就会被自动注入类型为Card的Bean。一个Map类型可以使用`entry`来注入
Bean的存取、五大注解、对象的注入方式Bean的作用域和生命周期
qq_56324572的博客
05-11 1645
PS:Java语言的对象也叫作 Bean。PS:要在 pom.xml 添加 spring 框架支持启动类(包含main方法即可):创建bean:配置文件: 注册bean:类注解:@Controller、@Service、@Repository、@Component、@Configuration注解的作用:便于直接了解类的作用。1.1.1、@Controller(控制器)——表示的是业务逻辑层,接口的最外层,验证参数接口的正确性或者参数的转换、返回。存储 bean:读取 bean: 1.1.2、@Se
Spring注入bean的几种方式以及常用注解
qq_39183829的博客
07-29 2639
Spring注入bean的几种方式以及常用注解1. 控制反转(IOC)1.1 依赖注入1.2 bean创建方式1.3 DI属性注入1.3.1 set注入1.3.2 引用类型的set注入1.3.3 构造注入1.3.4 应用类型自动注入1.4 spring注解1.4.1 组件扫描器1.4.2 @Component1.4.3 @Respository1.4.4 @Service1.4.5 @Controller1.4.6 @Value1.4.7 @Resource 1. 控制反转(IOC) 定义: 把对象的创建、
Spring系列-3 Bean实例化与依赖注入
Sheng_Q的博客
01-25 4982
Spring管理着Bean对象的生命周期,包括实例化、属性设置、初始化、销毁等;其实例化和属性设置过程存在着依赖注入。 本文承接上文 [Spring系列-2 Bean的生命周期](https://blog.csdn.net/Sheng_Q?type=blog),重点介绍Bean生命周期的实例化与依赖注入过程,介绍原理时会结合Spring源码进行。
[Spring] @Bean 修饰方法时如何注入参数
joyride_run的博客
10-06 5027
(4-1)@Bean 注解的方法,其返回值就是一个 <bean> 对象,并且注册到了 IOC 容器
Spring——Bean注入几种方式(放入容器)
共勉
11-20 1万+
Spring系列初体验,使用Spring怎么能不知道这几种Bean放入容器的方法呢?XML、注解、实现接口..
@Bean注解详解
热门推荐
怪咖@的博客
10-20 3万+
@Bean属于spring注解,@Bean用于将对象存入spring的ioc容器,同`@controller、@Service、@Component、@Configuration`等几个注解是一样的,都是负责`将对象存入容器当`。只不过方式不同,他们是用在类上面的,然后将当前类`通过无参构造函数创建对象`然后放入容器,而`@Bean`是用在方法上,将当前方法的`返回值对象`放到容器当!可以理解为前者是由spring自动创建对象,而@Bean创建对象是交给我们自己来控制。
JSP页面调用JavaBean几种方法?分别是什么?
最新发布
10-11
在JSP(JavaServer Pages)页面调用JavaBean主要有以下两种方法: 1. **直接使用scriptlet标签**:在JSP文件,你可以使用`<%=`标签直接引用JavaBean的方法并执行,例如: ```jsp <%@ page language="java" import="com.example.MyBean" %> <% MyBean myBean = new MyBean(); String result = myBean.myMethod(); out.println(result); %> ``` 这种方法直接嵌入了Java代码,不利于维护。 2. **使用EL表达式(Expression Language)**:从JSP 1.2开始,推荐使用EL来间接调用JavaBean的方法,使得代码更简洁,易于理解和维护: ```jsp ${myBean.myMethod()} ``` EL会解析为对MyBean实例的myMethod()方法的调用。 3. **利用JSTL标签库**:JSTL (JavaServer Pages Standard Tag Library) 提供了一些用于操作JavaBean的标签,如`<c:out>`标签结合EL可以方便地显示JavaBean的属性或调用方法: ```jsp <c:out value="${myBean.myMethod()}"/> ```
写文章

热门文章

  • (新手必看)HashMap是什么? 17266
  • 【mysql】聚簇索引和非聚簇索引(B树和B+树) 9921
  • C语言实现扫雷游戏完整代码 8260
  • Java开发实现图书管理系统(超详细) 8256
  • 线程池是什么?线程池(ThreadPoolExecutor)使用详解 5673

分类专栏

  • 软件测试 1篇
  • JavaEE进阶 9篇
  • mysql 2篇
  • JavaEE初阶 30篇
  • oj习题总结
  • 笔试强训 6篇
  • Java专栏 10篇
  • 数据结构 11篇
  • C专栏 14篇

最新评论

  • (新手必看)HashMap是什么?

    阿J~: 太精辟了!竖起我的大拇指!

  • 【mysql】聚簇索引和非聚簇索引(B树和B+树)

    NotRepent: 文章太给力了,真不错,学习了表情包

  • 【mysql】聚簇索引和非聚簇索引(B树和B+树)

    xyk:: 笔误笔误

  • 【mysql】聚簇索引和非聚簇索引(B树和B+树)

    NotRepent: 第三次IO 不应该是将磁盘块6加载到内存开始遍历吗?在内存 中从头开始遍历10=10 找到

  • 【JavaEE】死锁是什么?如何避免死锁(保姆级讲解)

    头大不愁: 有没有可能小号也同意了表情包

最新文章

  • 【软件测试】随笔系统测试报告
  • 【Spring Boot】拦截器与统一功能处理
  • 【Spring】Spring AOP 初识及实现原理解析
2023年71篇
2022年17篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家方圳玻璃钢雕塑濮阳铸造玻璃钢仿铜雕塑厂家漳州rtm法玻璃钢雕塑设计德庆玻璃钢浮雕雕塑株洲玻璃钢雕塑制作厂家长沙玻璃钢雕塑制作公司玻璃钢花盆质量高售卖罗马柱玻璃钢雕塑济南玻璃钢雕塑摆件研发公司厦门玻璃钢孔子雕塑商场美陈咨询公司兴化玻璃钢雕塑服务热线南昌公园玻璃钢雕塑制作通化动物玻璃钢雕塑公司日照仿铜玻璃钢雕塑生产厂家北京大型商场美陈批发价定西大型玻璃钢雕塑定做西宁玻璃钢植物雕塑多少钱玻璃钢雕塑不翻模泸州成都商场美陈咨询白银玻璃钢卡通雕塑哪家好甘肃玻璃钢卡通雕塑的特点石家庄玻璃钢马雕塑浙江商业商场美陈多少钱汕尾玻璃钢卡通雕塑摆件商场大厅顶部美陈铜川玻璃钢商场美陈杭州商场中庭美陈宁波多彩玻璃钢雕塑销售厂家晋城不锈钢景观玻璃钢彩绘雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化