做网站排名优化的公司,图片论播wordpress,网站界面设计描述,html制作百度登录页面配置说明 类别描述名称bean类型标签所属beans标签功能定义Spring核心容器管理的对象格式 属性列表id:bean的id#xff0c;使用容器可以通过id值获取对应的bean#xff0c;在一个容器中id是唯一的class:bean的类型#xff0c;即配置的bean的全路径类名范例
1、Bean别名配置 … 配置说明 类别描述名称bean类型标签所属beans标签功能定义Spring核心容器管理的对象格式 属性列表id:bean的id使用容器可以通过id值获取对应的bean在一个容器中id是唯一的class:bean的类型即配置的bean的全路径类名范例
1、Bean别名配置 配置说明 类别描述名称name类型属性所属bean标签功能定义bean的别名可定义多个使用逗号分号空格分隔范例 代码演示 ?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd!--name属性:可以设置多个别名别名之间使用逗号空格分号等分隔注意id只能设置一个并且id的值要唯一。name可以设置多个给BookDao取别名--bean classcom.demo.dao.impl.BookDaoImpl idbookDao namebookDao2,bookDao3/bean/beansTest
public void test01(){//创建IOC容器加载xml文件创建文件中的对象到IOC容器中ClassPathXmlApplicationContext ctx new ClassPathXmlApplicationContext(application-bean-base.xml);//使用IOC容器获取name bookDao2对象BookDao bean (BookDao) ctx.getBean(bookDao2);//对象调用方法bean.save();//关闭容器ctx.close();
}**注意事项**获取bean无论是通过id还是name获取如果无法获取到将抛出异常NoSuchBeanDefinitionException
2、Bean作用范围配置 配置说明 类别描述名称scope类型属性所属bean标签功能定义bean的作用范围可选范围如下 singleton 单例默认在IOC容器创建时创建只创建一次 prototype 非单例 每次从IOC容器获取的时候都会创建新的对象获取多次创建多次。范例
scope的取值不仅仅只有singleton和prototype还有request、session、application、 websocket 表示创建出的对象放置在web容器(tomcat)对应的位置。
request仅适用于Web环境下的ApplicationContext每一个Http请求都会拥有一个单独的实例。session仅适用于Web环境下的ApplicationContext即每一个用户都将拥有一个单独的实例。globalSession仅适用于Web环境下的ApplicationContext表示每一个全局的Http Session下都会拥有一个单独的实例。 为什么bean默认为单例 适合交给容器进行管理的bean
控制器对象 (以前用的Servlet做为控制器)业务层对象 (如BookService)数据层对象 (如BookDao或BookMapper)工具对象 (如CartUtils对象)
以上对象都只需要创建一个就够了
不适合交给容器进行管理的bean
封装实体的域对象(实体类对象 Book 包名pojoentity, domain)实体类对象一般是mybatis查询数据库得到结果需要根据每一次结果创建对象
3、bean的生命周期 生命周期相关概念介绍 生命周期从创建到消亡的完整过程bean生命周期bean从创建到销毁的整体过程bean生命周期控制在bean创建后到销毁前做一些事情 代码演示 提供生命周期控制方法
public class BookDaoImpl implements BookDao {public void save() {System.out.println(book dao save ...);}//表示bean初始化对应的操作public void init(){System.out.println(init...);}//表示bean销毁前对应的操作public void destory(){System.out.println(destory...);}
}applicationContext.xml配置
bean idbookDao classcom.demo.dao.impl.BookDaoImpl init-methodinit destroy-methoddestory/测试类
public class AppForLifeCycle {public static void main( String[] args ) {//此处需要使用实现类类型接口类型没有close方法ClassPathXmlApplicationContext ctx new ClassPathXmlApplicationContext(applicationContext.xml);BookDao bookDao (BookDao) ctx.getBean(bookDao);bookDao.save();//关闭容器执行销毁的方法ctx.close();}
}容器关闭前触发bean的销毁关闭容器方式 手工关闭容器 调用容器的close()操作注册关闭钩子(类似于注册一个事件)在虚拟机退出前先关闭容器再退出虚拟机 调用容器的registerShutdownHook()操作
public class AppForLifeCycle {public static void main( String[] args ) {//此处需要使用实现类类型接口类型没有close方法ClassPathXmlApplicationContext ctx new ClassPathXmlApplicationContext(applicationContext.xml);BookDao bookDao (BookDao) ctx.getBean(bookDao);bookDao.save();//注册关闭钩子函数在虚拟机退出之前回调此函数关闭容器ctx.registerShutdownHook();//关闭容器//ctx.close();}
}4、Bean对象的创造方式 构造方法方式 BookDaoImpl实现类
public class BookDaoImpl implements BookDao {public BookDaoImpl() {System.out.println(book dao constructor is running ....);}public void save() {System.out.println(book dao save ...);}
}applicationContext.xml配置
!--方式一构造方法实例化bean--
bean idbookDao classcom.demo.dao.impl.BookDaoImpl/AppForInstanceBook测试类
public class AppForInstanceBook {public static void main(String[] args) {ApplicationContext ctx new ClassPathXmlApplicationContext(applicationContext.xml);BookDao bookDao (BookDao) ctx.getBean(bookDao);bookDao.save();}
}**注意**无参构造方法如果不存在将抛出异常BeanCreationException 静态工厂方式 OrderDao接口和OrderDaoImpl实现类
public interface OrderDao {public void save();
}
public class OrderDaoImpl implements OrderDao {public void save() {System.out.println(order dao save ...);}
}OrderDaoFatory工厂类
//静态工厂创建对象
public class OrderDaoFactory {public static OrderDao getOrderDao(){System.out.println(factory setup....);return new OrderDaoImpl();}
}applicationContext.xml配置
!--方式二使用静态工厂实例化bean--
bean idorderDao classcom.demo.factory.OrderDaoFactory factory-methodgetOrderDao/AppForInstanceOrder测试类
public class AppForInstanceOrder {public static void main(String[] args) {ApplicationContext ctx new ClassPathXmlApplicationContext(applicationContext.xml);OrderDao orderDao (OrderDao) ctx.getBean(orderDao);orderDao.save();}
}实例工厂方式 UserDao接口和UserDaoImpl实现类
public interface UserDao {public void save();
}
public class UserDaoImpl implements UserDao {public void save() {System.out.println(user dao save ...);}
}UserDaoFactory工厂类
//实例工厂创建对象
public class UserDaoFactory {public UserDao getUserDao(){return new UserDaoImpl();}
}applicationContext.xml配置
!--方式三使用实例工厂实例化bean--
bean iduserFactory classcom.demo.factory.UserDaoFactory/bean iduserDao factory-methodgetUserDao factory-beanuserFactory/AppForInstanceUser测试类
public class AppForInstanceUser {public static void main(String[] args) {// //创建实例工厂对象// UserDaoFactory userDaoFactory new UserDaoFactory();// //通过实例工厂对象创建对象// UserDao userDao userDaoFactory.getUserDao();// userDao.save();ApplicationContext ctx new ClassPathXmlApplicationContext(applicationContext.xml);UserDao userDao (UserDao) ctx.getBean(userDao);userDao.save();}
}