spring框架是一个开源框架,它致力于提供一种方法管理,业务层的业务对象;它的主要目的是使javaEE开发更高效,更简洁;它不仅仅只作用于一层,它是企业级开发项目中,一站式首选的框架,它可以与其他框架无缝整合
<1、方便解耦,简化开发 Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理 <2、AOP编程的支持 Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能 < 3、声明式事务的支持 只需要通过配置就可以完成对事务的管理,而无需手动编程 <4、方便程序的测试 Spring对Junit4支持,可以通过注解方便的测试Spring程序 <5、方便集成各种优秀框架 Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、 Quartz等)的直接支持 <6、降低JavaEE API的使用难度 Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API 应用难度大大降低
简单来说,就是将原来由我们实例化的对象,交由spring框架来进行实例化.这是对象的实例化的权利就会反转. IOC 的思想是:用框架的方式替代耦合度高的 new 构造方法();的形式创建对象 这样可以在需要的时候去创建,不需要的时候销毁, 统一管理, 节约资源, 提高效率 DI 的思想是:Spring框架替我们完成属性赋值的操作
2.1.2、applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "> <!--利用反射的原理,创建service的实例对象 体现出IOC:控制反转--> <bean name="service" class="com.K9503.service.impl.EmpServiceImpl"> <!--调用set方法,为属性mapper赋值 体现出DI:依赖注入--> <property name="mapper" ref="mappers"></property> </bean> <!--创建mapper的实例对象--> <bean name="mappers" class="com.K9503.mapper.impl.EmpMapperImpl"></bean> <!--为emp中的属性赋值--> <bean name="emp" class="com.K9503.pojo.Emp"> <property name="name" value="#{emp.name}"></property> <property name="age" value="#{emp.age}"></property> </bean> </beans>2.1.3、service实现类
private IEmpMapper mapper; //配置版需要提供set方法 public IEmpMapper getMapper() { return mapper; } public void setMapper(IEmpMapper mapper) { this.mapper = mapper; } //调用mapper中的add方法 @Override public void addEmp(Emp emp) { mapper.addEmp(emp); }2.1.4、mapper实现类
@Override public void addEmp(Emp emp) { System.out.println("新增成功!"); System.out.println(emp); }2.1.5、web测试
IEmpsService service; @Test public void addEmp(){ //加载核心配文件 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/application.xml"); //实例化service service = (IEmpService) context.getBean("service"); //实例化Emp Emp emp = (Emp) context.getBean("emp"); emp.setName("关羽"); //调用mapper的add方法 service.addEmp(emp); }通用型:@Component Dao层:@Repository Service层:@Service Web层:@Controller
属性注解:四个:
自动注入:@Autouired
声明实现类:@Qualifier
@Resource @Autouired和@Qualifier的搭配
@Value基本数据类型属性注入
3.1.4、service层实现类
@Service("service") public class EmpsServiceImpl implements IEmpsService { @Autowired @Qualifier("mapper") IEmpMappers mapper; @Override public void addEmp(Emps emp) { mapper.addEmp(emp); } }3.1.5、mapper实现类
@Repository("mapper") public class EmpMappersImpl implements IEmpMappers { @Override public void addEmp(Emps emp) { System.out.println("emp1新增成功!"); System.out.println(emp); } }3.1.6、web测试
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("/applicationContext.xml") public class TestIoc1 { /*@Autowired @Qualifier("service") IEmpsService service;*/ @Resource(name = "service2") IEmpsService service2; /*@Autowired @Qualifier("emp")*/ @Resource(name = "emp") Emps emp; @Test public void addEmp(){ emp.setName("关羽"); service2.addEmp(emp); } }