- 浏览: 164369 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (116)
- 随笔 (2)
- spring (24)
- struts (1)
- hibernate (6)
- log4j (0)
- mysql (14)
- oracle (0)
- ext (0)
- jQuery (0)
- HTML+CSS (2)
- Javascript (1)
- 其它杂碎 (0)
- IT (3)
- J2EE综合 (15)
- SQLServer (1)
- 好文章URL 待阅读 (3)
- 编辑器 (2)
- 版本控制 (5)
- Tomcat (4)
- DoJo (0)
- Ubuntu (11)
- Hadoop (3)
- cxf (3)
- maven (6)
- CI (5)
- H2 (1)
- JVM (1)
- FirefoxOS (1)
- Jboss (1)
- 操作系统 (1)
- C3P0 (2)
- Quartz (1)
- maps (10)
- 设计模式 (5)
最新评论
-
yogurt2012:
请问··我如果要调试H2数据库来分析其JOIN算法应该怎么做呢 ...
H2笔记 -
carlosfu:
很好很全,很有收获
Spring3笔记之 JDBC -
ponlya:
coldrush 写道看了你的配置 ,刚绝 file:后加绝对 ...
添加使用dtd文件 -
ponlya:
byp19980911 写道这不是很好的解决办法,最好是使用连 ...
java.net.SocketException:Software caused connection abort: socket write error -
ponlya:
ayanami001 写道为什么spring没有封装分页吗,那 ...
Spring3笔记之 JDBC(分页)
DI (依赖注入)有二种: Constructor-based dependency injection and Setter-based dependency
a)、Constructor-based DI
com.spring305.test.beanInit.po.InitSingeBean.java
import java.util.Date; public class InitSingeBean { private int id; private Integer age; private String name; private Date birth; private Double weight; private float height; private Boolean sex; public InitSingeBean() { super(); System.out.println(this); } public InitSingeBean(int id, Integer age) { super(); this.id = id; this.age = age; System.out.println(this+"_"+id+"_"+age); } public InitSingeBean(int id, Integer age, String name, Date birth, Double weight, float height, Boolean sex) { super(); this.id = id; this.age = age; this.name = name; this.birth = birth; this.weight = weight; this.height = height; this.sex = sex; System.out.println(this); } public InitSingeBean(int id, Integer age, String name, Double weight, float height, Boolean sex) { super(); this.id = id; this.age = age; this.name = name; this.weight = weight; this.height = height; this.sex = sex; System.out.println(this); } public void test(){ System.out.println(id+"_"+age+"_"+name+"_"+birth+"_"+weight+"_"+height+"_"+sex); } .....getter settter }
Test.java
@Test public void InitSingeBean() { //System.out.println(new Date()); ApplicationContext context = new ClassPathXmlApplicationContext("testBeanInit.xml"); InitSingeBean initSingeBean = (InitSingeBean) context.getBean("initSingeBean"); initSingeBean.test(); }
src/ testBeanInit.XML
<!-- 没有任何参数注入 <bean id="initSingeBean" class="com.spring305.test.beanInit.po.InitSingeBean"> </bean> --> <!-- 构造参数注入,但是,要注意的是这个index(顺序)/type(类型)/value(值)的顺序,而且,这里是不支持自动装箱和拆箱的哦,int Integer,貌似不能自动转 <bean id="initSingeBean" class="com.spring305.test.beanInit.po.InitSingeBean"> <constructor-arg type="int" value="750"/> <constructor-arg type="Integer" value="057"/> </bean> --> <!-- 构造参数注入2 <constructor-arg index="0" value="750"/> <constructor-arg type="int" value="750"/> 2011-04-16 12:00:00 时间的注入不能写成这样子的,这种写法应该是中国cn区的写法吧。 包装类型的要写包装类型,加上包名也是可以的 <bean id="initSingeBean" class="com.spring305.test.beanInit.po.InitSingeBean"> <constructor-arg index="0"><value>750</value></constructor-arg> <constructor-arg type="java.lang.Integer" value="057"/> <constructor-arg type="String" value="00001测试"/> <constructor-arg type="java.util.Date" value="Sat Apr 16 15:20:13 CST 2011"/> <constructor-arg type="java.lang.Double" value="2011.0123"/> <constructor-arg type="float" value="2011.0321"/> <constructor-arg type="java.lang.Boolean" value="true"/> </bean> -->
b)、Setter-based DI
XML
<!-- setter设值注入 <bean id="dateBean" class="java.util.Date"/> 或者 <bean id="dateFormat" class="java.text.SimpleDateFormat"> <constructor-arg value="yyyy-MM-dd" /> </bean> <ref bean="dateBean"/> or <bean id="dateBean" class="java.util.Date"/> either is ok--> <bean id="dateFormat" class="java.text.SimpleDateFormat"> <constructor-arg value="yyyy-MM-dd" /> </bean> <bean id="initSingeBean" class="com.spring305.test.beanInit.po.InitSingeBean"> <property name="id" value="23"></property> <property name="age" value="34"></property> <property name="name"><value>jdbc:mysql://localhost:3306/mydb</value></property> <property name="birth"> <!-- <ref bean=dateBean/> --> <bean factory-bean="dateFormat" factory-method="parse"> <constructor-arg value="2010-01-31" /> </bean> </property> <property name="weight" value="2011.0123"></property> <property name="height" value="23"></property> <property name="sex" value="false"></property> </bean>
<!-- org.apache.commons.dbcp.BasicDataSource 这个怎么样,不过你得先在XML头中加上 xmlns:p="http://www.springframework.org/schema/p" <bean id="initSingeBean" class="com.spring305.test.beanInit.po.InitSingeBean" p:id="123" p:age="345" p:name="dbc:mysql://localhost:3306/mydb" p:birth="Sat Apr 16 15:20:13 CST 2011"/> -->
到底使用哪种来注入?
Spring3官方文档:
<!--EndFragment-->
it is a good rule of thumb to use constructor arguments for mandatory dependencies and setters for optional dependencies。....The Spring team generally advocates setter injection
关于一般属性的注解现没在文档上找到。。。估计那样也没多大意义。。。
发表评论
-
Spring整合Hibernate(摘录)
2011-05-07 09:48 741简要步骤From:http://blog.csdn.net/s ... -
Spring3笔记之 JDBC(分页)
2011-04-25 22:08 2017接上篇的实体,DAO接口,实现,测试及XML http://p ... -
Spring3笔记之 JDBC
2011-04-25 22:02 7811使用Spring 的JDBC 先创建表: DROP TAB ... -
Spring3笔记之 事务传播
2011-04-24 15:51 1208摘自:http://zhxing.iteye.com/blog ... -
Spring3笔记之 AOP
2011-04-24 14:24 1897Spring AOP部分使用JDK动态代理或者CGLIB来为目 ... -
Spring3笔记之 AOP Cglib 代理
2011-04-24 14:13 1354JDK的Proxy实现代理要求 ... -
Spring3笔记之 AOP JDK 代理
2011-04-24 14:09 1048使用JDK代理,代理对象必须实现一接口 com.spring ... -
Spring3之 Resource
2011-04-21 22:49 3975主要是org.springframework.core.io. ... -
Spring3之 bean 注解
2011-04-20 22:18 1501小记下,spring注解相关: com.spring305. ... -
Spring3之 bean 定制bean特性
2011-04-19 21:10 1291Customizing the nature of a bea ... -
Spring3之 bean 作用域scope
2011-04-18 22:21 1458Bean scopes 作用域 5个:singleton,p ... -
Spring3之 bean Method injection
2011-04-17 20:04 1457Method injection(方法注入) bean都是s ... -
Spring3之 bean AutoWire
2011-04-17 12:01 5936Autowiring collaborators 自动装配 ... -
Spring3之 bean depends-on
2011-04-17 08:56 3265depends-on depend-on用来表 ... -
Spring3之 bean Lazy-initialized beans
2011-04-17 08:48 1971Lazy-initialized beans延迟 ... -
Spring3之 集合对象属性注入
2011-04-16 23:17 1208com.spring305.test.beanInit.cpo ... -
Spring3之 bean idref?
2011-04-16 18:39 964很是奇怪idref是干什么 ... -
Spring3之 实例化bean2
2011-04-16 14:30 1015Spring3之 bean命名(http://ponlya.i ... -
Spring3之 bean命名
2011-04-16 11:36 2007一、bean的命名采用标准Java命名约定:小写字母开头,首字 ... -
Spring3之 IoC容器的实例化
2011-04-16 08:39 1515Bean:在Spring中,那些组成你应用程序的主体(ba ...
相关推荐
通过以上内容,我们可以了解到Spring中Bean属性注入的多种方式及其背后的原理。了解并熟练运用这些技巧,能够帮助我们更有效地设计和管理Spring应用中的对象依赖关系。在实际开发中,结合源码阅读和实践,可以进一步...
本文将详细讲解使用注解方式进行Bean属性注入的方法,以及相关的源码和工具应用。 首先,让我们了解Spring中的注解。在Spring 2.5版本之后,引入了基于注解的配置,这使得我们可以直接在类或方法上使用注解来声明...
本文将深入探讨Spring中的"名称空间p",这是一种用于配置Bean属性注入的方式,特别是在XML配置文件中。我们将通过源码分析和实际例子来理解其工作原理。 ### Spring Bean属性注入 Bean属性注入主要有两种方式:`...
在Spring框架中,Bean的属性注入是核心功能之一,它允许我们通过配置文件或注解来设置Bean的属性值,从而实现对象的依赖管理。在本主题“day38 14-Spring的Bean的属性的注入:集合属性的注入”中,我们将深入探讨...
在Spring框架中,Bean的属性注入是其核心功能之一,使得我们可以轻松地管理对象的依赖关系,无需在代码中硬编码这些依赖。本篇将详细探讨Spring中的SpEL(Spring Expression Language)注入,这是一种强大的表达式...
Spring Boot工具类静态属性注入及多环境配置详解 Spring Boot工具类静态属性注入是指使用Spring Boot框架时,如何将配置信息注入到工具类的静态变量中,以便在程序中使用这些配置信息。这种方式可以方便地在不同的...
同时,可以通过`@Value`或`@Autowired`注解进行属性注入。 ```java @Component("teacher") public class Teacher { private String name; // ... } @Component public class Student { private String ...
Spring 框架的核心特性之一就是依赖注入(Dependency Injection,简称 DI),这是一种设计模式,它允许我们控制组件之间的耦合,而不是让组件自行创建它们所依赖的对象。这有助于提高代码的可测试性、可维护性和灵活...
在Spring框架中,Bean的注入是其核心特性之一,它允许开发者通过声明式的方式管理对象的依赖关系。本文将深入探讨如何在Spring中通过XML配置文件对Bean进行值的注入,包括List、Set和Map等集合类型的注入。 首先,...
在Spring框架中,属性注入是核心特性之一,它允许我们通过依赖注入(Dependency Injection, DI)来管理对象的属性,而不是让对象自行创建或查找它们的依赖。这有助于提高代码的可测试性、可维护性和解耦性。下面将...
在Spring Boot中,属性注入是核心特性之一,它使得我们可以方便地将配置文件中的参数值注入到Bean类的属性中,从而实现灵活的配置管理。本文将详细讲解如何利用`@ConfigurationProperties`注解以及与`@...
在`doCreateBean()`方法中,Spring会创建Bean的实例,`createBeanInstance(beanName, mbd, args)`执行Bean实例的创建,而`populateBean(beanName, mbd, instanceWrapper)`则负责填充Bean的属性,将依赖注入到Bean中...
在本文中,我们将深入探讨Spring框架中的Bean XML配置,这是Spring的核心特性之一,它允许我们定义、管理和装配应用中的对象。我们将围绕以下知识点展开: 1. **Spring框架基础**: Spring是一个开源的Java平台,...
5. **InitializingBean接口**:如果Bean实现了`InitializingBean`接口,Spring会在所有必需的属性设置后调用`afterPropertiesSet()`方法。这个接口的方法调用时机晚于`@PostConstruct`注解的方法,因此实例化顺序会...
"Spring Bean的属性注入方式" Spring Bean的属性注入方式是Spring框架中一个非常重要的概念,用于将Bean的属性值注入到Bean实例中。 Spring Bean的属性注入方式有多种,包括构造器注入、Setter方法注入、集合属性...
3. **Java配置类**:Spring 3.0引入了Java配置,允许我们使用Java类来配置Bean。 ```java @Configuration public class AppConfig { @Bean public MyBean myBean() { return new MyBean(); } } ``` 这里的`@Bean...
`BeanDefinitionBuilder`提供了简洁的API来定义一个Bean的所有属性和行为,包括它的类型、依赖注入的属性等。在这个例子中,我们创建了一个`UserService`类型的Bean定义。 ```java BeanDefinitionBuilder ...
接下来,我们将通过一个简单的步骤来展示如何在Spring中创建Bean: 1. **定义Bean的类**: 首先,创建一个Java类,例如`MyService`,它代表一个Bean。这个类可能包含一些业务逻辑。 ```java public class ...
需要注意的是,bean 属性的注入是在初始化方法调用之前。因此,在使用 DependsOn 注解时,需要了解 Spring 中 bean 的加载过程,以免出现错误。 其他实现方式 除了上述两种方式外,还有其他方式可以控制 2 个 bean...