目录

一、@Configuration

二、@ComponentScan

1. 说明

2. 测试方法

3. 运行结果

三、@PropertySource

1. 说明

2. 测试方法

3. 测试结果

四、@Bean

1. 说明

2. 添加驱动依赖

3.将Connection对象放入Spring容器

3. 测试

五、@Import

1. 说明

2. 测试方法

3. 运行结果

往期专栏&文章相关导读

1. Maven系列专栏文章

2. Mybatis系列专栏文章

3. Spring系列专栏文章


一、@Configuration

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

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

SpringConfig配置类

package com.example;import org.springframework.context.annotation.Configuration;@Configurationpublic 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. 测试方法

// 测试纯注解@Testpublic 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. 说明

作用:代替配置文件中的 扫描配置文件
位置:配置类上方
注意:配置文件位置前要加关键字 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;@Overridepublic String toString() {return "JdbcConfig[ " +"username='" + username + '\'' +", password='" + password + '\'' +" ]";}}

2. 测试方法

// 测试纯注解扫描jdbc@Testpublic 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文件添加依赖

mysqlmysql-connector-java8.0.27

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;}}

3. 测试

测试方法

// 测试注解bean@Testpublic 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. 测试方法

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

3. 运行结果

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

往期专栏&文章相关导读

大家如果对于本期内容有什么不了解的话也可以去看看往期的内容,下面列出了博主往期精心制作的Maven,Mybatis等专栏系列文章,走过路过不要错过哎!如果对您有所帮助的话就点点赞,收藏一下啪。其中Spring专栏有些正在更,所以无法查看,但是当博主全部更完之后就可以看啦。

1. Maven系列专栏文章

Maven系列专栏Maven工程开发
Maven聚合开发【实例详解—5555字】

2. Mybatis系列专栏文章

Mybatis系列专栏MyBatis入门配置
Mybatis入门案例【超详细】
MyBatis配置文件 —— 相关标签详解
Mybatis模糊查询——三种定义参数方法和聚合查询、主键回填
Mybatis动态SQL查询 –(附实战案例–8888个字–88质量分)
Mybatis分页查询——四种传参方式
Mybatis一级缓存和二级缓存(带测试方法)
Mybatis分解式查询
Mybatis关联查询【附实战案例】
MyBatis注解开发—实现增删查改和动态SQL
MyBatis注解开发—实现自定义映射关系和关联查询

3. Spring系列专栏文章

Spring系列专栏Spring IOC 入门简介【自定义容器实例】
IOC使用Spring实现附实例详解
Spring IOC之对象的创建方式、策略及销毁时机和生命周期且获取方式
Spring DI简介及依赖注入方式和依赖注入类型
Spring IOC相关注解运用——上篇
Spring IOC相关注解运用——下篇
Spring AOP简介及相关案例
注解、原生Spring、SchemaBased三种方式实现AOP【附详细案例】
Spring事务简介及相关案例
Spring 事务管理方案和事务管理器及事务控制的API
Spring 事务的相关配置、传播行为、隔离级别及注解配置声明式事务