Spring beande装配
Posted 懒惰的星期六
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring beande装配相关的知识,希望对你有一定的参考价值。
对象的个数,对象创建的时机
一 bean的装配(xml方式1)
1.对象创建:单例、多例
scope="singleton" 默认值 单例
scope="prototype",多例
2.什么时候创建
scope="prototype" 在使用到对象时,才创建对象
scope="singleton" 在启动(容器初始化之前),创建bean,整个应用只有一个对象
3.是否延迟加载
lazy-init="default" 默认为false不延迟,启动时创建
lazy-init="true" 延迟,启动时不创建,使用时创建
4.创建对象之后的初始化与销毁
init-method ="对象自定义的init方法名称"
destroy-method="对象自定义的destroy方法名称"
在applicationContext.xml文件中
<!--1.无参构造--> <!--单例模式,默认的设置,在加载容器之前bean中的对象就会被创建--> <bean id="user1",class="XXX.User" scope="singleton"> <!--多例模式,在加载容器之后,bean中的对象才会被创建,不管是否调用applictionContext.getBean()--> <bean id="user2",class="XXX.User" scope="prototype"> <!--多例模式延迟加载,在调用applictionContext.getBean()之后,对象才会被创建--> <bean id="user3",class="XXX.User" scope="prototype" lazy-init="true">
class User{ private int id; private String name; public User(){ } public User(int id,String name){ this.id=id; this.name=name; } public void initUser(){ System.out.println("初始化"); } public void destroyUser(){ System.out.println("对象销毁"); } //get and set //toString() }
class UserFactory{ public User getInstance(){ return new User(); } public static User getStaticInstance(){ return new User(); } }
二、bean的装配(xml方式2)
Spring IOC容器
Spring IOC容器:是Spring的核心内容
作用:创建对象,处理对象的依赖关系
IOC容器创建对象
几种方式:
1.调用无参构造
2.带参数构造
3.工厂创建对象
工厂类:静态方法创建对象
非静态方法创建对象
<!--1.无参构造--> <!--单例模式,默认的设置,在加载容器之前bean中的对象就会被创建--> <bean id="user1",class="XXX.User" scope="singleton"> <!--多例模式,在加载容器之后,bean中的对象才会被创建,不管是否调用applictionContext.getBean()--> <bean id="user2",class="XXX.User" scope="prototype"> <!--多例模式延迟加载,在调用applictionContext.getBean()之后,对象才会被创建--> <bean id="user3",class="XXX.User" scope="prototype" lazy-init="true"> <!--2.参数构造--> <bean id="str" calss="java.lang.String"> <constructor-arg value="Tom" ></constructor-arg> </bean> <bean id="user4" calss="java.lang.String"> <constructor-arg index="0" value="998" type="int"></constructor-arg> <constructor-arg index="1" ref="s"></constructor-arg> </bean> <!--3.工厂模式创建对象 --> <!--工厂模式创建对象,使用非静态方法--> <bean id="factory",class="XXX.UserFactory" > <bean id="user5",factory-bean="factory" factory-method="getInstance"> <!--工厂模式创建对象,使用静态方法--> <bean id="user6",calss="XXX.UserFactory" factory-method="getStaticInstance">
三、bean的装配(xml方式3)
对象依赖关系
DI,依赖注入
1.通过构造
2.通过set方法对属性注入
3.p名称空间
<!--1.参数构造--> <bean id="user1" calss="xxx.User"> <constructor-arg index="0" value="998" type="int"></constructor-arg> <constructor-arg index="1" value="Tom" type="java.lang.String"></constructor-arg> </bean> <bean id="str" calss="java.lang.String"> <constructor-arg value="Tom" ></constructor-arg> </bean> <bean id="user2" calss="xxx.User"> <constructor-arg index="0" value="998" type="int"></constructor-arg> <constructor-arg index="1" ref="s"></constructor-arg> </bean> <!--2.通过set方法对属性注入--> <bean id="user3" calss="xxx.User"> <property name="id" value="998"></property> <property name="name" value="Tom "></property> </bean>
Controller/Service/Dao开发
java类
class Test{ public static void main(String[] args){ ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");//注意文件的路径 UserAction userAction=(UserAction) applicationContext.getBean("userAction"); userAction.adddUser(); } }
//UserController.java class UserController{ UserService userService; private void setUserService(UserService userService){ this.userService=userService; } private void addUser(){ userService.save(); } }
//UserService.java class UserService { private UserDao userDao; private void setUserDao (UserDao userDao){ this.userDao=userDao; } private void save(){ userDao.save(); } }
//UserDao .java class UserDao { public void save(){ System.out.println("正在保存"); } }
注入controller、service、dao方式1
applicationContext.xml文件
<!-- Controller --> <bean id="userController" calss="xxx.UserController"> <property name="userService" ref="userService"></property> </bean> <!-- Service --> <bean id="userService " calss="xxx.UserService r"> <property name="userDao" ref="userDao"></property> </bean> <!-- Dao --> <bean id="userDao" calss="xxx.UserDao"> </bean>
注入controller、service、dao方式2
applicationContext.xml文件
<!-- Controller --> <bean id="userController2" calss="xxx.UserController"> <property name="userService" > <bean calss="xxx.UserService></bean> <property name="userDao" > <bean calss="xxx.UserDao></bean> </property> </property> </bean>
以上是关于Spring beande装配的主要内容,如果未能解决你的问题,请参考以下文章