@Configuration
作用:指定当前类是一个配置类
细节:当配置类作为AnnotationConfigApplicationContext
对象创建的参数时,该注解可以不写
。
@ComponentScan
作用:用于通过注解指定 spring 在创建容器时要扫描的包
属性:value
:它和base-Packages
的作用是一样的,都是用于指定创建容器时要扫描的包。
我们使用此注解就等同于在 xml 中配置了:
<context:component-scan base-package="com.itheima"></context:component-scan>
注意:这里我是导入了两个包结构
@Bean
作用:用于把当前方法的返回值作为 bean 对象存入 spring 的 ioc 容器中
属性:name:用于指定 bean 的 id。当不写时,默认值是当前方法的名称
细节:当我们使用注解配置方法时,如果方法有参数,spring 框架会去容器中查找有没有可用的 bean 对象。
查找的方式和 Autowired 注解的作用是一样的
@Import
作用:用于导入其他的配置类
属性:value:用于指定其他配置类的字节码。
当我们使用 Import 的注解之后,有 Import 注解的类就父配置类,而导入的都是子配置类
@PropertySource
作用:用于指定 properties 文件的位置
属性:value:指定文件的名称和路径。
关键字:classpath,表示类路径下
package config; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Import; import org.springframework.context.annotation.PropertySource; /** * 该类是一个配置类,它的作用和bean.xml是一样的 * spring中的新注解 * Configuration * 作用:指定当前类是一个配置类 * 细节:当配置类作为AnnotationConfigApplicationContext对象创建的参数时,该注解可以不写。 * ComponentScan * 作用:用于通过注解指定spring在创建容器时要扫描的包 * 属性: * value:它和basePackages的作用是一样的,都是用于指定创建容器时要扫描的包。 * 我们使用此注解就等同于在xml中配置了: * <context:component-scan base-package="com.itheima"></context:component-scan> * Bean * 作用:用于把当前方法的返回值作为bean对象存入spring的ioc容器中 * 属性: * name:用于指定bean的id。当不写时,默认值是当前方法的名称 * 细节: * 当我们使用注解配置方法时,如果方法有参数,spring框架会去容器中查找有没有可用的bean对象。 * 查找的方式和Autowired注解的作用是一样的 * Import * 作用:用于导入其他的配置类 * 属性: * value:用于指定其他配置类的字节码。 * 当我们使用Import的注解之后,有Import注解的类就父配置类,而导入的都是子配置类 * PropertySource * 作用:用于指定properties文件的位置 * 属性: * value:指定文件的名称和路径。 * 关键字:classpath,表示类路径下 */ //@Configuration @ComponentScan("com.itheima") @Import(JdbcConfig.class) @PropertySource("classpath:jdbcConfig.properties") public class SpringConfiguration { }
使用 Junit 单元测试:测试我们的配置
Spring 整合 junit 的配置
- 导入 spring 整合 junit 的 jar(坐标)
2、使用 Junit 提供的一个注解把原有的 main 方法替换了,替换成 spring 提供的
@Runwith
3、告知 spring 的运行器,spring 和 ioc 创建是基于 xml 还是注解的,并且说明位置
@ContextConfiguration
locations:指定 xml 文件的位置,加上 classpath 关键字,表示在类路径下
classes:指定注解类所在地位置
当我们使用spring 5.x
版本的时候,要求 junit 的 jar 必须是4.12
及以上
坐标
package com.itheima.test; import com.itheima.domain.Account; import com.itheima.service.IAccountService; import config.SpringConfiguration; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.List; /** * 使用Junit单元测试:测试我们的配置 * Spring整合junit的配置 * 1、导入spring整合junit的jar(坐标) * 2、使用Junit提供的一个注解把原有的main方法替换了,替换成spring提供的 * @Runwith * 3、告知spring的运行器,spring和ioc创建是基于xml还是注解的,并且说明位置 * @ContextConfiguration * locations:指定xml文件的位置,加上classpath关键字,表示在类路径下 * classes:指定注解类所在地位置 * * 当我们使用spring 5.x版本的时候,要求junit的jar必须是4.12及以上 */ ** * @_PackageName:com.xiao.test * @_ClassName:JunitTest * @_Description: * @_Author:笑老二 * @_data 2020/4/27 19:47 */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = SpringConfiguration.class) public class JunitTest { //导入serviceImpl资源 @Autowired private AccountService as ; @Test public void findAllTest(){ List<Account> allAccount = as.findAllAccount(); for (Account account : allAccount) { System.out.println(account); } } }
运行结果
前言:如果觉得配置了注解但是还是需要配置 bean.xml 的方式你接受不了,name 就可以使用 Spring 中的注解类来完成数据的输入以及,配置文件的输入。(简而言之就是
所有配置文件全部通过注解的方式
,不用xml方式
)
用到的几个注解(Spring 新注解它作用和 bean.xml 一样)
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于