bean的基本配置

bean的别名配置

注意spring创建的bean默认是一个单例实例。类似于new的对象都是一个对象,内存地址都一样。
用scope可以配置 是否单例。

思考:为什么bean默认为单例??


public class BookDaoFactory {
public static BookDao getBookDao(){
return new BookDaoImpl();
}
}

测试对象是否创建成功
public class APP3 {
public static void main(String[] args) {
BookDao bookDao= BookDaoFactory.getBookDao();
bookDao.save();
}
}

applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="bookDao" class="com.itheima.factory.BookDaoFactory" factory-method="getBookDao"></bean>
</beans>

public class APP3 {
public static void main(String[] args) {
// BookDao bookDao= BookDaoFactory.getBookDao();
// bookDao.save();
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
//获取Bean
// BookDao bookDao = (BookDao) ctx.getBean("bookDao");
// bookDao.save();
BookDao bookDao=(BookDao) ctx.getBean("bookDao");
bookDao.save();
}
}


public class BookDaoFactory {
public BookDao getBookDao(){
return new BookDaoImpl();
}
}
小run一下APP.java看看能不能跑出来
public class APP3 {
public static void main(String[] args) {
BookDaoFactory bookDaoFactory= new BookDaoFactory();
BookDao bookDao=bookDaoFactory.getBookDao();
bookDao.save();
}
}

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 使用实例工厂实例化bean-->
<bean id="bookDaoFactory" class="com.itheima.factory.BookDaoFactory"/>
<bean id="bookDao" factory-method="getBookDao" factory-bean="bookDaoFactory"/>
</beans>
public class APP3 {
public static void main(String[] args) {
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
//获取Bean
// BookDao bookDao = (BookDao) ctx.getBean("bookDao");
// bookDao.save();
BookDao bookDao=(BookDao) ctx.getBean("bookDao");
bookDao.save();
}
}


BookDaoFactoryBean.java
public class BookDaoFactoryBean implements FactoryBean<BookDao> {
//代替原始实例工厂中创建对象的方法
public BookDao getObject() throws Exception {
return new BookDaoImpl();
}
public Class<?> getObjectType() {
return BookDao.class;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="bookDao" class="com.itheima.factory.BookDaoFactoryBean"/>
</beans>
public class APP3 {
public static void main(String[] args) {
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
//获取Bean
// BookDao bookDao = (BookDao) ctx.getBean("bookDao");
// bookDao.save();
BookDao bookDao=(BookDao) ctx.getBean("bookDao");
bookDao.save();
}
}
