Spring框架简介
步骤:
1.创建项目并导入包
2.创建java接口和相应的类
3.在src目录下编写applicationContext.xml配置文件
4.编写测试类,运行
Spring为JavaEE开发提供了一个轻量级的解决方案,主要表现为,IOC(或者叫做DI)的核心机制,提供了bean工厂(Spring容器),降低了业务对象替换的复杂性,提高了组件之间的解耦。
AOP的将一些通用任务,如安全、事务、日志等集中进行管理,提高了复用性和管理的便捷性ORM和DAO提供了与第三方持久层框架的良好整合,简化了底层数据访问。提供了优秀的Web MVC框架。
可以说Spring是贯穿表现层、业务层、持久层,为javaEE提供一站式解决方案的框架。此外,使用Spring还有如下好处,
低侵入设计,代码污染极低。
基于Spring框架的应用,可以独立于各种应用服务器,实现 write once, run anywhere,
Spring可以与第三方框架良好整合(如ORM,DAO等模块与其他框架整合),但同时Spring提供了高度开放性,应用不会被强制依赖Spring,开发者可以自由选择Spring的部分或者全部。
Spring并不局限于中间层,而是为系统各层都提供了企业级解决方案(例如IOC可以
使用Spring框架可以带来诸多好处,例如进行数据库事务处理,远程调用,JMS消息处理,JMX操作处理,而这些处理都不需要开发人员直接使用相关API(JDBC, JMX, JMS 等)
IOC(DI):
Bean:
Spring把容器中的一切java对象称为bean(比如数据源,Hibernate SessionFactory等基础性资源)
【java对象转为Spring容器中Bean实现原理:
Spring框架通过反射根据<bean…/>元素的class属性指定的类名创建一个java对象(无参数构造器),
并以<bean…/>元素的id属性的值为key,将该对象放入Spring容器中。
【依赖注入具体:
Spring框架只要看到property元素,就会在底层以反射方法执行一次setter方法
传入参数是基本类型或包装类,String类,则使用value属性指定传入参数。
如果以容器中其它Bean作为传入参数,则使用ref属性指定传入参数。
<bean id="key" class="包名+类名(可以被实例化的类)">
<property name="执行的setter方法的属性值" ref=".."||value="..."/>
</bean>
J2EE提倡面向接口编程,Spring也是针对的接口编程,即在代码中只使用规范(即接口),而将真正的实现类配置在文件中,
由Spring的配置文件来决定将会使用哪一个实现类,这也叫做控制反转(IOC)或者依赖注入(DI)。
步骤:
1.创建项目并导入包
spring-aop-5.0.2.RELEASE.jar
spring-aspects-5.0.2.RELEASE.jar
spring-beans-5.0.2.RELEASE.jar
spring-context-5.0.2.RELEASE.jar
spring-context-indexer-5.0.2.RELEASE.jar
spring-context-support-5.0.2.RELEASE.jar
spring-core-5.0.2.RELEASE.jar
spring-expression-5.0.2.RELEASE.jar
spring-instrument-5.0.2.RELEASE.jar
spring-jcl-5.0.2.RELEASE.jar
spring-jdbc-5.0.2.RELEASE.jar
spring-jms-5.0.2.RELEASE.jar
spring-messaging-5.0.2.RELEASE.jar
spring-orm-5.0.2.RELEASE.jar
spring-oxm-5.0.2.RELEASE.jar
spring-test-5.0.2.RELEASE.jar
spring-tx-5.0.2.RELEASE.jar
spring-web-5.0.2.RELEASE.jar
spring-webflux-5.0.2.RELEASE.jar
spring-webmvc-5.0.2.RELEASE.jar
spring-websocket-5.0.2.RELEASE.jar
2.创建java接口和相应的类
public interface UserService {
public void sayHello();
}
import com.spring.servce.UserService;
public class UserServiceImpl implements UserService{
@Override
public void sayHello() {
// TODO Auto-generated method stub
System.out.println("hello,spring.....");
}
}
3.在src目录下编写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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="userService" class="com.spring.servceimpl.UserServiceImpl">
</bean>
</beans>
4.编写测试类,运行
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.spring.servce.UserService;
public class TestSpring {
public static void main(String[] args) {
//使用Spring工厂
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
//通过工厂获取需要的类
UserService userService=(UserService)applicationContext.getBean("userService");
userService.sayHello();
}
}