近日回头看看框架,一些东西模糊了, 还请清楚的朋友开示:1. spring的核心是beanfactory, 它主要是通过.xml文件的配置来创建对象,协调对象之间的关系等, 
          我的问题:“假如一个对象内需要创建10其它对象(有的属于类的成员对象,有的属于方法对象),那是否这10个对象都最好配置在.xml中,如果不是,那哪些需要配置,哪些不要配置? 这其中有什么规律?”
   比如下面这个类:
  public class UserDAO {
private DataSource dataSource; public DataSource getDataSource() {
return dataSource;
} public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
} public boolean isValid(String username, String password) {
List userList = new ArrayList();   
                    
        }
    }2. spring操作数据库时,有回调函数的感念,它到底如何理解才更贴切(最好系统点哈),比如下面这个方法
     public boolean isValid(String username, String password) {
List userList = new ArrayList();
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
userList = jdbcTemplate.query("SELECT * FROM user WHERE username='"
+ username + "' and password='" + password + "'",
new RowMapper() {
public Object mapRow(ResultSet rs, int rowNum)
throws SQLException {
User user = new User();
user.setId(rs.getString("ID"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
user.setEmail(rs.getString("email"));
return user;
}
});
if (userList.size() > 0) {
return true;
} else {
return false;
}
}以上,请高人解答,先谢过

解决方案 »

  1.   

    spring管理的都是自己创建的业务类或要特殊使用的javaJDK类,管理什么类要从解耦和复用方面考虑。例如在一个Dao类中,数据源可以属性被spring装配(写在xml中),应为在多个方法中都要使用(复用性),同时一个工程可以配置多个数据源(解耦性)。其他类如list等,都是特定逻辑要使用的类,就没有必要配置。
    回调函数是指他可以在处理业务时使用你定义的方法。
    一般指我们知道一个方法的执行是一个完整的,不可以改变的过程,回调是指在这个过程中可以按新定义的方式处理数据。
    就查询举例,如果你不指定回调,他会给你返回不同的数据结构。
      

  2.   

    spring的ioc主要是在解耦合方面做出了贡献,而且spring是建立在面向接口的设计思想上的,所以你在spring中都是使用面向接口,在spring注入的对象是接口的实际实现,万一需求改变了,我们只需要改变xml文件就可以实现,而减少了代码的修改。
    所以,如果不怎么需要修改代码,直接new跟Ioc的作用差不多的。
      

  3.   

    谢谢楼上的朋友们, spring说的领会了,但回调的还是懵懵懂懂,汗一个,请再次赐教,能否就题中的代码详细分析一下,?
      

  4.   

    像你写的那样,如果不写回调,返回的是一个完整的user对象,写了会返回只有两个自动段的user对象。
    当然,有些回调函数是必须写的,例如Ajax的回调函数。具体书面的解释要搜一下了。
      

  5.   

    我的问题:“假如一个对象内需要创建10其它对象(有的属于类的成员对象,有的属于方法对象),那是否这10个对象都最好配置在.xml中,如果不是,那哪些需要配置,哪些不要配置? 这其中有什么规律?”配置在XML是死的,你在SRC里自己赋值是活的