当前位置: 首页> 健康> 母婴 > 沧州什么网最好_全国企业信用公示查询服务平台_百度seo怎么把关键词优化上去_成人本科

沧州什么网最好_全国企业信用公示查询服务平台_百度seo怎么把关键词优化上去_成人本科

时间:2025/7/14 13:01:00来源:https://blog.csdn.net/xiaoyu070321/article/details/146154419 浏览次数:1次
沧州什么网最好_全国企业信用公示查询服务平台_百度seo怎么把关键词优化上去_成人本科

一、IOC 容器创建 Bean 的四种方式

1.1 普通创建方式

使用场景:直接通过类默认构造器创建对象
实现步骤

<!-- 配置示例 -->
<bean id="book01" class="cn.cjxy.ioc_bean.domain.Book"/>

代码说明

  • id:Bean 的唯一标识符
  • class:指定类的全限定名
  • Spring 会调用默认无参构造器实例化对象

1.2 工厂模式创建

使用场景:需要工厂类处理复杂初始化逻辑时
实现步骤

// 工厂类
public class BookFactory {public Book createBook() {return new Book("001", "Factory Book", 99.9);}
}
<!-- 配置示例 -->
<bean id="bookFactory" class="cn.cjxy.ioc_bean.factory.BookFactory"/>
<bean id="book02" factory-bean="bookFactory" factory-method="createBook"/>

代码说明

  • 先注册工厂 Bean
  • factory-bean 指向工厂实例
  • factory-method 指定创建方法

1.3 静态工厂创建

使用场景:不需要工厂实例时的高效创建方式
实现步骤

public class BookStaticFactory {public static Book createBook() {return new Book("002", "Static Book", 88.8);}
}
<!-- 配置示例 -->
<bean id="book03" class="cn.cjxy.ioc_bean.factory.BookStaticFactory" factory-method="createBook"/>

代码说明

  • 直接通过类名调用静态方法
  • 不需要先注册工厂 Bean

1.4 FactoryBean 接口方式

使用场景:需要精细控制 Bean 创建过程时
实现步骤

public class BookFactoryBean implements FactoryBean<Book> {@Overridepublic Book getObject() {return new Book("003", "FactoryBean Book", 77.7);}@Overridepublic Class<?> getObjectType() {return Book.class;}@Overridepublic boolean isSingleton() {return true;}
}
<!-- 配置示例 -->
<bean id="book04" class="cn.cjxy.ioc_bean.factory.BookFactoryBean"/>

代码说明

  • 实现 FactoryBean 接口的三个方法
  • 容器实际存储的是 getObject() 返回的对象

二、依赖注入方式优化

2.1 构造器注入

参数匹配方式

<!-- 通过参数名 -->
<bean id="book05" class="cn.cjxy.ioc_bean.domain.Book"><constructor-arg name="id" value="001"/><constructor-arg name="name" value="《论语》"/><constructor-arg name="price" value="28.9"/>
</bean>
<!-- 通过参数索引 -->
<bean id="book06" class="cn.cjxy.ioc_bean.domain.Book"><constructor-arg index="0" value="002"/><constructor-arg index="1" value="《大学》"/><constructor-arg index="2" value="33.9"/>
</bean>

2.2 Setter 注入

标准方式

<bean id="book08" class="cn.cjxy.ioc_bean.domain.Book"><property name="id" value="004"/><property name="name" value="《孟子》"/><property name="price" value="22.3"/>
</bean>

2.3 p 名称空间注入

配置优化

<!-- 需声明命名空间 -->
<beans xmlns:p="http://www.springframework.org/schema/p"><bean id="book09" class="cn.cjxy.ioc_bean.domain.Book"p:id="005" p:name="《狂人日记》" p:price="88.8"/>

2.4 级联赋值

对象嵌套处理

<!-- 方式1:直接级联 -->
<bean id="emp01" class="cn.cjxy.ioc_bean.domain.Emp"><property name="dept.id" value="001"/><property name="dept.name" value="研发部"/>
</bean>
<!-- 方式2:引用已存在的Bean -->
<bean id="dept01" class="cn.cjxy.ioc_bean.domain.Dept"><property name="id" value="002"/><property name="name" value="销售部"/>
</bean>
<bean id="emp02" class="cn.cjxy.ioc_bean.domain.Emp"><property name="dept" ref="dept01"/>
</bean>

2.5 特殊值处理

null 值处理

<bean id="emp03" class="cn.cjxy.ioc_bean.domain.Emp"><property name="dept"><null/> <!-- 正确null赋值方式 --></property>
</bean>

2.6 复杂类型注入

集合类型处理

<bean id="dept04" class="cn.cjxy.ioc_bean.domain.Dept"><property name="empList"><list><ref bean="emp01"/><ref bean="emp02"/></list></property>
</bean>
<bean id="book11" class="cn.cjxy.ioc_bean.domain.Book"><property name="maps"><map><entry key="id" value="005"/><entry key="name" value="《小时代》"/></map></property>
</bean>

三、Bean 生命周期管理

3.1 生命周期阶段

public class Person {// 初始化方法public void init() {System.out.println("Bean初始化完成");}// 销毁方法public void destroy() {System.out.println("Bean即将销毁");}
}
<bean id="person01" class="cn.cjxy.ioc_bean.domain.Person"init-method="init" destroy-method="destroy"/>

执行流程

  1. 对象实例化
  2. 属性注入
  3. 调用 init-method
  4. Bean 就绪可用
  5. 容器关闭时调用 destroy-method

四、作用域与懒加载

4.1 作用域配置

<bean id="person02" class="cn.cjxy.ioc_bean.domain.Person"scope="prototype" lazy-init="true"/>
属性可选值说明
scopesingleton/prototype单例(默认) vs 多例
lazy-inittrue/false是否延迟初始化(默认false)

五、架构优化建议

  1. 工厂模式选择
    • 简单对象:优先使用普通创建方式
    • 复杂初始化:使用 FactoryBean
    • 静态工具类:采用静态工厂
  2. 依赖注入原则
    • 强制依赖使用构造器注入
    • 可选依赖使用 setter 注入
    • 避免混合使用多种注入方式
  3. 配置优化策略
<!-- 使用属性文件优化配置 -->
<context:property-placeholder location="classpath:config.properties"/><bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"><property name="jdbcUrl" value="${db.url}"/><property name="username" value="${db.user}"/>
</bean>
  1. 组件扫描优化
<!-- 启用自动扫描 -->
<context:component-scan base-package="cn.cjxy.ioc_bean"/>

六、测试示例

public class SpringTest {public static void main(String[] args) {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");// 获取单例BeanBook book1 = context.getBean("book01", Book.class);// 获取原型BeanPerson person = context.getBean("person02", Person.class);context.close(); // 触发destroy方法}
}

输出示例

创建了......  // 构造器输出
初始化了...... // init-method
销毁了......  // destroy-method

通过以上优化架构,可以实现:

  1. 清晰的 Bean 管理策略
  2. 灵活的依赖注入方式
  3. 可维护的配置结构
  4. 精确的生命周期控制

实际开发中建议结合注解方式(@Component, @Autowired)进行混合配置,提升开发效率。

关键字:沧州什么网最好_全国企业信用公示查询服务平台_百度seo怎么把关键词优化上去_成人本科

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: