当前位置: 首页 > news >正文

商贸信息网站企业网站建设三网合一

商贸信息网站,企业网站建设三网合一,网站域名怎么快速备案价格,中小企业网站建设服务Spring 将管理对象称为 Bean。 Spring 可以看作是一个大型工厂#xff0c;用于生产和管理 Spring 容器中的 Bean。如果要使用 Spring 生产和管理 Bean#xff0c;那么就需要将 Bean 配置在 Spring 的配置文件中。Spring 框架支持 XML 和 Properties 两种格式的配置文件#…Spring 将管理对象称为 Bean。 Spring 可以看作是一个大型工厂用于生产和管理 Spring 容器中的 Bean。如果要使用 Spring 生产和管理 Bean那么就需要将 Bean 配置在 Spring 的配置文件中。Spring 框架支持 XML 和 Properties 两种格式的配置文件在实际开发中常用 XML 格式的配置文件。 Bean 的配置 通常在 XML 文件中根元素为 beans beans 中包含多个 bean 子元素每个 bean 定义一个 Bean并描述 Bean 如何被装配到 Spring 容器中。 beansbean/bean/bean /beans属性或子元素名称描述idBean 在 BeanFactory 中的唯一标识获取 Bean 实例时需要以此作为索引名称classBean 的具体实现类使用类名scope指定 Bean 实例的作用域nameBean 的别名多个别名之间用逗号、空格或分号分隔constructor-argbean 元素的子元素使用构造方法注入指定构造方法的参数。该元素的 index 属性指定参数的序号ref属性指定对 BeanFactory 中其他 Bean的引用关系type 属性指定参数类型value 属性指定参数的常量值propertybean 元素的子元素用于设置一个属性。该元素的 name 属性指定 Bean 实例中相应的属性名称value 属性指定 Bean 的属性值ref 属性指定属性对 BeanFactory 中其他 Bean 的引用关系listproperty 元素的子元素用于封装 List 或数组类型的依赖注入mapproperty 元素的子元素用于封装 Map 类型的依赖注入setproperty 元素的子元素用于封装 Set 类型的依赖注入entrymap 元素的子元素用于设置一个键值对 Bean 的作用域 在 Spring 中可以为 Bean 指定作用域 Bean 的实例化 在 Spring 框架中如果想使用 Spring 容器中的 Bean需要对其进行实例化。Spring 框架实例化 Bean 有3种方式即构造方法实例化、静态工厂实例化和实例工厂实例化。 1构造方法实例化 在 Spring 框架中Spring 容器可以调用 Bean 对应类的无参构造方式来实例化 Bean public class BookDaoImpl implements BookDao {Overridepublic void save() {} }bean idbookDao classcom.dao.impl.BookDaoImpl/注意若没有无参构造方法则将抛出 BeanCreationException 异常 2静态工程实例化 在使用静态工厂实例化 Bean 时开发者需要在工厂类中创建一个静态方法来创建 Bean 的实例。在配置 Bean 时class 属性指定静态工厂类同时还需要使用 factory-method 属性指定工厂类中的静态方法 public class BookDaoImpl implements BookDao {Overridepublic void save() {} }// ... public class BookDaoFactory {public static BookDao getBookDao() {return new BookDaoImpl();} }bean idbookDao classcom.factory.BookDaoFactory factory-methodgetBookDao/3实例工厂实例化 在使用实例工厂实例化 Bean 时需要我们在工厂类中创建一个实例方法来创建 Bean 的实例。在配置 Bean 时需要使用 factory-bean 属性指定配置的实例工厂同时还需要使用 factory-method 属性指定实例工厂中的实例方法 public class BookDaoImpl implements BookDao {Overridepublic void save() {} }// ... public class BookDaoFactory {public BookDao getBookDao() {return new BookDaoImpl();} }bean idbookDaoFactory classcom.factory.BookDaoFactory/ bean idbookDao factory-methodgetBookDao factory-beanbookDaoFactory/除了上面的实现方式还可以对实例工厂实例化方式进行简化即使用 FactoryBean 实例化 Bean。创建一个实现 FactoryBean 接口的工厂方法实现统一接口最后进行配置 public class BookDaoFactoryBean implements FactoryBeanBookDao {Overridepublic BookDao getObject() throws Exception {return new BookDaoImpl();}Overridepublic Class? getObjectType() {return BookDao.class;}Overridepublic boolean isSingleton() {return true; // 使用单例模式} }bean idbookDao classcom.factory.BookDaoFactoryBean/Bean 的生命周期 Bean 的生命周期是指 Bean 从创建到消亡的完整过程。而 Bean 生命周期控制是指在 Bean 创建后到销毁前做一些事情。 public class BookDaoImpl implements BookDao {Overridepublic void save() {}// 用于实现 bean 初始后对应操作public void init() {System.out.println(init...);}// 用于实现 bean 销毁前对应操作public void destroy() {System.out.println(destroy...);} }bean idbookDao classcom.dao.impl.BookDaoImpl init-methodinit destroy-methoddestroy/上面是通过配置方法的方式实现 Bean 生命周期控制也可以通过接口的方式实现 Bean 生命周期控制实现 InitializingBean 和 DisposableBean 接口以及对应的方法 public class BookDaoImpl implements BookDao, InitializingBean, DisposableBean {Overridepublic void save() {}Overridepublic void afterPropertiesSet() throws Exception {System.out.println(init...);}Overridepublic void destroy() throws Exception {System.out.println(destroy...);} }bean idbookDao classcom.dao.impl.BookDaoImpl/我们运行 Bean 生命周期控制的代码会发现init 执行了但是 destroy 没有执行。原因是程序运行在虚拟机中在虚拟机启动后会经历容器初始化、使用 Bean以及关闭/销毁容器三个阶段。然而这里虚拟机并没有进入关闭/销毁容器阶段就退出了。这里有两种进入关闭/销毁阶段的方式 1在虚拟机退出前主动关闭容器 ClassPathXmlApplicationContext ctx new ClassPathXmlApplicationContext(applicationContext.xml); ctx.close();2注册关闭钩子 ClassPathXmlApplicationContext ctx new ClassPathXmlApplicationContext(applicationContext.xml); ctx.registerShutdownHook(); // 指示在关闭虚拟机之前先关闭容器Bean 的装配 Bean 的装配可以理解为将 Bean 依赖注入到 Spring 容器中。Spring 容器支持基于 XML 配置的装配、基于注解的装配以及自动装配等多种装配方式。 1基于 XML 配置的装配 在 Spring 中有两种主要的基于 XML 配置的装配方式一种是通过属性的 setter 方法进行注入另一种是通过构造方法进行注入。根据注入的数据类型这些方式又可以分为引用类型注入和简单类型注入。 使用 setter 方法注入简单类型数据 在 bean 中定义简单类型数据并提供可访问的 set 方法 public class BookDaoImpl implements BookDao {private int connectionNum;private String databaseName;public void setConnectionNum(int connectionNum) {this.connectionNum connectionNum;}public void setDatabaseName(String databaseName) {this.databaseName databaseName;} }配置中使用 property 标签 value 属性注入简单类型数据 bean idbookDao classcom.dao.impl.BookDaoImplproperty nameconnectionNum value10/property namedatabaseName valuemysql/ /bean使用 setter 方法注入引用类型数据 在 bean 中定义引用类型属性并提供可访问的 set 方法 public class BookServiceImpl implements BookService {private BookDao bookDao;public void setBookDao(BookDao bookDao) {this.bookDao bookDao;} }配置中使用 property 标签 ref 属性注入引用类型 bean idbookService classcom.service.impl.BookServiceImplproperty namebookDao refbookDao/ /bean bean idbookDao classcom.dao.impl.BookDaoImpl/使用构造方法注入简单类型数据 在 bean 中定义简单类型属性并提供可访问的构造方法 public class BookDaoImpl implements BookDao {private int connectionNum;private String databaseName;public BookDaoImpl(int connectionNum, String databaseName) {this.connectionNum connectionNum;this.databaseName databaseName;} }配置中使用 constructor-arg 标签 value 属性注入简单类型对象 bean idbookDao classcom.dao.impl.BookDaoImplconstructor-arg nameconnectionNum value10/constructor-arg namedatabaseName valuemysql/ /bean使用构造方法注入引用类型数据 在 bean 中定义引用类型属性并提供可访问的构造方法 public class BookServiceImpl implements BookService {private BookDao bookDao;public BookServiceImpl(BookDao bookDao) {this.bookDao bookDao;} }配置中使用 constructor-arg 标签 ref 属性注入引用类型对象 bean idbookDao classcom.dao.impl.BookDaoImpl/ bean idbookService classcom.service.impl.BookServiceImplconstructor-arg namebookDao refbookDao/ /bean2基于注解的装配 使用 Component 定义 bean Component(bookDao) // 起名称为 bookDao public class BookDaoImpl implements BookDao {Overridepublic void save() {} }核心配置文件中通过组件扫描加载 bean ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:contexthttp://www.springframework.org/schema/contextxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdcontext:component-scan base-packagecom.dao/ /beans另外Spring 提供了 Component 注解的三个衍生注解分别是 Controller用于表现层 bean 定义Service用于业务层 bean 定义Repository用于数据层 bean 定义 3自动装配 IoC 容器根据 bean 所依赖的资源在容器中自动查找并注入到 bean 中的过程称为自动装配。自动装配的方式可分为按类型、按名称、按构造方法和默认。 配置中使用 bean 标签 autowire 属性设置自动装配的类型 bean idbookDao classcom.dao.impl.BookDaoImpl/ bean idbookService classcom.service.impl.BookServiceImpl autowirebyType/使用细节 自动装配用于引用类型依赖注入不能对简单类型进行操作使用按类型装配时byType必须保障容器中相同类型的 bean 唯一推荐使用使用按名称装配时byName必须保障容器中具有指定名称的 bean因变量名与配置耦合不推荐使用自动装配优先级低于 setter 注入与构造器注入同时出现时自动装配配置失效 4集合的注入 public class BookDaoImpl implements BookDao {private int[] array;private ListString list;private SetString set;private MapString, String map;private Properties properties;public void setArray(int[] array) {this.array array;}public void setList(ListString list) {this.list list;}public void setSet(SetString set) {this.set set;}public void setMap(MapString, String map) {this.map map;}public void setProperties(Properties properties) {this.properties properties;} }bean idbookDao classcom.dao.impl.BookDaoImplproperty namearrayarrayvalue100/valuevalue200/value/array/propertyproperty namelistlistvaluejava se/valuevaluejava ee/value/list/propertyproperty namesetsetvaluejava se/valuevaluejava ee/value/set/propertyproperty namemapmapentry keyk1 valuev1/entry keyk2 valuev2//map/propertyproperty namepropertiespropsprop keyk1v1/propprop keyk2v2/prop/props/property /bean
http://www.hkea.cn/news/14559631/

