1)无参构造器注册bean
实体类
public class User {
private String username;
private String password;
public User() {
System.out.println("User类的无参构造方法User()执行了");
}
public User(String username, String password) {
System.out.println("User类的有参构造方法User()执行了");
this.username = username;
this.password = password;
}
}
配置文件
<?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="user" class="entity.User"></bean>
</beans>
测试类
public class TestSpring {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = applicationContext.getBean("user", User.class);
System.out.println(user);
}
}
输出结果
User类的无参构造方法User()执行了
entity.User@29774679
2)静态工厂方法注册bean
实体类
public class User {
private String username;
private String password;
public User() {
System.out.println("User类的无参构造方法User()执行了");
}
public User(String username, String password) {
System.out.println("User类的有参构造方法User()执行了");
this.username = username;
this.password = password;
}
}
工厂类
public class UserFactory {
private static User user;
static {
user = new User();
}
public static User getInstance() {
return user;
}
}
配置文件
<?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">
<?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">
<!-- factory-method:用于指定一个静态工厂方法,Spring容器会调用这个静态方法创建个对象。-->
<bean id="user" class="entity.UserFactory" factory-method="getInstance"></bean>
</beans>
</beans>
测试类
public class TestSpring {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = applicationContext.getBean("user", User.class);
System.out.println(user);
}
}
输出结果
User类的无参构造方法User()执行了
entity.User@5622fdf
3)实例工厂方法注册bean
实体类
java.util.Calendar
public final Date getTime()
配置文件
<?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 -->
<bean id="calendar" class="java.util.Calendar" factory-method="getInstance"></bean>
<!--
实例工厂方法注册bean:
factory-bean:用于指定一个bean的id
factory-method:用于指定一个方法
-->
<bean id="time" factory-bean="calendar" factory-method="getTime"></bean>
</beans>
测试类
@Test
public void test03() {
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
Date time = ac.getBean("time",Date.class);
System.out.println(time);
}
测试结果
Mon Jan 21 00:28:07 CST 2019