spring 学习总结

       前几天,一直在学spring,然后又学习spring mvc ,再回过头去看spring,本来不是特别熟悉,竟然几乎全部忘记了。于是,立刻写这篇博客来总结一下。这是我写的其中一个程序,大概的逻辑流程。

注意:导入前两个jar包

1.这个是项目的总体结构。

2.web.xml 配置文件 

是自动生成的,没有改,这里主要使用junit4 进行测试了,没有涉及到页面的交互。

3.springmvc-servlet.xml配置文件

<!-- xsl -->
	<!--xml能引入多个 dtd (之前) xsd 一般称为scheme 一般称为 定义的xml的语法 元数据文件 -->
	<!-- <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
		xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> -->
		
	<!-- <bean id="u" class="com.dao.impl.UserDAOImpl"> -->

	<bean id="userDAO" class="com.dao.impl.UserDAOImpl"> 
		<!-- <property name="daoId"></property> -->
		<!-- <property name="daoStatus" value="good"></property> -->
		<property name="daoId" value="1"></property>  //userdaoImple实现了userdao的接口,在里面有个daoId属性,spring 框架做的事情,就是把在这里赋的值
传到类里。用下面的方法赋给了类。

                      public void setDaoId(int daoId) {
                        this.daoId = daoId;
                      }

             此为userdaoimple 里的set,get方法
	</bean>

	<bean id="userDAO1" class="com.dao.impl.UserDAOImpl">
		<property name="daoId" value="2"></property>
	</bean>

	 <bean id="userService" class="com.service.UserService">
		
		 </bean> 

  

3.此为userdaoimple方法(省略set,get方法)

public class UserDAOImpl implements UserDAO{

    private int daoId;
    private String daoStatus;
    
    private Set<String>  sets;
	private List<String> lists; 
	private Map<String,String> maps;

4.此为user类方法

public class User {

	private String username;
	private String password;
	public

5.此为userdao接口方法

public interface UserDAO {
	
	
	public void save(User u);
}

6.此为service类

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

import com.dao.UserDAO;
import com.model.User;

//功能   存入数据库之前  业务逻辑 认证
public class UserService {
	
	private UserDAO userDAO;
	/*public UserService(UserDAO userDAO){
		super();
		this.userDAO=userDAO;
	}*/
	//private UserDAO userDAO =new UserDAOImpl();
	
	//在实现中可以写多个 oracle、mysql, 用哪个new 谁 面向抽象编程
	
	public void init(){
		System.out.println("init");
	}
	
	
	public UserDAO getUserDAO() {
		return userDAO;
	} 
	
	@Autowired  //必须有参数为空的构造方法 
	//autowire="by type"
	public void setUserDAO(@Qualifier("userDAO")UserDAO userDAO) {
		this.userDAO = userDAO;
	}
	//@Qualifier 可以指定到底哪个bean
	
	public void add(User user){
		userDAO.save(user);
	}
  
	public void destroy(){
		System.out.println("destroy");
	}
   

 7.junit test包

    新建一个包test,然后在service包下选择userService类,右击新建junit test cast 文件

import static org.junit.Assert.*;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.model.User;

public class UserServiceTest {

	@Test
	public void test() {
		fail("Not yet implemented");
	}
	
	public void testAdd() {
		 ApplicationContext   ctx =new ClassPathXmlApplicationContext("springmvc-servlet.xml"); //此处规定了,映射了springmvc-servlet.xml 文件
		  //UserDAO u1=(UserDAO)ctx.getBean("userDAO");
		  
		 	  
		//  System.out.println(u1);
		/*   UserService service =(UserService)ctx .getBean("userService");
		   UserService service2 =(UserService)ctx .getBean("userService");
		   */
		   //System.out.println(service==service2);
			//UserService service =new UserService();
		/*	User u=new User();
		    u.setUsername("zhang");
		    u.setPassword("zhang");
		    service.add(u);*/
		
		   UserService service =(UserService)ctx.getBean("userService");
		   service.add(new User()); //服务里new 一个user() 对象。 印象中spring 框架,它把new 对象这个事情 做了,不知道理解的对不对
		   System.out.println(service.getUserDAO());
		
	}

  

原文地址:https://www.cnblogs.com/elenz/p/5998200.html