Java-Spring配置文件
Spring配置文件:
1.Bean标签基本配置:
用于配置对象交由Spring来创建、
默认情况下他调用的是类中的无参构造函数, 如果没有无参构造函数则不能创建成功。
基本属性:
- id:Bean实例在Spring容器中的唯一标识
- class:Bean的全限定名称。
2.Bean标签范围配置:
scope:指对象的作用范围:取值如下:
注意:
1.Spring中scope默认值为”singleton“
2.当sope的取值为singleton时,
Bean的实例化个数:1个
Bean的实例化时机:当Spring核心文件被加载时,实例化配置的Bean实例。
Bean的生命周期:
- 对象创建:当应用加载,创建容器时,对象就被创建了
- 对象运行:只要容器在,对象一直活着
- 对象销毁:当应用卸载,销毁容器时,对象就被销毁了
3.当sope的取值为prototype时,
Bean的实例化个数:多个
Bean的实例化时机:当调用getBean()方法时实例化Bean
Bean的生命周期:
- 对象创建:当调用对象时,创建新的对象实例
- 对象运行:只要对象在使用中,就一直活着
- 对象销毁:当对象长时间不用时,被java的垃圾回收器(jc)回收
3.Bean生命周期配置:
- init-method:指定类中的初始化方法名称
- destroy-method:指定类中销毁方法名称
4.Bean实例化三种方式:
无参构造方法实例化(重要)
工厂静态方法实例化
工厂实例方法实例化
工厂实例化的具体操作:
静态方法:
1.创建StaticFactory工厂类,定义静态方法
2.修改配置文件
1 | <bean id = "UserDao" class = "factory.StaticFactory" factory-method = "getUserDao"> </bean> //factory-method是静态类方法 |
实例方法:
1.创建DynamicFactory工厂类,定义非静态方法
2.修改配置文件
1 | <bean id = "factory" class = "factory.DynamicFactory" </bean> //首先时工厂类的配置文件 |
5.引入其他配置文件(分模块开发)
实际开发中,Spring的配置内容非常多,导致Spring配置很繁杂,所以,可以将部分配置拆解到其他配置文件中,然后进行引用:
1 | 在主配置文件中引用: |
最后,给出一个总结图:
Spring依赖注入:
注入Dao层对象:
需求:我们想让Spring不仅仅帮我们创建dao层对象UserDao,也帮我们创建service层对象UserService。
当然,我们可以首先在配置文件中增加class = ”service“ 的bean标签,然后使用同样生成工厂然后getBean的方法获取Service对象,但这样需要两次调用工厂,并且dao对象是通过Service创建的,因此两者之间依然存在耦合关联:
那么,有什么方法可以建设这种业务层和数据访问层之间的耦合关系呢?
我们可以在Spring容器阶段就将dao注入到service中,然后程序可以从Spring中直接获取带有UserDao对象的UserService实例,而两者之间的依赖关系由Spring去维护。
有两种注入方法:
通过set方法,在service类中增添setUserDao方法,将dao对象赋值给service类中的成员变量dao中。
通过有参构造方法,将dao对象赋值给service类中的成员变量dao中。
具体操作:
1.创建service类,类里实现有参构造或者set方法。
2.修改配置文件:
第一种set方法:
1 | <bean id = "UserService" class = "UserService.UserServiceImpl"> |
第二种有参构造:
1 | <bean id = "UserService" class = "UserService.UserServiceImpl"> |
同样,也可以注入基本数据类型,
如int,String等都可以进行注入。
同样可以通过set和有参构造注入。
配置文件:
1 | <bean id = "UserService" class = "UserDao.UserDaoImpl"> |
最后,注入集合数据类型:
以列表为例,首先类中由成员变量List集合:List< String > strList
修改配置文件:
1 | <bean id = "UserService" class = "UserDao.UserDaoImpl"> |