Spring创建复杂对象

Spring创建复杂对象

何为复杂对象?

在java中,不能通过new关键字创建的对象,都称为复杂对象,如抽象类(abstract,例如Calendar日期类)、接口(interface,JDBC中的Connection连接类)。

复杂对象(如Calendar日期类)的普通创建方式:

Calendar calendar = Calendar.getInstance();

System.out.println(newSimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()));

在spring工厂中,复杂对象的创建方式:

1.类 implements FactoryBean<Calendar>接口

//创建复杂对象的方法,并将创建对象返回
@Override
public Calendar getObject() throws Exception {
return Calendar.getInstance();
}
//创建复杂对象的类型
@Override
public Class<?> getObjectType() {
return Calendar.class;
}
//复杂对象在工厂中创建的次数,true表示单例,false表示多例
@Override
public boolean isSingleton() {
return true;
}
}
//spring创建Connection
public class ConnectionFactoryBean implements FactoryBean<Connection> {
@Override
public Connection getObject() throws Exception {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
return DriverManager.getConnection("jdbc:mysql://localhost:3306/express","root", "root");
}
@Override
public Class<?> getObjectType() {
return Connection.class;
}
@Override
public boolean isSingleton() {
return false;
}
}

2. 配置

<!-- 配置复杂对象的创建 -->
<bean id="calendar" class="factoryBean.CalendarFactoryBean"></bean>
<bean id="connection" class="factoryBean.ConnectionFactoryBean"></bean>

原文地址:https://www.cnblogs.com/lkldeblog/p/10685833.html

时间: 2024-11-03 14:50:55

Spring创建复杂对象的相关文章

spring创建Bean对象的控制

1.spring创建Bean对象的控制 a.控制对象创建方式(使用范围),在<bean>元素中使用scope属性控制,scope可以支持singleton或prototype,默认值是singleton <bean scope= "singleton"> 该组件在spring容器里只有一个bean对象.每次取出的bean都是同一个bean,相当于单例模式 <bean scope = "prototype">该组件每次使用getBe

spring 之脱离容器管理创建的对象进行依赖注入

我们有时候也会遇到一些脱离spring容器创建的类实例,如何把spring容器内的对象注入到这些类实例内呢. 我们可以用org.springframework.beans.factory.config.AutowireCapableBeanFactory.createBean(Class<?> beanClass, int autowireMode, boolean dependencyCheck) 来创建这个脱离容器的对象,该方法返回脱离容器创建的对象,只不过对象的创建交给spring了.

spring中创建bean对象的三种方式以及作用范围

时间:2020/02/02 一.在spring的xml配置文件中创建bean对象的三种方式: 1.使用默认构造函数创建.在spring的配置文件中使用bean标签,配以id和class属性之后,且没有其他属性和标签时采用的就是默认构造函数创建bean对象,此时如果类中没有默认构造函数函数,则对象无法创建. <bean id="one" class="sdnu.machi.one"></bean> 如果one.class中没有默认构造函数则会报

半夜思考之查漏补缺, 在 Spring中, 所有的bean都是Spring创建的吗?

Spring 是一个 bean 容器, 负责 bean的创建, 那么所有的 bean对象都是 Spring 容器创建的吗? 答案是否定的. 但是乍一想, 好像所有的对象都是 Spring 容器负责创建并注入的, 今天在看书的时候, 看到了创建 bean 的三种方式, 分别是 : 使用构造器创建 bean实例 使用静态工厂方法创建 bean 调用实例工厂方法创建 bean 第一个是 Spring 使用反射创建 bean 对象, class属性指定的是 Bean实现类 ; 第二个的class属性指定

atitit.spring hibernate的事务机制 spring不能保存对象的解决

atitit.spring hibernate的事务机制 spring不能保存对象的解决 sessionFactory.openSession() 不能. . log黑头马sql语言.. sessionFactory.getCurrentSession().update(user); 中间走ok兰..log黑头也有累.. 在Spring中使用Hibernate.假设我们配置了TransactionManager.那么我们就不应该调用SessionFactory的openSession()来获得S

Spring 创建bean的时机

默认在启动spring容器的时候,spring容器配置文件中的类就已经创建完成对象了        在<bean>中添加属性lazy-init,默认值为false.    true  在context.getBean的时候才要创建对象                      *  优点                                    如果该bean中有大数据存在,则什么时候context.getBean,什么时候创建对象                         

使用Spring创建满足RESTful规范的Web Service

原文:http://spring.io/guides/gs/rest-service/ 这个指南讨论如何使用Spring的RESTful web service来创建一个"hello world"程序. 示例功能简介 使用以下方式的HTTP GET请求来访问这个Service: http://localhost:8080/greeting 使用下面greeting的JSON描述来响应这个请求: {"id":1,"content":"He

Spring 创建Bean的6种方式

前言 本文讲解了在Spring 应用中创建Bean的多种方式,包括自动创建,以及手动创建注入方式,实际开发中可以根据业务场景选择合适的方案. 方式1: 使用Spring XML方式配置,该方式用于在纯Spring 应用中,适用于简单的小应用,当应用变得复杂,将会导致Bean管理很麻烦 <bean id="xxxx" class="xxxx.xxxx"/> 方式2: 使用@Component,@Service,@Controler,@Repository注

Spring中bean对象的生命周期

Spring提供了一些接口来提供一些方法,体现了bean对象在Spring容器中的生命周期 具体的过程可以体现为: 读取权限类名->构建一个类对象->用这个类对象通过无参构造器newInstance()构建对象 ↓ 调用set方法注入依赖 ↓ 如果这个Bean已经实现了BeanNameAware接口 调用它实现的setBeanName(String name)方法 此处传递的就是Spring配置文件中Bean的name值 ↓ 如果这个Bean已经实现了BeanFactoryAware接口 容器