Spring-注解实现IOC
一、定义
注解:是一种标记式的配置方式,与XML配置文件不同,注解提供了更大的便捷性,易于维护修改,但是耦合度高。
本质:是一个继承了 Annotation 接口的接口,注解本身并没有什么作用,通过特殊方法解析才使得它起到它的作用。
二、注解实现IOC入门案例
导入包:
代码实现:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans 6 http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 7 http://www.springframework.org/schema/context 8 http://www.springframework.org/schema/context/spring-context-4.3.xsd"> 9 10 <context:component-scan base-package="cn.zwj"></context:component-scan> 11 </beans>
public interface TestService { void save(); }
1 import org.springframework.stereotype.Service; 2 import cn.zwj.service.TestService; 3 4 @Service 5 public class TestServiceImpl implements TestService { 6 @Override 7 public void save() { 8 System.out.println("保存用户--TestServiceImpl1"); 9 } 10 11 }
1 import org.springframework.stereotype.Service; 2 import cn.zwj.service.TestService; 3 4 @Service 5 public class TestServiceImpl2 implements TestService { 6 @Override 7 public void save() { 8 System.out.println("保存用户--TestServiceImpl2"); 9 } 10 }
1 import org.springframework.beans.factory.annotation.Autowired; 2 import org.springframework.stereotype.Component; 3 import cn.zwj.service.TestService; 4 5 @Component 6 public class TestClient { 7 //1.声明一个父接口的引用 8 private TestService testService; 9 10 //2.使用set方法注入对象,我们将通过方法注入对象的方式称之为依赖注入 11 @Autowired 12 public void setTestService(TestService testService) { 13 this.testService = testService; 14 } 15 16 public void tryTest() { 17 testService.save(); 18 } 19 }
1 import org.springframework.context.support.ClassPathXmlApplicationContext; 2 3 import cn.zwj.client.TestClient; 4 5 public class Test { 6 public static void main(String[] args) { 7 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( 8 "classpath:test.xml"); 9 TestClient bean = context.getBean("testClient", TestClient.class); 10 bean.tryTest(); 11 context.close(); 12 } 13 }
从上面可以看出,注解减少了XML配置文件的编写,在各个类或类方法前添加了标记,使得代码看起来更加精简