Spring IOC的相关注解运用详解

 更新时间:2023年08月09日 09:33:23   作者:会洗碗的CV工程师  
这篇文章主要介绍了Spring IOC的相关注解运用详解,纯注解实现IOC需要一个Java类代替xml文件,这个Java类上方需要添加@Configuration,表示该类是一个配置类,作用是代替配置文件,需要的朋友可以参考下

一、@Configuration

此时基于注解的IOC配置已经完成,但是我们依然离不开Spring的xml配置文件。接下来我们脱离bean.xml,使用纯注解实现IOC。

在真实开发中,我们一般还是会保留xml配置文件,很多情况下使用配置文件更加方便。 纯注解实现IOC需要一个Java类代替xml文件。这个Java类上方需要添加@Configuration,表示该类是一个配置类,作用是代替配置文件。

SpringConfig配置类

package com.example;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SpringConfig {
}

二、@ComponentScan

1. 说明

作用:指定spring在初始化容器时扫描的包。 位置:配置类上方

SpringConfig配置类

package com.example;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("com.example")
public class SpringConfig {
}

2. 测试方法

    // 测试纯注解
    @Test
    public void t4(){
        ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfig.class);
        StudentService service = ac.getBean("studentService",StudentService.class);
        System.out.println(service.findById(8));
    }

3. 运行结果

OK,确实可以。

三、@PropertySource

1. 说明

作用:代替配置文件中的 <context:property-placeholder> 扫描配置文件

位置:配置类上方

注意:配置文件位置前要加关键字 classpath

JdbcConfig配置类

package com.example;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import java.sql.Connection;
import java.sql.DriverManager;
@Configuration
@PropertySource("classpath:db.properties")
public class JdbcConfig {
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;
    @Override
    public String toString() {
        return "JdbcConfig[ " +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                " ]";
    }
}

2. 测试方法

    // 测试纯注解扫描jdbc
    @Test
    public void t5(){
        ApplicationContext ac = new AnnotationConfigApplicationContext(JdbcConfig.class);
        JdbcConfig config = (JdbcConfig) ac.getBean("jdbcConfig");
        System.out.println(config);
    }

3. 测试结果

OK,也是没有问题的。

四、@Bean

1. 说明

  • 作用:将方法的返回值对象放入Spring容器中。如果想将第三方类的对象放入容器,可以使用@Bean
  • 位置:配置类的方法上方。
  • 属性:name:给bean对象设置id
  • 注意:@Bean修饰的方法如果有参数,spring会根据参数类型从容器中查找可用对象。
  • 举例:如果想将jdbc连接对象放入Spring容器,我们无法修改Connection源码添加@Component,此时就需要使用将@Bean该对象放入Spring容器

2. 添加驱动依赖

在pom.xml文件添加依赖

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.27</version>
        </dependency>

3.将Connection对象放入Spring容器

    @Bean("connection")
    public Connection getConnection(){
        try{
            Class.forName("com.mysql.cj.jdbc.Driver");
            return DriverManager.getConnection("jdbc:mysql:///mysql","root","666666");
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }

4. 测试

测试方法

    // 测试注解bean
    @Test
    public void t6(){
        ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfig.class);
        Connection connection = (Connection) ac.getBean("connection");
        System.out.println(connection);
    }

运行结果

OK,也是可以成功获取连接的

五、@Import

1. 说明

作用:如果配置过多,会有多个配置类,该注解可以为主配置类导入其他配置类

位置:主配置类上方

上述我们讲的,SpringConfig应当为主配置类,所以该注解应当添加在SpringConfig类的上方

package com.example;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@ComponentScan("com.example")
@Import(JdbcConfig.class)
public class SpringConfig {
}

2. 测试方法

    // 测试纯注解
    @Test
    public void t4(){
        ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfig.class);
        JdbcConfig jdbcConfig = ac.getBean("jdbcConfig",JdbcConfig.class);
        System.out.println(jdbcConfig);
    }

3. 运行结果

OK,确实也是可以获取的。说明主配置类成功导入了。本章Spring IOC的学习就到这里了。

到此这篇关于Spring IOC的相关注解运用详解的文章就介绍到这了,更多相关Spring IOC注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot调用Poi-tl实现渲染数据并生成Word文档

    SpringBoot调用Poi-tl实现渲染数据并生成Word文档

    这篇文章主要为大家详细介绍了SpringBoot如何调用Poi-tl实现渲染数据并生成Word文档,文中的示例代码讲解详细,有需要的小伙伴可以了解下
    2023-09-09
  • IDEA安装IDE Eval Reset插件实践

    IDEA安装IDE Eval Reset插件实践

    ideaevalreset是一个JetBrains的良心产品,通过添加第三方插件仓库地址并安装IDEEvalReset插件,可以刷新IntelliJ IDEA的试用期限,实现无限期使用
    2026-03-03
  • 使用Java编写导出不确定行数列数数据的工具类

    使用Java编写导出不确定行数列数数据的工具类

    这篇文章主要为大家详细介绍了如何使用Java编写导出不确定行数列数数据的工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • mybatisplus中返回Vo的案例讲解

    mybatisplus中返回Vo的案例讲解

    这篇文章主要介绍了mybatisplus中返回Vo的案例,mybatisplus内置的几个方法使用泛型限制了方法的返回类型,所以实现返回Vo还是得自定义方法, 这个方法名尽量不要和原有的名字类似,本文通过实例代码给大家详解讲解,需要的朋友可以参考下
    2023-03-03
  • Java中的byte & 0xff到底有什么作用?

    Java中的byte & 0xff到底有什么作用?

    这篇文章主要介绍了Java中的byte & 0xff到底有什么作用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java 中Comparable和Comparator区别比较

    Java 中Comparable和Comparator区别比较

    本文,先介绍Comparable 和Comparator两个接口,以及它们的差异;接着,通过示例,对它们的使用方法进行说明
    2013-09-09
  • springmvc整合ssm配置的详细代码

    springmvc整合ssm配置的详细代码

    今天通过实例代码给大家介绍了springmvc整合ssm配置的详细方法,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-11-11
  • SpringBoot集成redisson全过程

    SpringBoot集成redisson全过程

    本文主要介绍了如何集成Redisson,包括环境配置、引入Redisson的依赖、添加Redisson的配置类以及Redisson的常见使用方法,在类中注入Redisson后,可以获取锁对象和使用,这些都是作者的个人经验,供读者参考
    2024-10-10
  • java后台批量下载文件并压缩成zip下载的方法

    java后台批量下载文件并压缩成zip下载的方法

    这篇文章主要为大家详细介绍了java后台批量下载文件并压缩成zip下载的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • 解决springboot文件配置端口不起作用(默认8080)

    解决springboot文件配置端口不起作用(默认8080)

    这篇文章主要介绍了解决springboot文件配置端口不起作用(默认8080),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08

最新评论