相关文章:

  • 微信用大型网站站做跳板dw网页制作模板教程
  • 韩版做哪个网站好做视频网站要多大的带宽
  • 建设网站有哪些好处和坏处espresso wordpress函数
  • 详情页在线设计网站推荐学做网站看书会了吗
  • 南京网站建设 小程序网站制作公司哪里好
  • 全球首个完全响应式网站自助建设平台在中国诞生英文网站建设600
  • 松江区网站建设公司网站综合营销方案
  • dede cms 网站模板做网站 没内容
  • 医院网站建设趋势免费公司网址怎么注册
  • 网站建设与网页设计是什么意思广州招聘网
  • 搬家公司网站制作网站设计 电子购物网站设计
  • 南京学做网站公司设计网站需要包含什么资料
  • 网站收录下降一小时学做网站
  • 机票网站建设公司好成都网站建设顶呱呱
  • 网站建设价格差异好大网站失败后怎么重新建设
  • 弹幕网站开发阿里巴巴怎样做网站
  • 成立网站百姓网招聘信息最新招聘
  • 网站建设公司选择意见书wordpress自带的会员中心
  • 做火影网站背景图在线制作免费生成图片logo
  • 网站建设是什么专业啊软件公司排名100强
  • 网站服务器租用价格 贴吧江门网站建设推广策划
  • 郓城菏泽网站建设免费服务器主机
  • 在线做logo印章网站dw代码写完之后怎么运行网页
  • 给公司做的东西放到私人网站上宁夏百度推广代理商
  • wordpress能做手机站吗北京装修设计公司有哪些
  • 福建省龙岩市建设培训中心网站ps网页模板
  • 建设通查询设通网站凡客诚品官方网站
  • 腾讯网站备案专业合肥网站建设
  • 泰安中商网络做的网站怎么进入php网站开发思路
  • 想注册一个做网站的公司好怎么用源码建站