package com.astute.sparrow.spring.ioc.test;
public class B {
public void output() {
System.out.println("B.output");
}
}
package com.astute.sparrow.spring.ioc.test;
public class A {
private B b;
public A() {
}
public A(B b) {
super();
this.b = b;
}
public B getB() {
return b;
}
public void setB(B b) {
this.b = b;
}
}
//创建Bean工厂
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
//生成BeanDefinition
AbstractBeanDefinition newA = new RootBeanDefinition(A.class);
newA.setScope(BeanDefinition.SCOPE_SINGLETON);
AbstractBeanDefinition newB = new RootBeanDefinition(B.class);
newB.setScope(BeanDefinition.SCOPE_PROTOTYPE);
//注册
factory.registerBeanDefinition("a", newA);
factory.registerBeanDefinition("b", newB);
//功过构造函数注入
ConstructorArgumentValues argValues = new ConstructorArgumentValues();
argValues.addIndexedArgumentValue(0, newB);
newA.setConstructorArgumentValues(argValues);
//通过Setter方式注入
MutablePropertyValues propertyValues = new MutablePropertyValues();
propertyValues.addPropertyValue(new PropertyValue("b", newB));
newA.setPropertyValues(propertyValues);
A a = (A) factory.getBean("a");
a.getB().output();
分享到:
相关推荐
MyBatis是一个流行的Java持久层框架,它简化了数据库操作,通过XML或注解的方式将SQL与Java代码绑定,提供了一种动态SQL的功能。在开发过程中,手动编写Mapper接口、Mapper XML文件以及对应的实体类(bean)是一项...
在 Spring 中使用编码方式动态配置 Bean 是一种非常灵活和强大的方式,可以满足不同的业务需求。但是,需要注意的是,在使用这种方式时,需要充分了解 Spring 框架的原理和机制,以避免出现一些不必要的错误。
XMLBean和XMLStream是两种处理XML数据与Java对象之间转换的工具,它们在Java开发中广泛用于解析XML文档和创建Java对象。这两种方法各有特点,适用于不同的场景。 XMLBean是Apache软件基金会的Cocoon项目的一部分,...
- **绑定注解**:通过使用绑定注解(如`@MyQualifier`),我们可以指定特定的Bean实例应该被注入到何处。 - **部署类型**:WebBeans支持多种部署类型,包括容器托管的Bean和程序控制的Bean等。 - **解决未满足的依赖...
在企业级开发中,工具如Apache BeanUtils或Spring的BeanFactory可以自动创建和管理这些对象,减少手动编码的工作量,提高开发效率。 "数据库连接service"指的是应用程序中负责与数据库进行通信的部分,通常是一个...
通过依赖注入,Spring容器可以将其他Bean作为依赖注入到目标Bean中,使得对象之间的关系在运行时动态绑定,而不是在编译时硬编码。依赖注入可以通过构造器注入、setter注入或属性注解方式实现。 4. **作用域(Scope)...
3. **非侵入性**:Spring并不强制开发者使用特定的设计模式或编码方式,而是尽可能地适应现有的代码结构。 4. **强大的社区支持**:Spring拥有庞大的开发者社区,这意味着有丰富的资源和支持可用。 5. **广泛的集成...
- **Bean实例化**:有多种方式实例化bean,包括使用构造函数、静态工厂方法和实例工厂方法。 3. **面向切面编程(AOP)**:Spring的AOP允许开发者定义“方面”,这些方面是跨越多个对象的横切关注点,如日志、...
这使得开发者无需在代码中硬编码依赖,而是由Spring容器负责创建、管理和协调这些对象。Spring支持两种主要的装配方式:XML配置和基于注解的配置。 1. XML配置: 在传统的Spring应用中,XML配置文件(如`...
JAXB (Java Architecture for XML Binding) 是Java平台上的一个标准,用于将XML文档与Java对象之间进行绑定,实现XML数据的解析和序列化。在Java开发中,JAXB提供了一种方便的方式,允许开发者通过XML Schema (XSD) ...
Bean在这里通常指的是JavaBean,这是一种遵循特定命名和编码约定的Java类,用于封装数据和业务逻辑。Bean Tags包括以下几种: - **bean:cookie**:此标签用于从HTTP请求中获取名称为`name`的Cookie的值,根据`...
9. **替代与绑定**:CDI允许定义bean的替代和绑定规则,这样可以在运行时选择使用哪个bean实例,增强了灵活性和可配置性。 10. **测试与调试**:CDI提供了一套测试API,使得测试组件和服务变得更加容易。开发者可以...
Spring入门案例通常涉及一个简单的应用,演示如何通过XML或注解的方式配置和使用Spring容器。 **1.4 基于注解的Spring的使用** - **1.3.1 注解的概念**:注解是一种元数据,用于向编译器或运行时环境提供额外的...
这种方式利用了请求参数的名称与Bean属性之间的映射关系,实现了自动绑定,大大简化了数据处理过程。 #### 在多个Servlet和JSP页面间共享JavaBeans 为了在不同的Servlet和JSP页面之间共享JavaBeans实例,可以将...
1. **组件驱动**:JSF拥有大量的内置组件,如输入字段、按钮、表格等,开发者可以通过声明式方式使用它们,减少了编码量。 2. **事件驱动**:用户交互触发事件,JSF会处理这些事件并调用对应的处理方法。 3. **可...
这对于避免硬编码bean名称和增强代码的灵活性非常有用。例如: ```xml <bean id="userService" class="com.lizjason.service.UserService"/> ``` 这样,代码可以使用`userService`或`userServiceAlt`引用相同...
在例子中,你可能会看到如何使用`InitialContext`查找和绑定EJB。 **EJB的部署**: EJB部署在应用服务器如Tomcat、JBoss或WebLogic等上。部署描述符(如ejb-jar.xml)定义了Bean的元数据,包括Bean的类名、接口、...