spring相关

来源:互联网 发布:用户画像需要哪些数据 编辑:程序博客网 时间:2024/06/05 18:01

1Spring核心模块组成

 

3springapplicationContext.xml文件的读取代码:

Resource resource = new ClassPathResource(“applicationContext.xml”);

//或者Resosurce resource = new

FileSysemResource(“D://workspace//demo//src//applicationContext.xml”);

绝对路径也可以改成相对路径

FileSysemResource(“src//applicationContext.xml”);

备注:这里的applicationContext.xml是放在src目录下的,src目录下的在发布的时候一般是打成.jar文件的,所以我们应该把applicationContext.xml文件放在WEB-INF/lib下,这样的话程序就应该通过.getRealPath来寻找该配置文件

 

 

XmlBeanFactory beanfac = new XmlBeanFactory(resource);

Beanfac.getBean(“logindao”);

 

applicationContext.xml文件里的配置:

<bean id=”logindao” class=”com.sun.demo.LoginDaoHibernate”></bean>//红色部分可以替换为其他的类,例如LoginDaoJdbc.

 

6<bean id=”userdao” class=”com.sun.demo.UserDaoImpl”>

       <property name=”emp”>

           <ref  bean=”e”/>

        </property><!—调用类UserDaoImpl中的userdao.setEmp(e)à

 

      <property name=”username”>

          <value>gaoge</value>       

</property>

<!—UserDaoImpl类中的username类型是String类型的,调用userdao.setUsername(“gaoge”)à

 

     <property name=”date”>

          <ref  bean=”d”/>       

</property>

   <!—UserDaoImpl类中的date类型是Date类型的,调用userdao.setDate(“date”)à

 

   </bean>

 

    <bean id=”e” class=”com.sun.demo.Emp”><!—相当于Emp e = new Emp();à

<bean id=”d”  class=”java.util.Date”></bean>

 

7、容器实例化

  基于多配置文件的加载

 

  String [] configFile = {“applicationContext.xml”};

ApplicationContext ac= new ClassPatchXmlApplicationContext(configFile);

BeanFactory bean = (BeanFactory)ac;

 

 

源代码示例:

ApplicationContext ctx = new

ClassPathXmlApplicationContext(“applicationContext.xml”);

IUserDao userdao = (IUserDao)ctx.getBean(“applicationContext.xml”);

Userdao.addUser();

 

备注:ApplicationContext是只要取一个节点,就会把applicationContext.xml里所有的节点都给实例化出来,而XmlBeanFactory是延迟加载,只实例化程序使用到的节点。

 

8applicationContext.xml文件里节点配置构造函数

  <bean id=”user” class=”com.sun.demo.User”>

        <constructor-arg index=”0” value=”dddddd”></constructor-arg>

        <constructor-arg index=”1” ref=”date”></constructor-arg>

  </bean>

  <bean id=”date” class=”java.util.Date”/>

 

 

1、  SpringHibernate的支持

先安装spring,再安装hibernate,Hibernate中一以前的hibernate.cfg.xml文件中的配置信息放到applicationContext.xml中。让SpringHibernate进行管理。

1)、HibernateTemplate的使用

源代码:UserDao.java

Public class UserDao extends HibernateTemplate{

  Private SessionFactory sessionFactory;//此处必须为sessionFactory

   Public static void main(String[]args){

   ApplicationContext ctx = new ClassPathXmlApplicationContext(“applicationContext.xml”);

   Userinfo u = ctx.getBean(“userinfo”);

   This.save(u)

}

   Public void setSsessionFactory (SessionFactoy sf){

        This.sf = sf;

  }

}

ApplicationContext.xml

<bean id=”userdao” class=”com.sun.demo.UserDao”>

<property name=” sessionFactory”>

  <ref name=”mySessionFactory”/>//此处的mySessionFactory是该配置文件创建的时候设置好的,相当于Hibernate中的SessionFactory.

</proerty>

</bean>

备注:不用创建session,也不用手动提交事务,关闭事务,Spring都已经封装好了。

 

(2)HibernateDaoSupport的使用

源代码:StaffDao.java

Public class StaffDao extends HibernateDaoSupport{

 

   Public static void main(String[]args){

   ApplicationContext ctx = new

ClassPathXmlApplicationContext(“applicationContext.xml”);

   Userinfo u = ctx.getBean(“userinfo”);

   This.getHibernateTemplate.save(u)

}

  

}

ApplicationContext.xml

<bean id=”staffdao” class=”com.sun.demo.StaffDao”>

<property name=” sessionFactory”>

  <ref name=”mySessionFactory”/>//此处的mySessionFactory是该配置文件创建的时候设置好的,相当于Hibernate中的SessionFactory.

</proerty>

</bean>

备注:HibernateDaoSupport继承了HibernateTemplate,并将HibernateTemplate中的

SessionFactory sessionFactory;

Public void setSessonFactory(SessionFactory sessionFactory){

  This.sessionFactory = sesssionFactory;

}

这几句话封装了起来。

 

增删改语句:

修改:

Userinfo u = new Userinfo();

u.setUserid(“9001”);//9001是数据库中已经存在的记录

u.setUsername(“gaoge”)

this.getHibernateTemplate.update(u);

 

删除:

Userinfo u = new Userinfo(“9001”);

This.getHibernateTemplate.delete(u);

批量修改

This.getHibernateTemplate().execute(new HibernateCallback(){

   Public Object doInHibernate(Session session)

             Throws HibernateException,SQLException{

          Query q = session.createQuery(“update Userinfo set

username=’zhangsan’”);

           q.executeUpdate();//executeUpdate():批量修改

           return null;

}

});

 

加载:Userinfo u =

(Userinfo)this.getHibernateTemplate.get(Userinfo.class,”1001”);

 

插入或更新

Userinfo u = new Userinfo(“5006”,”yaoming”,”male”,”22”);

This.getHibernateTemplate().saveOrUpdate(u);

分页查询

List list = (List)This.getHibernateTemplate().execute(new HibernateCallback(){

   Public Object doInHibernate(Session session)

             Throws HibernateException,SQLException{

          Query q = session.createQuery(“from Userinfo”);

           q.setFirstResult(3); //executeUpdate():批量修改

           q.setMaxResults(3);

return q.list();

}

});