Spring的properties属性配置文件
问题:
在学习了Spring的知识后,需要被Spring管理的资源都是通过配置文件的形式来告诉Spring容器对象管理谁以及如何管理。但是随着使用次数的增多,我们发现配置文件中配置的标签越来越多,每次我们创建一个新的项目时,将配置好的配置文件在该项目中只需要修改一下数据库连接参数即可正常使用,但是因为配置文件的内容越来越多,造成配置文件的阅读性越来越差,数据库连接参数的修改不太好找到,怎么办?
解决:
将数据库相关参数提取到一个新的文件中专门配置,然后在 applicationcontext.xml配置文件中获取数据库连接参数配置文件中的配置信息,说白了就是将数据库连接参数和Spring的配置文件之间解耦
实现:
Spring的属性配置文件配置数据库连接参数
使用:
① 在src下创建db.properties文件,声明数据库连接参数。 注意:配置的为键值对数据
② 在applicationcontext.xml中配置属性文件的扫描
③ 在数据源bean中使用${键名}的方式获取属性文件中的数据库连接参数
注意:
将factory的bean和mapper扫描的bean之间的依赖注入变为普通的属性注入,因为依赖注入>属性文件扫描>属性注入。如果不将factory和mapper扫描之间的依赖注入变为属性注入,会造成数据库参数还没有从配置文件中读取到容器中,就去进行mapper扫描了,会报数据库参数异常的错误。
Spring的常用注解
① @Component:使用在普通java类上
② @Service:使用在业务层类上
作用:
声明一个类的对象为bean对象,相当于配置了bean标签。
注意:
相当于使用的是无参数构造器来创建对象。
问题:
只使用@Service注解,和 A a=new A();的效果是相同的,创建的是一个没有初始化数据的bean对象,但是在实际生产环境中很多时候需要Spring容器帮我们创建一个带有初始化数据的对象(属性注入|依赖注入)
解决:
仍然使用注解,告诉Spring容器对象,如何给注解声明的对象进行初始化的赋值.,基本类型属性赋值和引用类型属性赋值
实现:
依赖注入的注解:@Autowire和@Resource
属性注入的注解:@Value
③ @Controller:使用在控制层类上,SpringMVC
作用:
声明一个类的对象为bean对象,相当于配置了bean标签
使用:
在SpringMVC的控制器类上使用。
④ @Repository
作用:
声明一个类的对象为bean对象,相当于配置了bean标签
使用:
在数据库功能类上使用。比如Dao层对象
⑤ @Resource
作用:
替换在配置文件的依赖注入的。
使用:
在有依赖关系的属性上使用,比如A中有B属性,则在B属性上声明,告诉Spring容器对象将B的bean对象注入到A的bean对象中
注意:
此注解是jdk官方的注解,不是Spring的注解,会先按照byName的方式注入,如果没有则按照byType的方式 继续注入,如果都没有则不注入。并且不需要提供get/set方法
⑥ @Autowired
作用:
和@Resource相同,都是替换依赖注入的配置的。
使用:
在需要依赖注入的属性上声明
注意:
该注解是Spring官方提供的,默认使用byType.
⑦ @Value
作用:
用来替换配置文件中的属性注入的。
使用:
在属性上声明,值为${“键名”}
示例: @Value(${“name”})
注意:
使用此注解的注入,无需提供get/set方法。
示例: