Controller Service Dao 关系

欺骗性的伪装 2016-10-14 05:05:14
这是一个平台的底层代码.我基础差,不明白其中的关系和为什么.
希望那位大神帮我屡屡,让我理解理解,
类和接口,抽象类,类泛型.我都不明白!
谢谢大神了!
也可以加我的QQ:95546772一起讨论,
或者您在北京我可以当面请教您!

public class UserController extends WAFController<UserService> {

}

UserController.java


public class UserService extends WAFService<UserDAO> {

}

UserService.java

public class UserDAO extends DAOSupport {

}

UserDAO.java

public abstract class WAFController<T extends WAFService<?>> extends BaseController<T> {

}

WAFController.java

public abstract class WAFService<T extends DAOSupport> extends BaseService<T> {

}

WAFService.java

public abstract class BaseController<T extends BaseService<?>> {

}

BaseController.java

public abstract class BaseService<T extends DAOSupport> {

}

BaseService.java

public class DAOSupport implements DAO {

}

DAOSupport.java

public interface DAO {

}

DAO.java
...全文
661 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_32100781 2016-10-20
  • 打赏
  • 举报
回复
北京我要来了!几天后到。 从这些java代码看, 确实涉及:类class 和接口interface,抽象类abstract class ,泛型generics 那首先要了解类class 和接口interface,抽象类abstract class 等的 引用数据类型的特征: 共同点: 都可以有属性(或者称为成员变量)和方法(或者称为函数,成员函数) 假如都有属性和方法,那么: --->接口的属性都是常量(final variable ),方法都是抽象方法(abstract methods) --->非抽象类(普通类)不限定属性和方法 --->一般地,抽象类至少有1个抽象方法(abstract method)(虽然说抽象类不一定必须含有抽象方法,如果没有抽象方法和普通方法有何区别!这一点就不用太较真了) 。 什么是抽象方法(abstract method)? 只有包含关键字abstract 形如abstract methodName()。。。的声明,没有实现(方法体)的方法, 抽象方法就是为了通过抽象类继承(extends)或者接口实现(implements)来重新定义方法体(即重写,覆盖override )而存在的。 以下内容供参考,如果不太明白,就当看看吧 从这个平台的底层代码使用泛型来看,这个和spring4.0的泛型依赖注入很相似,如果我猜的不错,此平台可能用到了Spring4.0+ 1.MVC模式就不在这里说明,使用mvc的原因是mvc使得代码分离,每个模块间的耦合性(Coupling)更小,代码独立度更高,方便代码的日常维护 2.按照调用关系: :Controller调用Service,Service调用Dao(或者Mapper,使用mybatis时),Dao调用数据持久化层。 如果是调用,使用了框架,一般(没有源码)xml配置bean或者开启注解注入。 所谓注入,通俗理解,就是你不需要再手工new 一个对象,而是添加注解的方式由框架自动创建bean的实例(而bean则在配置文件中配置或者开启注解扫描配置,注解配置bean)。 注入的栗子, 如private UserDAO userDAO=new UserDAOImpl()------使用注解@...后,将变为上方添加注解的形式: @Autowired(或者@Resource...) private UserDAO userDAO; 也就是说, @Autowired(或者@Resource...) private UserDAO userDAO; 的作用类似于private UserDAO userDAO=new UserDAOImpl(); 如果要注入,具体就是在要注入的类(实现类xxxDaoImpl,实现类名字不一定是xxxDaoImpl, ,各有各的起法,我就按照标准来),每一层使用的注解不一样(如果按照规范): DaoImpl======@Repository(数据访问层) (上面的注入栗子,则需要在类声明上方实现类添加bean的注解配置: @Repository pubilc class UserDAOImpl.....(){。。。。} ) service=====@Service(业务层) controller========@Controller 举个栗子,就拿平台的代码来说 DAOSupport implements DAO表明DAOSupport是一个Dao接口的实现类,重写DAO接口的方法.,如果类声明上方有注解,那可能是@Repository。。。 。。。。 额,废话说多。。。。。
nikyotensai 2016-10-20
  • 打赏
  • 举报
