先写一个User接口名为UserDao
简单写一个方法
package com.cong.dao;
public interface UserDao {
public void save();
}
为它写一个实现类, 简单输出一句话
package com.cong.dao.Impl;
import com.cong.dao.UserDao;
public class UserDaoImpl implements UserDao {
@Override
public void save() {
System.out.println("saveRing,,,,,,,,,,,");
}
}
关键一步 创建一个spring的配置文件 叫applicationContext.xml
<?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="userDao" class="com.cong.dao.Impl.UserDaoImpl">
</bean>
</beans>
创建一个service包 去写一个实现类
package com.cong.service;
import com.cong.dao.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class UserService {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = context.getBean("userDao", UserDao.class);
userDao.save();
}
}
结果
相关API解释
<bean id="userDao" class="com.cong.dao.Impl.UserDaoImpl">
</bean>
id 为唯一标识 不可重复 class是包的全限定名 也就是把一个类装载到spring容器中去托管
<bean id="userDao" class="com.cong.dao.Impl.UserDaoImpl" scope="singleton">
</bean>
scope的
singleton属性 为bean创建一个对象
scope="prototype"为bean创建多个对象
测试singleton
测试 prototype
这样配置的bean 默认情况下是执行无参构造 把prototype干掉 实际也不用
测试是否走了无参构造 这个类中的无参构造简单输出一句话 测试的时候 如果输出了这就话 就证明执行了无参构造
package com.cong.dao.Impl;
import com.cong.dao.UserDao;
public class UserDaoImpl implements UserDao {
@Override
public void save() {
System.out.println("saveRing,,,,,,,,,,,");
}
public UserDaoImpl() {
System.out.println("UserDaoImpl无参构造Ruing,,,,,,,");
}
}
测试
@Test
public void test(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao1 = context.getBean("userDao", UserDao.class);
System.out.println(userDao1);
}
结果
bean的生命周期
自己写一个初始化和销毁的方法
初始化 和销毁
测试
销毁方法没有执行是因为 还有来得及打印 对象就销毁了 如果在Tomcat中就可以了