• 第48月第20天 spring HibernateDaoSupport 注解


    1.spring HibernateDaoSupport 注解

    发现SqlSessionDaoSupport和HibernateDaoSupport是不一样的,前者有这样的一个方法

    1. @Autowired(required=false)
    2.  private void setSqlSessionFacoty(SqlSessionFacoty sqlSessionFacoty){
    3.         this.sqlSessionFacoty = sqlSessionFacoty;
    4.  }

    而后者的方法是

    1. public void setSessionFacoty(SessionFacoty sessionFactory){
    2.      this.sessionFactory = sessionFacoty;
    3.  }


    后者是没有@Autowired的,所以spring是不会为继承HibernateDaoSupport的对象自动装配sessionFacotry的

    那么如何解决这个问题就有很多途径了,比如你自己把HibernateDaoSupport的代码拷出来加个自动装配的注解,当做自己的实现。

    最简单的方法,在BaseDao里加入一个方法

    1.  @Autowired
    2.  public void setMySessionFactory(SessionFactory sessionFactory){
    3.       super.setSessionFactory(sessionFactory);
    4.  }

    spring会按照类型自动装配,所以方法名称可以随便写,这样就可以为子类的对象自动注入sessionFactory了。

    为了不给没有用过零配置的同学耗费时间,把重要配置贴出来:


    applicationContext.xml里配置如下

      1.  <!-- 自动扫描配置 -->
      2.  <context:component-scan base-package="com.dao"/>

    https://blog.csdn.net/tsingheng/article/details/8847047

    2.

    PersonDaoImpl.java

    @Repository(value="personDao")
    public class PersonDaoImpl extends HibernateDaoSupport implements PersonDao {    
        @Autowired
        public void setMySessionFactory(SessionFactory sessionFactory){
            super.setSessionFactory(sessionFactory);
        }

    PersonServiceImpl.java

    @Component(value = "personService")
    public class PersonServiceImpl implements PersonService {
    
        @Autowired
        private PersonDao personDao;
        public PersonDao getPersonDao() {
            return personDao;
        }

    PersonAction.java

    @Controller(value = "personAction")
    public class PersonAction extends ActionSupport{
        private static final long serialVersionUID = 1L;
        @Autowired
        private PersonService personService;

    applicationContext.xml

        <!-- 自动扫描配置 -->
    <context:component-scan base-package="com.itheima.ssh"/>

     3.使用hibernateTemplate

    web.xml

        <!-- 创建hibernateTemplate对象 -->
        <bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
            <!-- 注入sessionFactory对象 -->
            <property name="sessionFactory" ref="sessionFactory"></property>
        </bean>

    4.

    @Component:标注一个普通的Spring Bean类。如果不指定id,默认就该类的类名首字母小写作为id。
                 <bean id="" class=""/>(使用注解就不需要指定class了)
               @Controller:标注一个控制器组件类。
               @Service:标注一个业务逻辑组件类。
               @Repository:标注一个DAO组件类。
               —— 在Java EE应用中,使用这3个注解可能获得一些额外的好处。
               @Scope – 指定Bean的作用域。
                    相当于scope属性。
               @Resource -配置依赖注入( Spring借用了Java EE的Annotation)。
                    相当于ref属性,且该注解直接支持field注入。

    https://blog.csdn.net/ack_finding/article/details/78877250

  • 相关阅读:
    港股实时行情数据
    A股实时行情数据
    A股历史行情数据 API 接口
    公募开放式基金历史数据
    历年奥运比赛数据 API 接口
    手机归属地查询 API 接口
    获取公众号文章封面 API 接口
    公众号头条文章 API 接口
    P3572 [POI2014]PTA-Little Bird
    CF1325D Ehab the Xorcist
  • 原文地址:https://www.cnblogs.com/javastart/p/13701791.html
Copyright © 2020-2023  润新知