其它框架可以不学,但这个spring 一定要看,构建企业级应用,一定用的到。
在这就不说原理了google 一下很多。什么ioc、aop、依赖注入、反射等等。
举个实际应用的例子:
假设Service 层想引用 Dao层,通常的作法是:在service 层中new 一个Dao层的实例,然后对dao层进行操作;
这样导致service 层与 Dao 层耦合性很强。
引入了Spring 后这种现象就有所改善了,我们可以在Spring 配置文件中配置两层之间的引用(依赖注入);
Dao层的类:
Service 层的类:
spring配置:
在这就不说原理了google 一下很多。什么ioc、aop、依赖注入、反射等等。
举个实际应用的例子:
假设Service 层想引用 Dao层,通常的作法是:在service 层中new 一个Dao层的实例,然后对dao层进行操作;
这样导致service 层与 Dao 层耦合性很强。
引入了Spring 后这种现象就有所改善了,我们可以在Spring 配置文件中配置两层之间的引用(依赖注入);
Dao层的类:
public class UserDaoImpl implements UserDao{
private name;
public void checkUser(){//do something}
}
Service 层的类:
public class UserServiceImpl implements UserService{
private UserDao userDao;//UserDao 是接口
public void setUserDao(UserDao userDao){//必须的setter
this.userDao=userDao;
}
/**
*业务逻辑的方法
*/
public void do(){
//这里直接就可以用userDao这个属性,不需要再new,这部分spring已经作了。
userDao.checkUser();//
}
}
spring配置:
/**事务管理,得到sessionFactory,略**/
<bean id="aaa" class="UserDaoImpl">//UserDaoImpl是接口UserDao 的实现类
<property name="sessionFactory">//
</property> /**在实际应用中Dao层交给Hibernate 管理了。**/
</bean>
<bean id="bbb" class="UserServiceImpl">
<property name="userDao">//userDao就是UserServiceImpl中的属性;根据set方法的依赖注入(也就是初始化)
<ref="aaa" />//关联到id为'aaa'的bean.
</property> //
</bean>