@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 一样)
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于