配置类注解
作用和 applicationContext.xml 作用一样,可以替代 applicationContext.xml 配置文件。他在 main 函数中的调用,使用的是 AnnotationConfigApplicationContext(Class<?>... annotatedClasses)
子类实现 ApplicationContext 接口。其中参数是指的是配置类的 class 对象,可以有多个。
ApplicationContext ac1 = new AnnotationConfigApplicationContext(Config.class);
Admin admin1 = (Admin) ac1.getBean("admincon");
System.out.println(admin1);
其次在配置类中,可以使用一下几个注解。
-
@Configuration
-
作用:指定当前类为配置类
-
注意:
-
当使用
@Configuration
注解类的时候,被注解类作为AnnotationConfigApplicationContext
对象创建的参数时候,该注解可以不写。如下:ApplicationContext ac1 = new AnnotationConfigApplicationContext(Config.class);
-
-
-
@ComponentScan
-
作用:用于通过注解指定 spring 创建容器时候要扫描的包
-
属性:
- value 属性和 basepackages 属性两个作用是一样的,用于指定创建容器时候要扫描的包,使用此注解等同于在 xml 配置了。
<context:component-scan base-package="com.test.entitys" ></context:component-scan>
-
-
@Bean
-
作用:把当前方法的返回值当成 bean 对象,存入 spring 的容器中
-
属性:
- name:用于指定 bean 的 id。当不写的时候,默认值是当前方法的名称。
-
注意:
- 当使用该注解配置方法,如果方法有参数,spring 会去容器中查找有没有 bean 对象。和 @Autowired 的寻找方式是一样的
- 这里的 bean 对象生成的将会是单例,对于数据库的一些操作要多例的,可以使用 @Scpoe 注解。
-
-
@Import
- 作用:用于导入其他的配置类,使用该注解的类就是父配置类,而导入的都是子配置类,在子配置类可以不写 @Configuration 注解。
- 属性
- value:用于指定其他配置类的字节码文件。
-
@PropertySource
- 作用:用于指定 properties 文件的位置
- 属性:
- value:指定文件的名称和路径
- 关键字 classpath 指定类路径
- value:指定文件的名称和路径
例如:我这里有个 properties 文件,需要在配置类 Config 中读取到连接数据库信息,可以这样。
Jdbc.properties 文件
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3230/test?serverTimezone=UTC jdbc.user=root jdbc.password=12345678
Config.java
@Configuration @ComponentScan(basePackages = "com.test") @PropertySource("classpath:Jdbc.properties") public class Config { @Value("${jdbc.driver}") private String driver; @Value("${jdbc.url}") private String url; @Value("${jdbc.user}") private String user; @Value("${jdbc.password}") private String password; }