zoukankan      html  css  js  c++  java
  • 第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

  • 相关阅读:
    牛客网 二叉树的镜像 JAVA
    牛客网 反转链表 JAVA
    牛客网 调整数组顺序使奇数位于偶数前面 JAVA
    Integer to Roman LeetCode Java
    Valid Number leetcode java
    Longest Common Prefix
    Wildcard Matching leetcode java
    Regular Expression Matching
    Longest Palindromic Substring
    Add Binary LeetCode Java
  • 原文地址:https://www.cnblogs.com/javastart/p/13701791.html
Copyright © 2011-2022 走看看