SpringBean的配置详解
- Bean的实例化配置
- Spring的实例化方法主要由以下两种
- 构造方法实例化:底层通过构造方法对bean进行实例化
- 构造方法实例化bean又分为无参方法实例化和有参方法实例化,在Spring中配置的<bean>几乎都是无参构造该方式,在此处不赘述。下面讲解有参构造方法实例化Bean
- 在配置文件中为有参构造方法中的参数指定值
-
<?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.xsd"> <bean id="userService" class="com.example.Service.Impl.UserServiceImpl"> <constructor-arg name="name" value="hahaha"></constructor-arg> <property name="userDAO" ref="userDAO"></property> </bean> <bean id="userDAO" class="com.example.DAO.UserDAO"></bean> </beans>
-
package com.example.Service.Impl; import com.example.DAO.UserDAO; import com.example.Service.UserService; public class UserServiceImpl implements UserService { // todo 无参构造方法 public UserServiceImpl() { System.out.println("无参构造方法"); } // todo 有参构造方法 public UserServiceImpl(String name) { System.out.println("有参构造方法"); System.out.println(name); } private UserDAO userDAO; public void setUserDAO(UserDAO userDAO) { } }
-
测试类运行结果
-
package com.example.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestApplicationContext { public static void main(String[] args) { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("application.xml"); Object userService1 = context.getBean("userService"); System.out.println(userService1); context.close(); } }
- 构造方法实例化bean又分为无参方法实例化和有参方法实例化,在Spring中配置的<bean>几乎都是无参构造该方式,在此处不赘述。下面讲解有参构造方法实例化Bean
- 工厂方法实例化:底层通过自定义的工厂方法对Bean进行实例化
- 静态工厂方法实例化Bean
- 自定义一个工厂,工厂内部自定义静态方法,在状态方法内部产生一个bean,最后bean交给Spring容器管理
- 实例工厂方法实例化Bean
- 实现FactoryBean规范延迟实例化Bean
- 静态工厂方法实例化Bean
- 构造方法实例化:底层通过构造方法对bean进行实例化
- Spring的实例化方法主要由以下两种
P18