当前位置: 代码迷 >> VC/MFC >> springmvc札记(来自慕课网)
  详细解决方案

springmvc札记(来自慕课网)

热度:126   发布时间:2016-05-02 03:45:38.0
springmvc笔记(来自慕课网)

1.准备工作:springmvc相关的jar包.

2.这里我们先用eclipse来操作.

首先看一个接口编程,后面的所有知识点都是通过这个接口编程引出的.

OneInterface.java

1 package gys;2 3 public interface OneInterface {4     String hello(String world);5 }

OneInterfaceImpl.java

 1 package gys; 2  3 public class OneInterfaceImpl implements OneInterface{ 4  5     @Override 6     public String hello(String world) { 7         return "从接口返回的是:"+world; 8     } 9     10 }

Run.java

package gys;public class Run{            public static void main(String[] args) {        OneInterface oif=new OneInterfaceImpl();        System.out.println(oif.hello("思思博士"));    }    }

这个地方可以通过接口的形式跑起来了.

下面看看使用springmc方式如何来跑起来这个项目

因为我们不是web项目,没有通过配置web.xml来配置,读取springmvc配置文件.

只能手写读取配置文件.

getBeanBase.java

 1 package gys; 2  3 import org.springframework.context.support.ClassPathXmlApplicationContext; 4 //创建springmvc容器,获取配置文件中的bean. 5 public class GetBeanBase { 6     private ClassPathXmlApplicationContext context; 7     private String springXmlpath; 8     public GetBeanBase(){}; 9     10     public GetBeanBase(String springXmlPath){11         this.springXmlpath=springXmlPath;12     }13     14     public void start(){15         if(springXmlpath.equals("")||springXmlpath==null||springXmlpath.isEmpty()){16             springXmlpath="classpath*:spring-*.xml";17         }18         try {19             //创建spring容器20             context=new ClassPathXmlApplicationContext(springXmlpath.split("[,\\s]+"));21             context.start();22         } catch (Exception e) {23             e.printStackTrace();24         }25     }26     27     public void end(){28         context.destroy();29     }30     31     @SuppressWarnings("unchecked")32     protected <T extends Object> T getBen(String beanId){33         return (T) context.getBean(beanId);34     }35 36     protected <T extends Object> T GetBeanBase(Class<T> clazz){37         return context.getBean(clazz);38     }39 }

spring-ioc.xml

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" 3     xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" 4     xsi:schemaLocation="   5         http://www.springframework.org/schema/beans  6         http://www.springframework.org/schema/beans/spring-beans.xsd  7         http://www.springframework.org/schema/context  8         http://www.springframework.org/schema/context/spring-context.xsd  9         http://www.springframework.org/schema/mvc10         http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd        11         http://www.springframework.org/schema/tx12         http://www.springframework.org/schema/tx/spring-tx.xsd13         http://www.springframework.org/schema/aop14         http://www.springframework.org/schema/aop/spring-aop.xsd">15 16         <bean id="oneInterface" class="gys.OneInterfaceImpl"></bean>17 </beans>

Run.java

 1 package gys; 2  3 public class Run extends GetBeanBase{ 4     public Run(){ 5         super("classpath*:spring-ioc.xml"); 6         start(); 7     } 8     public void testHello(){ 9         OneInterface oneInterface=super.getBen("oneInterface");10         System.out.println(oneInterface.hello("传入的参数"));11         end();12         13     }14     15     public static void main(String[] args) {16         Run run=new Run();17         run.testHello();18     }19     20 }

通过这个方式也是可以做到同样的输出.这里的GetBeanBase在后面很多地方使用.

spring注入:在启动Spring容器加载bean配置的时候,完成对变量的赋值行为
常用的两种注入方式:
        设置注入
        构造注入

1.设置注入:

InjectionDao.java

package gys.dao;public interface InjectionDAO {    void save(String info);}

InjectionDAOImpl.java

package gys.dao;public class InjectionDAOImpl implements InjectionDAO{    @Override    public void save(String info) {        System.out.println("保存数据:"+info);            }}

InjectionService.java

package gys.service;public interface InjectionService {    public void save(String info);}