回复
引用 4 楼 qq_32100781 的回复:
[quote=引用 3 楼 qq_26508409 的回复:] [quote=引用 2 楼 qq_32100781 的回复:] 北京我要来了!几天后到。 从这些java代码看, 确实涉及:类class 和接口interface,抽象类abstract class ,泛型generics 那首先要了解类class 和接口interface,抽象类abstract class 等的 引用数据类型的特征: 共同点: 都可以有属性(或者称为成员变量)和方法(或者称为函数,成员函数) 假如都有属性和方法,那么: --->接口的属性都是常量(final variable ),方法都是抽象方法(abstract methods) --->非抽象类(普通类)不限定属性和方法 --->一般地,抽象类至少有1个抽象方法(abstract method)(虽然说抽象类不一定必须含有抽象方法,如果没有抽象方法和普通方法有何区别!这一点就不用太较真了) 。 什么是抽象方法(abstract method)? 只有包含关键字abstract 形如abstract methodName()。。。的声明,没有实现(方法体)的方法, 抽象方法就是为了通过抽象类继承(extends)或者接口实现(implements)来重新定义方法体(即重写,覆盖override )而存在的。 以下内容供参考,如果不太明白,就当看看吧 从这个平台的底层代码使用泛型来看,这个和spring4.0的泛型依赖注入很相似,如果我猜的不错,此平台可能用到了Spring4.0+ 1.MVC模式就不在这里说明,使用mvc的原因是mvc使得代码分离,每个模块间的耦合性(Coupling)更小,代码独立度更高,方便代码的日常维护 2.按照调用关系: :Controller调用Service,Service调用Dao(或者Mapper,使用mybatis时),Dao调用数据持久化层。 如果是调用,使用了框架,一般(没有源码)xml配置bean或者开启注解注入。 所谓注入,通俗理解,就是你不需要再手工new 一个对象,而是添加注解的方式由框架自动创建bean的实例(而bean则在配置文件中配置或者开启注解扫描配置,注解配置bean)。 注入的栗子, 如private UserDAO userDAO=new UserDAOImpl()------使用注解@...后,将变为上方添加注解的形式: @Autowired(或者@Resource...) private UserDAO userDAO; 也就是说, @Autowired(或者@Resource...) private UserDAO userDAO; 的作用类似于private UserDAO userDAO=new UserDAOImpl(); 如果要注入,具体就是在要注入的类(实现类xxxDaoImpl,实现类名字不一定是xxxDaoImpl, ,各有各的起法,我就按照标准来),每一层使用的注解不一样(如果按照规范): DaoImpl======@Repository(数据访问层) (上面的注入栗子,则需要在类声明上方实现类添加bean的注解配置: @Repository pubilc class UserDAOImpl.....(){。。。。} ) service=====@Service(业务层) controller========@Controller 举个栗子,就拿平台的代码来说 DAOSupport implements DAO表明DAOSupport是一个Dao接口的实现类,重写DAO接口的方法.,如果类声明上方有注解,那可能是@Repository。。。 。。。。 额,废话说多。。。。。
你确定你不会逃走[/quote] 话说我为什么要逃走?!我到北京工作。。 [/quote] 逃离北上广,没听过?
qq_32100781 2016-10-20
  • 打赏
  • 举报
回复
引用 3 楼 qq_26508409 的回复:
[quote=引用 2 楼 qq_32100781 的回复:] 北京我要来了!几天后到。 从这些java代码看, 确实涉及:类class 和接口interface,抽象类abstract class ,泛型generics 那首先要了解类class 和接口interface,抽象类abstract class 等的 引用数据类型的特征: 共同点: 都可以有属性(或者称为成员变量)和方法(或者称为函数,成员函数) 假如都有属性和方法,那么: --->接口的属性都是常量(final variable ),方法都是抽象方法(abstract methods) --->非抽象类(普通类)不限定属性和方法 --->一般地,抽象类至少有1个抽象方法(abstract method)(虽然说抽象类不一定必须含有抽象方法,如果没有抽象方法和普通方法有何区别!这一点就不用太较真了) 。 什么是抽象方法(abstract method)? 只有包含关键字abstract 形如abstract methodName()。。。的声明,没有实现(方法体)的方法, 抽象方法就是为了通过抽象类继承(extends)或者接口实现(implements)来重新定义方法体(即重写,覆盖override )而存在的。 以下内容供参考,如果不太明白,就当看看吧 从这个平台的底层代码使用泛型来看,这个和spring4.0的泛型依赖注入很相似,如果我猜的不错,此平台可能用到了Spring4.0+ 1.MVC模式就不在这里说明,使用mvc的原因是mvc使得代码分离,每个模块间的耦合性(Coupling)更小,代码独立度更高,方便代码的日常维护 2.按照调用关系: :Controller调用Service,Service调用Dao(或者Mapper,使用mybatis时),Dao调用数据持久化层。 如果是调用,使用了框架,一般(没有源码)xml配置bean或者开启注解注入。 所谓注入,通俗理解,就是你不需要再手工new 一个对象,而是添加注解的方式由框架自动创建bean的实例(而bean则在配置文件中配置或者开启注解扫描配置,注解配置bean)。 注入的栗子, 如private UserDAO userDAO=new UserDAOImpl()------使用注解@...后,将变为上方添加注解的形式: @Autowired(或者@Resource...) private UserDAO userDAO; 也就是说, @Autowired(或者@Resource...) private UserDAO userDAO; 的作用类似于private UserDAO userDAO=new UserDAOImpl(); 如果要注入,具体就是在要注入的类(实现类xxxDaoImpl,实现类名字不一定是xxxDaoImpl, ,各有各的起法,我就按照标准来),每一层使用的注解不一样(如果按照规范): DaoImpl======@Repository(数据访问层) (上面的注入栗子,则需要在类声明上方实现类添加bean的注解配置: @Repository pubilc class UserDAOImpl.....(){。。。。} ) service=====@Service(业务层) controller========@Controller 举个栗子,就拿平台的代码来说 DAOSupport implements DAO表明DAOSupport是一个Dao接口的实现类,重写DAO接口的方法.,如果类声明上方有注解,那可能是@Repository。。。 。。。。 额,废话说多。。。。。
你确定你不会逃走[/quote] 话说我为什么要逃走?!我到北京工作。。
nikyotensai 2016-10-20
  • 打赏
  • 举报
