weibo项目分析与解释

weibo项目分析

一. 所需要的注解:

Hibernate 的注解如:@Entity 不需要写入配置文件扫描

Spring 的注解如:@Repository @Service @Controller @Component 需要写进配置文件扫描

@RemoteProxy远程方法(传到前端)

@Autwired给指定的字段或方法注入所需的外部资源

@RequestMapping实现controller接口

@component定时分析

@enableScheduling

@transational写操作

@Transational不需要事务

二.项目的各部分组成

这里写图片描述

三.分层: Dao Service

数据库->Dao->Service->前端

bean 对应数据库中表的实例化类
controller 控制层代码 处理前端相应请求
component 定时监控业务(做实时分析
dao 对数据库中每个表的具体操作类(面向接口编程)
domain 数据库中表对应的持久化类
service 具体的业务逻辑代码 (面向接口编程)
common 存放公用类库

common 中将所需要的dao层实例化对象分别写出来,再在XXXManager中继承使用
注解@Autowired 自动生成get/set方法

四.具体的操作解释:

Bean 又称 VO 数据库实现类

这个包里面的类是面向 Service 层的,产生的对象是对前端返回信息用的。 类中的属性应当和domain 中类的属性一样。

代码分析:

@DataTransferObject  //标记这是一个数据交换类 对前端进行返回的
public class WeiboBean {

Controller层

这一层具体写与前端api操作的代码 如localhost:8080/weibo就会跳转到Controller层对饮的api/weibo 标记的方法

这一层的配置文件扫描需要写在dispatcher-servlet.xml

代码分析:

@Controller //标记这是一个 Controller 层
@RequestMapping("api/weibo")
public class WeiboController extends ControllerTemplate {

Component层

写需要定时操作的方法 如实时分析

这一层的配置文件扫描需要写在applicationContext.xml

代码分析:

@Component  //声明这是一个component层
@EnableScheduling  //开启定时操作
public class WeiboComponent {

    @Scheduled(fixedRate = 1000 * 60 * 60)  //设置定时操作
    @Transactional      //标记它是一个事务
    public void checkHotWeibo() {

    }

Dao 对数据的操作

一般一张表对应一个DaoHibernate操作类
applicationContext.xml配置文件中设置扫描语句

<context:component-scan base-package="edu.nefu.weibo.component"/>

类中部分代码分析:

@Repository //声明这是一个仓库 对数据库进行操作
public class WeiboDaoHibernate extends BaseHibernateDaoSupport<Weibo> implements WeiboDao {
        public WeiboDaoHibernate() {
        super();
        setClass(Weibo.class);
    }
    /*
        标准dao层代码格式 extends 对操作类进行继承,采用泛型
        implements 是对WeiboDao 接口的实现类
    */

    //后面写的是具体对数据库操作的事务代码

domain 又称 PO 数据库持久化类

这一个包里面的类都是对应数据库里面每张表中每个字段的信息,操作数据库就是操作这个类产生的对象。

正常来说数据库中有多少个类就要有多少个持久化对象,并且在之间加入对应的关系

代码分析:

@Entity //声明这是一个持久化类 不需要配置文件扫描
@Table(name = "weibo_admin")  //对应在数据库中哪张表
public class Admin implements Serializable {

    @Id     //哪个字段是主键就标记在哪个字段上
    @Column(name = "admin_username")  // 
    private String username;

    @ManyToOne  //标记是个多对一关系 
    @JoinColumn(nullable = false, name = "weibo_userid") //如果是有关系的话 需要从别的表加入一个新的字段
    private User user;

Service 层

写具体业务代码的地方 传入的数据是从前端传进来的基本数据类型或者VO对象 返回数据一定是VO对象

代码分析:

@Service    //标记这是一个Service 层 并且加入到配置文applicationContext.xml中扫描
@RemoteProxy(name = "WeiboManager") //dwr框架中的注解 返回给前端对象的名字
public class WeiboManagerImpl extends ManagerTemplate implements WeiboManager {

    @RemoteMethod       //dwr 框架 中返回给前端的方法
    public Result getSearchCount(String start, String end, HttpSession session) {
        /*
            具体业务实现代码参看源码
        */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Laura_Wangzx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值