- 浏览: 112051 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
Inmethetiger:
yixiandave 写道能不能在Validation注解的m ...
Spring验证小结和问题 -
yixiandave:
Inmethetiger 写道yixiandave 写道如果用 ...
Spring验证小结和问题 -
Inmethetiger:
yixiandave 写道如果用JSR303的话,可以引入hi ...
Spring验证小结和问题 -
yixiandave:
如果用JSR303的话,可以引入hibernate-valid ...
Spring验证小结和问题 -
jackytang520:
貌似用了这么久,没有碰到过这个问题..
idea属性文件中文乱码
首发地址: http://inmethetiger.iteye.com/blog/1685973
主要涉及构造方法注入,静态工厂,实例化工厂,set方法这几类方法实例化bean
1:使用空构造器进行定义,使用此种方式,class属性指定的类必须有空构造器
接口:
package com.yiyou.spring; public interface IHello { public String sayHello(); }
接口实现:
package com.yiyou.spring; public class HelloImpl implements IHello { private String message; //空的构造方法 public HelloImpl() { this.message = "Hello Spring Use Empty args Constructor"; } @Override public String sayHello() { return message; } }
配置
<?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-3.0.xsd"> <!-- 使用空构造器进行定义,使用此种方式,class属性指定的类必须有空构造器 --> <bean name="bean1" class="com.yiyou.spring.HelloImpl"></bean> </beans>
测试:
@Test public void test1() { BeanFactory beanFactory = new ClassPathXmlApplicationContext( "beans.xml"); IHello iHello = beanFactory.getBean("bean1", IHello.class); iHello.sayHello(); log.info(iHello.sayHello());//Hello Spring Use Empty args Constructor }
结果:Hello Spring Use Empty args Contructor
2:使用含有参数的构造器,使用此种方式,class属性指定的类必须含有该参数的构造器
接口一样。
接口实现:
package com.yiyou.spring; public class HelloImpl implements IHello { private String message; public HelloImpl(String message) { this.message = message; } @Override public String sayHello() { return message; } }
配置
<?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-3.0.xsd"> <!-- 使用含有参数的构造器,使用此种方式,class属性指定的类必须含有该参数的构造器 --> <bean id="bean2" class="com.yiyou.spring.HelloImpl"> <constructor-arg index="0" value="Hello Spring by Constructor"></constructor-arg> </bean> </beans>
测试
@Test public void test2() { BeanFactory beanFactory = new ClassPathXmlApplicationContext( "beans.xml"); IHello iHello = beanFactory.getBean("bean2", IHello.class); iHello.sayHello(); log.info(iHello.sayHello());//Hello Spring by Constructor }
结果:Hello Spring by Constructor表明使用带参数构造函数
3:使用静态工厂实例化bean,使用此种方法必须指定class属性,还要指定factory-method属性来指定实例化bean的方法,而且使用静态化方法也允许指定方法参数
1:接口。同上
2:同带参数的构造方法相同
3:需要一个静态工厂方法,返回一个接口
package com.yiyou.spring; public class HelloStaticFactory { //工厂方法 public static IHello newInstance(String message){ return new HelloImpl(message); } }
4:配置
<?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-3.0.xsd"> <!-- 使用静态工厂实例化bean,使用此种方法必须指定class属性,还要指定factory-method属性来指定实例化bean的方法,而且使用静态化 方法也允许指定方法参数 --> <bean id="bean" class="com.yiyou.spring.HelloStaticFactory" factory-method="newInstance"> <constructor-arg index="0" value="静态方法初始化bean"></constructor-arg> </bean> </beans>
测试:
@Test public void testStatic() { BeanFactory beanFactory = new ClassPathXmlApplicationContext( "beans.xml"); IHello iHello = beanFactory.getBean("bean", IHello.class); iHello.sayHello(); log.info(iHello.sayHello());// 静态方法初始化bean }
4:使用实例化工厂实例化bean,使用此种方法不能指定class属性,此刻必须使用factory-bean属性来指定工厂bean,同 样可以使用参数
一般都同上,只有以下不同
工厂方法:
package com.yiyou.spring; public class HelloInstanceFactory { //实例化工厂方法 public IHello newInstance(String message){ return new HelloImpl(message); } }
2:配置文件:
<?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-3.0.xsd"> <!-- 使用实例化工厂实例化bean,使用此种方法不能指定class属性,此刻必须使用factory-bean属性来指定工厂bean,同样可以使用参数 --> <!-- 实例化工厂bean初始化 --> <bean id="factoryBean" class="com.yiyou.spring.HelloInstanceFactory"></bean> <bean id="bean" factory-bean="factoryBean" factory-method="newInstance"> <constructor-arg index="0" value="实例化工厂方法初始化bean"></constructor-arg> </bean> </beans>
对静态工厂实例化和实例化工厂实例化来说,主要在配置文件中可以看出来。静态工厂中的配置文件只需要指定工厂类和工厂类的实例化方法。
而实例化工厂则需要实例化工厂类并且在实例化类中指定factory-bean
5:使用set方法注入。这个是最常见的一种,注入的对象必须存在set方法。
接口同上
实现
package com.yiyou.spring; public class HelloImpl implements IHello { private String message; public HelloImpl() { super(); // TODO Auto-generated constructor stub } public HelloImpl(String message) { super(); this.message = message; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } @Override public String sayHello() { return message; } }
其中可以去掉构造方法。
<?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-3.0.xsd"> <!-- 使用set注入,使用此种方式,注入对象必须存在set方法 --> <bean name="hello" class="com.yiyou.spring.HelloImpl"> <property name="message" value="这是使用set方法注入的"></property> </bean> </beans>
测试:
@Test public void test1() { BeanFactory beanFactory = new ClassPathXmlApplicationContext( "beans.xml"); IHello iHello = beanFactory.getBean("hello", IHello.class); iHello.sayHello(); log.info(iHello.sayHello());//这是使用set方法注入的 }
------------------------------------------------防广告线-----------------------------------------------------------------
发表评论
-
Spring验证小结和问题
2014-07-27 16:36 4999因为从云笔记中粘贴过来的,代码格式就没有了。格式稍好点的地 ... -
在spring中使用Ehcache
2014-06-18 16:07 1095前提: 使用环境:详细页面 依赖包: ... -
Spring MVC 3.0版本和3.1版本的一点小区别
2013-06-12 00:57 2784先上代码: 主要是控制器: @Controller ... -
在Maven下的springJpa多模块开发引起的问题
2013-02-21 22:33 3180最近的项目搭建中,出现了一个问题。 ... -
spring 事务二:注解springmvc+注解or声明式事务
2012-11-23 08:42 2315前面讲了两大类,四种spring事务的方式。这篇主要记录基于注 ... -
spring 事务一:非注解springmvc+注解or声明式事务
2012-11-22 15:47 2585前两天一人问我,在使用spring mvc (基于注解) 的时 ... -
在spring中使用mybatis
2012-11-14 21:59 3735今天在使用mybatis的时候,发现dao的实现竟然可以不需要 ... -
@Controller中的@RequestMapping参数
2012-11-07 09:56 3903转载自:http://blog.sina.com.cn/s/b ... -
三种连接池的配置
2012-09-28 10:00 1224用spring默认的连接池性能效率不高, 如果数据库重启 ... -
spring jdbc之query详细实例2
2012-09-27 16:45 1973首发地址: http://inmethetiger.iteye ... -
spring jdbc之query详细实例1
2012-09-27 16:15 3294首发:http://inmethetiger.iteye. ... -
spring jdbc之最简单的增删改查
2012-09-27 10:10 2140首发地址: http://inmethetiger.iteye ... -
Spring Aop(一)
2012-09-26 16:06 805这是一个简单的spring aop的例子。 一:定义目 ... -
spring mvc表单标签和@ModelAttribute
2012-09-20 21:05 9212首发地址:http://inmethetiger.iteye ... -
spring相关资料的URL(持续更新)
2012-09-20 13:34 1246首发地址http://inmethetiger.iteye.c ... -
Spring mvc注解之实现MultiActionController功能
2012-09-16 16:38 1712首发地址http://inmethetiger.iteye.c ... -
spring mvc 之注解版基础
2012-09-14 17:28 977首发地址:http://inmethetiger.iteye ... -
spring mvc 之MultiActionController和MethodNameResolver--附带实例
2012-09-14 17:23 2067首发地址:http://inmethetiger.iteye. ... -
Spring MVC的开发流程--附带实例
2012-09-12 18:05 2631首发地址: http://inmethetiger.i ...
相关推荐
在Spring框架中,Bean的实例化顺序是一个关键概念,它涉及到如何管理和协调多个Bean的创建与依赖关系。这里,我们主要探讨的是Spring如何通过其IoC(Inversion of Control)容器来实例化Bean,并理解其背后的逻辑。 ...
### Spring 实例化Bean的三种方式详解 ...理解并掌握这些实例化方式,对于高效地使用Spring框架进行企业级应用开发至关重要。通过合理选择和运用这些实例化策略,可以显著提高代码的可读性、可维护性和扩展性。
spring配置对象实例化后执行的方法,两种实现比对,通过InitializingBean接口,并实现arterPropertiesSet()方法;或者通过applicationContext.xml配置init-method属性
本文将详细介绍Spring中的三种主要的Bean实例化方式:XML配置、注解配置以及Java配置。 ### 1. XML配置 XML配置是Spring早期版本中最常见的Bean定义方式。在`spring_first`目录下的配置文件(如`beans.xml`)中,...
spring实例化对象
### Spring 延迟实例化的理解与应用 #### 一、Spring框架简介 Spring框架是一个开源的Java平台,它提供了一种全面的方式来构建应用程序。Spring的核心特性包括依赖注入(Dependency Injection, DI)和面向切面编程...
spring配置对象实例化后执行的方法,两种实现比对,通过DisposableBean接口,并实现destory()方法;或者通过applicationContext.xml配置destory-method属性
### Spring静态实例化详解 Spring框架作为Java领域中最为广泛使用的依赖注入(Dependency Injection, DI)容器之一,其强大的功能不仅体现在对复杂系统的管理上,还包括了许多高级特性,如静态实例化。本文将深入...
本篇将深入探讨Spring中的实例工厂(Instance Factory)的实例化方式,以及如何在实际应用中运用。 首先,我们需要理解什么是实例工厂。在Spring框架中,实例工厂是一种创建对象的方式,它允许我们自定义对象的创建...
本实例将探讨如何在Spring Boot中实例化DAO层,并使用IDEA(IntelliJ IDEA)进行开发。 首先,我们需要了解Spring Boot中的DAO层通常是如何构建的。在Spring框架中,DAO接口通常用于定义数据访问的方法,而其对应的...
3. **Spring实例化和配置** - **XML配置**: 传统上,Spring应用通过XML配置文件来定义bean及其依赖。 - **Annotation配置**: 使用注解(如@Service、@Repository、@Controller等)可以直接在类上声明bean和依赖。 ...
本篇文章将深入探讨Spring项目中Bean的实例化过程,包括三种主要的bean实例化方式:构造方法、静态工厂和实例工厂。 首先,让我们了解什么是Bean。在Spring中,Bean是应用程序中的业务对象,它们由Spring容器负责...
Spring框架是Java开发中的一个核心库,它提供了一个广泛的功能集,包括依赖注入、面向切面编程、数据访问、Web应用程序开发以及我们今天关注的主题——国际化(i18n)。国际化是一个过程,使得软件能够适应不同语言...
这个实例中的"mybatis整合spring实例(完整版)"文件可能包含了上述所有步骤的源代码,包括Spring的配置文件、MyBatis的配置文件、Mapper接口、XML文件以及相关的Java类。通过仔细阅读和理解这些代码,开发者可以...
Spring实例化bean过程解析及完整代码示例 在Spring框架中,bean的实例化是一个非常重要的过程。今天我们将详细介绍Spring实例化bean的过程,并提供一个完整的代码示例,以便更好地理解这个过程。 第一步:调用Bean...
Spring Bean 实例化实现过程解析 Spring Bean 实例化是 Spring 框架中一个非常重要的概念,它直接关系到 Bean 的生命周期和管理。在 Spring 框架中,Bean 的实例化是通过容器来管理的,容器会根据配置文件中的信息...
在Spring框架中,Bean的实例化是其核心功能之一,用于管理...理解并掌握这些实例化方式有助于更好地利用Spring框架管理应用程序的组件。在实际项目中,根据具体情况选择合适的方法,以实现最佳的可维护性和可扩展性。
实例化Spring Bean的方式多种多样,包括XML配置、注解配置以及Java配置等。而工厂方法是其中一种自定义实例化过程的方法。 1. **实例工厂方法** 实例工厂方法是通过一个具体的工厂类实例来创建Spring Bean。在...
本篇文章将详细探讨Spring实例化bean的三种主要方式,并提供相关的代码示例。这些方式包括使用类构造器、静态工厂方法以及实例化工厂方法。 1. **使用类构造器实现实例化** 这是最基础的实例化方式,通过指定`...
这里我们将详细介绍Spring实例化Java Bean的三种常见方式。 ### 1. 直接配置XML bean 这是最基础的方式,直接在`bean.xml`配置文件中声明一个bean。例如: ```xml ``` 这里的`id`是bean的唯一标识,`class`属性...