Spring基础

一、准备工作

1、工具Eclipse和IDEA均可以,jdk,Tomcat都准备好。

2、Spring的jar下载地址:

https://repo.spring.io/libs-release-local/org/springframework/spring/

3、Apache Commons系列jar包下载地址:

http://commons.apache.org/

4、JSTL库包

http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

5、Jackson开源包

https://mvnrepository.com/artifact/com.fasterxml.jackson.core

用到哪些包,就在这些网址里找到下载即可,后续用在其他再补充。

二、入门Hello World

 

 

Spring基础_第1张图片

 

 

创建一个JEE项目(IDEA创建项目,新手建议采用Maven模式,可以直接使用,Gradle有个小坑,需要配置),在webapp——>WEB-INF文件夹下,创建一个lib文件夹,找到上述jar包,导入。

注:这里补充IDEA和Eclipse导入jar的方法

IDEA:

将jar粘贴到lib,然后右键lib,选择一个Add  as  Library选项,完成。

Eclipse:

将jar粘贴到lib,就能用了。

Spring的特点就是分层,让代码更清晰,管理方便,这里有必要解释一些常用字符串:

常用包名:service是业务逻辑层,dao是数据访问层,controller是控制器层,config是web、spring等配置类的包、pojo是普通JavaBeans。

注:pojo包中的类,只含有一些成员变量和关于这些成员变量的setter和getter方法,不含任何业务逻辑处理。

进入正题,在项目的Java文件夹部分,创建如下包和类文件:(代码中第一行有包名,这里就不在赘述每个代码在哪个包了)

package dao;
public interface TestDao {
	public void sayHello();
}
package dao;

public class TestDaoImpl implements TestDao{

	@Override
	public void sayHello() {
		System.out.println("Hello World");
	}
	
}

创建配置文件applicationContext.xml



    

创建测试类

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

import dao.TestDao;

public class Test {

	public static void main(String[] args) {
		//初始化spring 容器
		@SuppressWarnings("resource")
		ApplicationContext appCon = new  ClassPathXmlApplicationContext("applicationContext.xml");
		TestDao tt=(TestDao)appCon.getBean("test");
		tt.sayHello();
	}

}

运行Test类,结果输出:

Hello World

原理:读取配置文件,会按照里面的每一个对应创建一个实例保存在Spring容器中,通过getBean(名字)拿到该实例对象,进行工作。这里使用接口对象来接收接口的子类对象,如果用TestDaoImpl对象来接收,结果也是一样的,但该这里尽量采用这样写法,原因比较复杂,感兴趣可以自行搜索,我理解的是,如果TestDaoImpl实现了多个接口,就如同用户在网站上查看个人信息,没必要直接把数据库的表中所有用户信息都给他展示出来。通过一些方法只显示该用户自己的信息即可。当然原因不一定是这样。

三、Spring框架配置方法

1、xml配置

上述Hello World的例子用了XML配置Bean的方法,但是当你项目中需要大量Bean时,你想要修改一个类名,除了修改该类名以外,你还要跑到XML文件中,ctrl+F找到对应的原类名进行修改。当然这只是一种情况,XML配置不利于以后项目的升级维护。

2、Java配置

因此,现在更推荐用注解的方式,实现装配Bean。

声明Bean的注解:

@Component 普通标识Bean,任何类,没有明确的功能分配
@Repository 用于dao数据访问层标识为Bean,功能和@Component一样
@Service 用于service业务逻辑层标识为Bean,功能和@Component一样
@Controller 用于controller控制器层标识为Bean,功能和@Component一样

注入Bean的注解(比如,在类中声明一个成员Object ob,不用进行实例化,Spring容器会先找自身有没有ob,没有创建一个,有就取出来,赋予当前ob)

@Autowired 功能为上方解释,如果使用某些实例对象,不在需要用get,set等方法,通过该注解,直接将实例对象,赋予当前成员变量。按照Bean类型进行装配
@Resource 与@Autowired功能一样,区别在于,按照名称来装配注入。
@Qualifier 当需要按名称来装配Bean配合@Autowired一起用,此注解用来指定名称。

3、使用Java配置的样例

package annotation.dao;

public interface TestDao {
	public void save();
}
package annotation.dao;

import org.springframework.stereotype.Repository;

@Repository("testDaoImpl")
public class TestDaoImpl implements TestDao{

	@Override
	public void save() {
		System.out.println("testDao save");
	}
}
package annotation.service;

public interface TestService {
	public void save();
}
package annotation.service;

import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import annotation.dao.TestDao;

@Service("testServiceImpl")
public class TestServiceImpl implements TestService{
	
	@Resource(name="testDaoImpl")
	private TestDao testDao;

	@Override
	public void save() {
		// TODO Auto-generated method stub
		testDao.save();
		System.out.println("testService save");
	}
}
package annotation.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import annotation.service.TestService;

@Controller
public class TestController {

	@Autowired
	private TestService testService;
	
	public void save() {
		testService.save();
		System.out.println("testController save");
	}
	
	
}
package annotation;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("annotation")
public class ConfigAnnotation {

}

测试类:

package annotation;


import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import annotation.controller.TestController;

public class TestAnnotation {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		AnnotationConfigApplicationContext appCon = new AnnotationConfigApplicationContext(ConfigAnnotation.class);
		TestController tc = appCon.getBean(TestController.class);
		tc.save();
		appCon.close();

	}

}

 

 

 

你可能感兴趣的:(JavaWeb,spring)