InjectionServiceImpl.java

 1 package gys.service; 2  3 import gys.dao.InjectionDAO; 4  5 public class InjectionServiceImpl implements InjectionService{ 6  7     private InjectionDAO injectionDAO; 8              9     //设置注入,这里的set方法spring会自动调用,无需手动调用10     public void setInjectionDAO(InjectionDAO injectionDAO) {11         this.injectionDAO = injectionDAO;12     }13     14     15     @Override16     public void save(String info) {17         System.out.println("service接受参数:"+info);18         info=info+":"+this.hashCode();19         injectionDAO.save(info);20     }21 }

spring-ioc.xml

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" 3     xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" 4     xsi:schemaLocation="   5         http://www.springframework.org/schema/beans  6         http://www.springframework.org/schema/beans/spring-beans.xsd  7         http://www.springframework.org/schema/context  8         http://www.springframework.org/schema/context/spring-context.xsd  9         http://www.springframework.org/schema/mvc10         http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd        11         http://www.springframework.org/schema/tx12         http://www.springframework.org/schema/tx/spring-tx.xsd13         http://www.springframework.org/schema/aop14         http://www.springframework.org/schema/aop/spring-aop.xsd">15         16     <!-- 设置注入 -->17     <bean id="injectionService" class="gys.service.InjectionServiceImpl">18     <!--InjectionServiceImpl类中必须有一个属性name,类型是ref,springmvc会自动调用这个属性的set方法. -->19         <property name="injectionDAO" ref="injectionDAO"></property>20     </bean>21     22     <bean id="injectionDAO" class="gys.dao.InjectionDAOImpl"></bean>23     24 25         26 </beans>

Run.java

 1 package gys; 2  3 import gys.service.InjectionService; 4 public class Run extends GetBeanBase{ 5     public Run(){ 6         super("classpath*:spring-ioc.xml"); 7         start(); 8     } 9     public void testSetter(){10         InjectionService service=super.getBen("injectionService");11         service.save("这是要保存的数据");12         end();13     }14     public static void main(String[] args) {15         Run run=new Run();16         run.testSetter();17     }18     19 }

2.构造注入:

对上面的代码做一下改变:

InjectionServiceImpl.java

 1 package gys.service; 2  3 import gys.dao.InjectionDAO; 4  5 public class InjectionServiceImpl implements InjectionService{ 6  7     private InjectionDAO injectionDAO; 8      9     //构造器注入10     public InjectionServiceImpl(InjectionDAO injectionDAO){11         this.injectionDAO=injectionDAO;12     }13     14     @Override15     public void save(String info) {16         System.out.println("service接受参数:"+info);17         info=info+":"+this.hashCode();18         injectionDAO.save(info);19     }20 }

spring-ioc.xml

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" 3     xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" 4     xsi:schemaLocation="   5         http://www.springframework.org/schema/beans  6         http://www.springframework.org/schema/beans/spring-beans.xsd  7         http://www.springframework.org/schema/context  8         http://www.springframework.org/schema/context/spring-context.xsd  9         http://www.springframework.org/schema/mvc10         http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd        11         http://www.springframework.org/schema/tx12         http://www.springframework.org/schema/tx/spring-tx.xsd13         http://www.springframework.org/schema/aop14         http://www.springframework.org/schema/aop/spring-aop.xsd">15     16     <!-- 构造注入 -->17     <bean id="injectionService" class="gys.service.InjectionServiceImpl">18     <!--在类InjectionServiceImpl中有一个属性name,还必须必须有一个构造器,这个构造器的参数是name值   类型是ref -->19         <constructor-arg name="injectionDAO" ref="injectionDAO" />20     </bean>21     22     <bean id="injectionDAO" class="gys.dao.InjectionDAOImpl"></bean>23     24 25         26 </beans>

 

Run.java

 1 package gys; 2  3 import gys.service.InjectionService; 4  5 public class Run extends GetBeanBase{ 6     public Run(){ 7         super("classpath*:spring-ioc.xml"); 8         start(); 9     }10     11     public void testCons(){12         InjectionService service=super.getBen("injectionService");13         service.save("这是要保存的数据");14         end();15     }16     17     public static void main(String[] args) {18         Run run=new Run();        19         run.testCons();20     }21     22 }

下班了,未完待续......

 

  相关解决方案