回复
引用 2 楼 qq_32100781 的回复:
北京我要来了!几天后到。 从这些java代码看, 确实涉及:类class 和接口interface,抽象类abstract class ,泛型generics 那首先要了解类class 和接口interface,抽象类abstract class 等的 引用数据类型的特征: 共同点: 都可以有属性(或者称为成员变量)和方法(或者称为函数,成员函数) 假如都有属性和方法,那么: --->接口的属性都是常量(final variable ),方法都是抽象方法(abstract methods) --->非抽象类(普通类)不限定属性和方法 --->一般地,抽象类至少有1个抽象方法(abstract method)(虽然说抽象类不一定必须含有抽象方法,如果没有抽象方法和普通方法有何区别!这一点就不用太较真了) 。 什么是抽象方法(abstract method)? 只有包含关键字abstract 形如abstract methodName()。。。的声明,没有实现(方法体)的方法, 抽象方法就是为了通过抽象类继承(extends)或者接口实现(implements)来重新定义方法体(即重写,覆盖override )而存在的。 以下内容供参考,如果不太明白,就当看看吧 从这个平台的底层代码使用泛型来看,这个和spring4.0的泛型依赖注入很相似,如果我猜的不错,此平台可能用到了Spring4.0+ 1.MVC模式就不在这里说明,使用mvc的原因是mvc使得代码分离,每个模块间的耦合性(Coupling)更小,代码独立度更高,方便代码的日常维护 2.按照调用关系: :Controller调用Service,Service调用Dao(或者Mapper,使用mybatis时),Dao调用数据持久化层。 如果是调用,使用了框架,一般(没有源码)xml配置bean或者开启注解注入。 所谓注入,通俗理解,就是你不需要再手工new 一个对象,而是添加注解的方式由框架自动创建bean的实例(而bean则在配置文件中配置或者开启注解扫描配置,注解配置bean)。 注入的栗子, 如private UserDAO userDAO=new UserDAOImpl()------使用注解@...后,将变为上方添加注解的形式: @Autowired(或者@Resource...) private UserDAO userDAO; 也就是说, @Autowired(或者@Resource...) private UserDAO userDAO; 的作用类似于private UserDAO userDAO=new UserDAOImpl(); 如果要注入,具体就是在要注入的类(实现类xxxDaoImpl,实现类名字不一定是xxxDaoImpl, ,各有各的起法,我就按照标准来),每一层使用的注解不一样(如果按照规范): DaoImpl======@Repository(数据访问层) (上面的注入栗子,则需要在类声明上方实现类添加bean的注解配置: @Repository pubilc class UserDAOImpl.....(){。。。。} ) service=====@Service(业务层) controller========@Controller 举个栗子,就拿平台的代码来说 DAOSupport implements DAO表明DAOSupport是一个Dao接口的实现类,重写DAO接口的方法.,如果类声明上方有注解,那可能是@Repository。。。 。。。。 额,废话说多。。。。。
你确定你不会逃走
scoredhigh 2016-10-17
  • 打赏
  • 举报
回复 1
其实就是一个模块分层的概念,MVC框架的实现,很多公司都是这么做的。 Controller可以看作一个连接器,连接视图与逻辑处理的模块。 Service就是逻辑处理模块。 Dao就是数据访问层。 通常用户在浏览器端发出请求,经由监听器或拦截器交由Controller来处理,Controller调用Service,Service调用Dao,获取数据以后响应到客户端。 从代码层面简单的理解的话就是:Controller调用Service,Service调用Dao,Dao调用数据持久化层,比如mybatis或是hibernate等

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