Spring-DI的三种实现方式以及优劣
从现在起,master
分支切换为Java EE
,80%的时间都花在Java EE
上面。其余时间再慢慢分配。我已经不再是Android
的人了。做了10个月Android
,除了NDK
比较弱,别的方面都还好。过完年回来再花点时间研究NDK
。谈起Spring
,能表达的只能是6666。在Java EE
领域的能力真的是一家独大。通常情况下,获取一个对象的实例是调用者创建被调用者的实例。而使用Spring
框架,调用者并不负责创建被调用者的实例。这部分工作由Spring
框架来完成,并且在对象需要使用的地方,由Spring自动注入。这就是Spring
的依赖注入和控制反转功能。而具体是如何使用的呢?有哪些使用方式?这些使用方式有哪些优劣之处。这篇文章就是记录此功能的。我也是学习者,不是老司机。不对的地方多多指证。
设值注入
设值注入的方式很简单,通过定义setter方法,Spring
调用无参构造方法,然后调用你所定义的setter函数。将值设置给程序所需要的地方。直接上代码。
定义model
:
package com.model;
public class User {
public String username;
public String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
定义dao
层接口:
package com.dao;
import com.model.User;
public interface UserDao {
public void save(User user);
}
实现dao
,只是一个简单的测试。:
package com.dao;
import com.model.User;
public class UserDaoImpl implements UserDao {
@Override
public void save(User user) {
System.out.println(user.getUsername()+" "+user.getPassword()+" write to mysql");
}
}
定义service
:
package com.service;
import com.model.User;
public interface UserService {
public void addUser(User user);
}
定义service
实现:
package com.service;
import com.dao.UserDao;
import com.model.User;
public class UserServiceImpl implements UserService{
private UserDao userDao;
@Override
public void addUser(User user) {
userDao.save(user);
}
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}
定义xml配置信息:
<?xml version="1.0" encoding="UTF-8"?>
<