Spring注入field值
嘿嘿,今天偷懒,就记一点点内容,然后去看PPLIVE去!
注入field值
FieldRetrievingFactoryBean用来获得目标bean的field值。获得的值可注入给其他bean,也可直接定义成新的bean.
for example:
--------------------------------------------------------------------------------------------
package org.viking.spring.imp;
public class Son
{
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
--------------------------------------------------------------------------------------------
<?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-2.0.xsd">
<bean id="son" class="org.viking.spring.imp.Son">
<property name="age">
<!-- FiledRetrievingFactoryBean用来获取目标类的field值。id属性确定获取哪个类哪个field值。 -->
<bean id="java.sql.Connection.TRANSACTION_SERIALIZABLE" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"/>
</property>
</bean>
</beans>
--------------------------------------------------------------------------------------------
package org.viking.spring.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.viking.spring.imp.Son;
import junit.framework.TestCase;
public class TestInjectField extends TestCase
{
public void testInjectField()
{
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
Son son = (Son)app.getBean("son");
System.out.println("系统获取son的age属性: " + son.getAge());
}
}
--------------------------------------------------------------------------------------------
下面这个是field值定义成bean实例。只需修改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-2.0.xsd">
<bean id="son" class="org.viking.spring.imp.Son">
<property name="age">
<!-- FiledRetrievingFactoryBean用来获取目标类的field值。id属性确定获取哪个类哪个field值。 -->
<bean id="java.sql.Connection.TRANSACTION_SERIALIZABLE" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"/>
</property>
</bean>
<bean id="theAge" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
<property name="staticField">
<value>java.sql.Connection.TRANSACTION_SERIALIZABLE</value>
</property>
</bean>
</beans>
--------------------------------------------------------------------------------------------
package org.viking.spring.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.viking.spring.imp.Son;
import junit.framework.TestCase;
public class TestInjectField extends TestCase
{
public void testInjectField()
{
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
Son son = (Son)app.getBean("son");
System.out.println("系统获取son的age属性: " + son.getAge());
System.out.println("系统获取theAge的值: " +app.getBean("theAge"));
}
}
分享到:
相关推荐
在IT行业中,Spring框架是Java开发中的一个基石,尤其在控制反转(IoC)和依赖注入(DI)方面。依赖注入是一种设计模式,它允许我们解耦组件,提高代码的可测试性和可维护性。Spring框架通过IoC容器来实现DI,让我们...
例如,`@Component`、`@Service`、`@Repository`和`@Controller`用于标记组件,`@Autowired`用于自动装配依赖,`@Qualifier`用于指定特定的bean,`@Value`用于注入值,`@Scope`定义bean的作用域等。 实现类似Spring...
3. 字段注入(Field-based Dependency Injection) 字段注入是通过使用@Autowired注解直接在成员变量上进行依赖注入的一种方式。这种方式代码最为简洁,但缺点是丧失了灵活性,因为它不直接指定注入的来源,而是依赖...
- **FieldRetrievingFactoryBean**:注入其他Bean的字段(Field)值,直接访问类或对象的Field。 - **MethodInvokingFactoryBean**:调用指定Bean的普通方法,可以用于初始化操作。 6. **Prototype作用域的Bean...
例如,我们可以使用`Class.forName(className)`加载类,`newInstance()`创建对象,`Field`类获取并设置属性值,以及`Method`类调用setter方法。 模拟Spring的XML配置文件注入,还需要实现一个Bean工厂类,它负责...
Field值的注入,即直接将值注入到类的成员变量中,这在Spring中通常通过`FieldRetrievingFactoryBean`来完成。该工厂Bean用于获取类的静态变量,并将其注入到其他Bean的属性中。例如,在`CarBrandType`接口中定义了...
-- 使用SpEL表达式注入Date对象 --> <bean id="datebean" class="com.springDemo1.Date类型注入.DateBean"> <property name="birthday"> <util:constant static-field="java.util.Calendar.DAY_OF_MONTH" /> ...
4. **注入**:一旦找到合适的注入对象,Spring会使用字段注入(直接设置字段值)或方法注入(调用setter方法)将对象注入到目标bean中。在给定的代码片段中,如果目标bean的字段有setter方法,Spring会使用`method....
2. **设值注入(Setter Injection)**:通过setter方法来注入依赖。 3. **字段注入(Field Injection)**:直接在字段上进行依赖注入。 每种注入方式都有其适用场景,开发者应根据具体情况选择最合适的方式。 ####...
- 字段注入(Field Injection) - 接口注入(Interface Injection) 12、区分构造函数注入和setter注入。 构造函数注入是指在构造对象时通过构造函数的参数来注入依赖关系,这种方式使得依赖关系必须在构造时提供,...
- **使用Setter/Field注入**:另一种方法是改用setter注入或字段注入。这样,依赖直到被真正使用时才会被注入,避免了构造器阶段的循环依赖问题。在`CircularDependencyA`中添加setter方法,并移除构造器注入,可以...
Spring 3是该框架的一个版本,它包含了众多特性,如依赖注入、AOP(面向切面编程)、事务管理等。 2. **Spring Data**: Spring Data项目的目标是为各种数据存储提供一个统一的访问层,简化数据访问。它通过提供模板...
IoC通过setter注入、constructor注入、interface注入和field注入等方式实现对象的装配。 Spring的面向切面编程(AOP)则是为了解决传统面向对象编程中出现的"紧耦合"问题,即业务逻辑与系统服务的过度纠缠。AOP的...
- field注入:直接在字段级别注入依赖,虽然不推荐,但在某些情况下可能方便。 4. AOP概念 - 切面(Aspect):关注点的一个模块化,如日志、事务。 - 切点(Join Point):程序执行过程中特定的点,如方法调用。...
Spring提供了多种注入方式,如构造器注入、setter注入、field注入等。 在阅读源码的过程中,还需要理解Spring的事件模型、国际化支持、资源加载策略等。此外,对于Web开发者,Spring MVC的处理器映射、视图解析、...
Java动态代理、自动注入和切面编程是Java开发中至关重要的概念,特别是在Spring框架中,它们为应用程序提供了灵活的控制和解耦。本篇文章将深入探讨这些知识点,并通过实例代码来帮助你理解如何自己实现类似Spring的...
Spring @Autowired 注入小技巧 在 Spring 框架中,@Autowired 注解是用来实现自动依赖注入的。它可以根据类型(Type)进行自动注入,并且默认注入的 bean 为单例(SingleTon)的。下面我们来详解一些 @Autowired ...
3. field注入:直接将依赖对象注入到类的成员变量中。 例如,`HelloImpl4`类依赖于`Message`类,我们可以编写如下的XML配置来实现setter注入: ```xml <bean id="message" class="org.yihang.spring.Message">...