Spring框架使用流程

一 、过程简单梳理

tomcatl启动 -》dispatcherServlet(会自动(根据springmvc-servlet.xml)创建工厂) 开启扫描,将Controller下的对应存入IOC容器中。然后客户端发送请求-》servlet->IOC容器中map中找requestMapping->调用方法即可,然后返回JSON数据。大概就是这个过程

二、 Spring的基本配置及用法

1.Maven项目中Spring框架的依赖引入

 <dependency>
	  <groupId>org.springframework</groupId> 
	  <artifactId>spring-context</artifactId>
	 <version>5.3.8</version>
</dependency>

2.配置Spring配置文件的三种方式

(1)纯xml文件配置(applicationContext.xml)

1) 配置实体类, id唯一,class为类的全路径名称。

 <bean id="myBook" class="com.sim.spring.entity.Book">
	<property name="id" value="2"></property>
	<property name="title" value="西游记"></property>	
	<property name="price" value="231.00"></property>
	<property name="category" value="小说"></property>
</bean>

(2)利用注解配置(还需要xml配置文件,但相较于第一种,已经简单了)

  • 在eclipse中,这个配置文件下面有namespaces,选中context
  • 在applicationContext.xml文件中配置开启组件扫描(确定要扫描的包)
 <context:component-scan base-package="com.sim.spring.entity" />
  • 然后在实体类上面加上@Component 或者 @Controller、 @Service、@Repositiry注解中的一种,spring就会自动扫描这个类,并且自动创建对象。
    @Component("myBook2")
	public class Book2 implements Serializable{
		private static final long serialVersionUID = 1L;
		private Integer id;
		private String title;
		private Double price'
		private String category;
	}

(3)使用配置类替代xml文件

	创建一个配置类(我的名称叫做SpringConfiguration)
	@Configuration
	public class SpringConfiguration {
		@Bean(name = "book3")
		public Book3 getBook() {
			return new Book3();
		}		
	}

3.Spring如何进行单元测试

创建一个测试类:

  • 上面三种的前两个基于xml文件的测试使用方式:
public class TestSpring{
	   final String CONFIG_LOCATION="classpath:spring/applicationContext.xml";//配置文件所在的类路径
		@Test
		public void testWithSpring() {
			ApplicationContext factory=new  FileSystemXmlApplicationContext(CONFIG_LOCATION);//创建工厂
			Book book = factory.getBean("myBook",Book.class);
			System.out.println(book);
			Book book2 = factory.getBean("myBook",Book.class);
			System.out.println(book==book2);//spring工厂是一个单例模式,所以两个book是同一个对象
	
	}
  • 基于@Configuration注解开发的配置类的测试使用方式:
@Test
public void testConfigurationAnnoations() {
	    ApplicationContext factory=new  AnnotationConfigApplicationContext("com.sim.spring.config");//配置文件所在的包,这里不是惟一的
		Book3 book = factory.getBean("book3",Book3.class);
		System.out.println(book);	
	}

三、 Spring的IOC和DI

IOC:控制反转(原来是我需要什么自己主动创建什么,我是主动方,现在是我需要什么,IOC容器就给我自动创建并扔给我,我成了被动接收方,我的权力就发生了反转)
DI:依赖注入(我需要的对象,IOC就自动给我创建并注入给我,我就可以使用)

示例:创建两个实体类,Person和Car

   @Component("c")
   @Data
   @NoArgsConstructor
   @AllArgsConstructor
   public class Car {
		private String name;
		public void run() {
			System.out.println("车开跑了");
		}
   }

Person需要Car,Spring 就会自动创建Car对象并且注入给Person对象

   @Component("c")
   @Data
   @NoArgsConstructor
   @AllArgsConstructor
   public class Person {
		@Autowired
		private  Car car;
		public void drive() {
			car.run();
		} 
	 }

然后进行单元测试:

public class TestSpring{
	@Test
	public void testIOC() {	
		ApplicationContext factory=new  FileSystemXmlApplicationContext("classpath:spring/applicationContext.xml");
		Person person = factory.getBean("p",Person.class);
		person.drive();
	}

结果是正确执行,这也就验证了Spring容器的IOC和DI。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值