寻求网站建设技术,wordpress主题原理,网络游戏吧,深圳公共资源交易中心#x1f308;键盘敲烂#xff0c;年薪30万#x1f308; 目录
IOC 配置bean对象#xff1a;
DI 注入bean对象
①.setter方法注入
②.构造器注入
Bean的实例化
1.setter方法注入(重点)
2.静态工厂#xff08;了解#xff09;
3.实例工厂#xff08;了解#xff0… 键盘敲烂年薪30万 目录
IOC 配置bean对象
DI 注入bean对象
①.setter方法注入
②.构造器注入
Bean的实例化
1.setter方法注入(重点)
2.静态工厂了解
3.实例工厂了解
4.FactoryBean方式注入(重点)
bean的声明周期
bean的自动装配
管理第三方的bean IOC 配置bean对象
配置文件配置bean idbean的名称 classbean的类型
bean id bookDao class com.itpan.Dao.impl.BookDaoImpl/
DI 注入bean对象
①.setter方法注入 setter方法注入 使用properties 标签通过set方法为bean对象赋值推荐使用
注入引用类型 name xxx ref xxx name后面要与set方法的形参保持一致ref要与bean的id保持一致
bean id bookDao class com.itpan.Dao.impl.BookDaoImplproperties name bookDao ref bookDao/
/bean 注入基本数据类型 name xxx value xxx
bean id bookDao class com.itpan.Dao.impl.BookDaoImplproperties name IdCard value 123/
/bean
注入集合数组等类型 当集合类型进行注入时使用相应标签list、set、array、map...)对属性值进行注入。
bean idschool classcom.muyu.pojo.Schoolproperty nameclasseslistvalue10/valuevalue11/valuevalue12/value/list!--1. array集合arrayvalue/value/array2. set集合setvalue/value/set3. map集合mapentry value ket/entry/map--/property
/bean
②.构造器注入 构造器注入使用constructor-arg标签在整合第三方框架的时候使用
bean id bookDao class com.itpan.Dao.impl.BookDaoImplconstructor-arg name bookDao ref bookDao/
/bean setter注入和构造器注入并无太大区别一个是运用setter方法一个是运用构造器构造器注入将properties标签改完constructor-arg 即可。 Bean的实例化
1.setter方法注入(重点) 在相应类中提供set方法
public class BookServiceImpl implements Bookservice {BookDao bookDao;Overridepublic void save() {System.out.println(Bookservice save is running);bookDao.save();}//提供set方法public void setBookDao(BookDao bookDao) {this.bookDao bookDao;}
}2.静态工厂了解
public class BookDao1Factory {public static BookDao1 getBookDao1(){System.out.println(BookDao1Factory null constructor is running);return new BookDao1Impl();}
}3.实例工厂了解 跟setter方法冗余不再赘述。
4.FactoryBean方式注入(重点) 创建一个FactoryBean的类实现factorybeanE接口用于实例化bean对象通过getObject创建对象getObjectType指定对象类型。
package itpan.factory;import itpan.Dao.BookDao1;
import itpan.Dao.impl.BookDao1Impl;
import org.springframework.beans.factory.FactoryBean;public class BookDao1FactoryBean implements FactoryBeanBookDao1 {// 替代静态静态工厂中的get方法Overridepublic BookDao1 getObject() throws Exception {return new BookDao1Impl();}// 创建的bean是什么类型的Overridepublic Class? getObjectType() {return BookDao1.class;}
}bean的声明周期
执行构造方法实例化bean对象设置属性初始化关闭容器bean自动销毁
例如以下程序
package itpan.Dao.impl;import itpan.Dao.BookDao1;
import itpan.Dao.BookDao2;
import itpan.Dao.BookDao3;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;public class BookDao1Impl implements BookDao1, InitializingBean, DisposableBean {BookDao2 bookDao2;BookDao3 bookDao3;public void setBookDao2(BookDao2 bookDao2) {this.bookDao2 bookDao2;}public void setBookDao3(BookDao3 bookDao3) {this.bookDao3 bookDao3;}public void save() {System.out.println(bookdao1 is running);bookDao2.save();bookDao3.save();}Overridepublic void afterPropertiesSet() throws Exception {System.out.println(dao init...);}Overridepublic void destroy() throws Exception {System.out.println(dao close...);}
}测试类
package itpan;import itpan.Dao.BookDao1;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestBeanCycle {public static void main(String[] args) {// bean的生命周期// 1.new bean// 2.执行构造方法// 3.set设置属性// 4.init初始化bean// 容器关闭触发bean的销毁// 两种方法// 1.手工关闭 2.注册关闭钩子ClassPathXmlApplicationContext ctx new ClassPathXmlApplicationContext(applicationContext.xml);// 设置关闭钩子ctx.registerShutdownHook();BookDao1 bookDao1 (BookDao1) ctx.getBean(bookDao1);bookDao1.save();
// ctx.close();}
}注意 创建bean对象默认调用空参构造如果没有空参构造程序会抛出异常。 bean的自动装配
很简单在配置bean对象时将autowrie属性设置为true
bean idbookDao1 classitpan.Dao.impl.BookDao1Impl autowirebyType/
管理第三方的bean
1.引入properties文件
2.开启context命名空间
3.使用context:property-placeholder加载命名空间
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:utilhttp://www.springframework.org/schema/utilxmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd!--引入properties文件--!--1.开启context命名空间--!--2.使用context加载命名空间--context:property-placeholder locationclasspath*:*.properties/bean iddataSource classcom.alibaba.druid.pool.DruidDataSourceproperty namedriverClassName value${jdbc.driver}/property nameurl value${jdbc.url}/property nameusername value${jdbc.username}/property namepassword value${jdbc.password}//bean