Java Springの依存注入
7319 ワード
1,javaプロジェクトSpringDemoの作成
一、springを使用しない依存注入方式
1.Clientクラスの作成
2.daoインタフェースと実装クラスを作成し、
UserDao
UserDaoImpl
3.管理managerインタフェースと実装クラスの作成
ManagerDao
ManagerDaoImpl
2,まずspringのjarパッケージをダウンロードして、dom 4 j-1.6.1.jar、commons-logging-1.1.3.jarは予備を導入します
二、springでClientを書き換え、その他のクラスは変わらない
Springプロファイル、srcデフォルトフォルダの下に置く、
1.applicationContext.xml
2.ログファイルlog 4 j.properties
ps:setメソッドに置き換えるアプリケーションContext.xml
別のUserDaoImpl 2インプリメンテーションの作成
ManagerDaoImplを書き換え、getメソッドとsetメソッドを追加
一、springを使用しない依存注入方式
1.Clientクラスの作成
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.xiaoma.bub.dao.UserDaoImpl;
import com.xiaoma.bub.manage.ManagerDaoImpl;
/**
* IoC ( ) , 。 DI ,
* , 。 , , api,
*
* @author Sugar
*
*/
public class Client {
public static void main(String[] args) {
//
UserDaoImpl userDaoImpl = new UserDaoImpl();
ManagerDaoImpl managerDaoImpl = new ManagerDaoImpl(userDaoImpl);
managerDaoImpl.add("zhangsan", "123");
// BeanFactory factory = new ClassPathXmlApplicationContext(
// "applicationContext.xml");
// ManagerDaoImpl userManager = (ManagerDaoImpl) factory
// .getBean("userManager");
//
// userManager.add("lisi", "456");
}
}
2.daoインタフェースと実装クラスを作成し、
UserDao
public interface UserDao {
public void addUser(String name,String age);
}
UserDaoImpl
public class UserDaoImpl implements UserDao {
@Override
public void addUser(String name, String age) {
System.out.println("userdao:"+name+"..."+age);
}
}
3.管理managerインタフェースと実装クラスの作成
ManagerDao
public interface ManagerDao {
public void add(String name,String age);
}
ManagerDaoImpl
import com.xiaoma.bub.dao.UserDao;
public class ManagerDaoImpl implements ManagerDao {
// , , IoC
private UserDao userDao;
public ManagerDaoImpl(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void add(String name, String age) {
// UserDaoImpl userDaoImpl = new UserDaoImpl();
userDao.addUser(name, age);
}
}
2,まずspringのjarパッケージをダウンロードして、dom 4 j-1.6.1.jar、commons-logging-1.1.3.jarは予備を導入します
二、springでClientを書き換え、その他のクラスは変わらない
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.xiaoma.bub.manage.ManagerDaoImpl;
/**
* IoC ( ) , 。 DI ,
* , 。 , , api,
*
* @author Sugar
*
*/
public class Client {
public static void main(String[] args) {
//
// UserDaoImpl userDaoImpl = new UserDaoImpl();
// ManagerDaoImpl managerDaoImpl = new ManagerDaoImpl(userDaoImpl);
// managerDaoImpl.add("zhangsan", "123");
BeanFactory factory = new ClassPathXmlApplicationContext(
"applicationContext.xml");
ManagerDaoImpl userManager = (ManagerDaoImpl) factory
.getBean("userManager");
userManager.add("lisi", "456");
}
}
Springプロファイル、srcデフォルトフォルダの下に置く、
1.applicationContext.xml
2.ログファイルlog 4 j.properties
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
ps:setメソッドに置き換えるアプリケーションContext.xml
別のUserDaoImpl 2インプリメンテーションの作成
public class UserDaoImpl2 implements UserDao {
@Override
public void addUser(String name, String age) {
System.out.println("UserDaoImpl2="+name+"..."+age);
}
}
ManagerDaoImplを書き換え、getメソッドとsetメソッドを追加
import com.xiaoma.bub.dao.UserDao;
public class ManagerDaoImpl implements ManagerDao {
// , , IoC
private UserDao userDao;
// .
//
// public ManagerDaoImpl(UserDao userDao) {
// this.userDao = userDao;
// }
//set ,
@Override
public void add(String name, String age) {
// UserDaoImpl userDaoImpl = new UserDaoImpl();
userDao.addUser(name, age);
}
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}