我们常常说用了Spring框架,但是spring框架到底有什么作用呢?其实很多人都可以很轻出的告诉我,Spring使我们的开发更加简单。那么Spring是怎么使我们的框架变得简单的呢?
1.基于pojo的轻量级和最小侵入性编程
在使用Spring之前,我们写代码需要先进性一些常规性的操作,比如数据库的连接,加载日志服务等,他会有一下一段类似的代码:
public class Helloworld implements SessionBean{
public void ejbActive(){
}
public void ejbRemove(){
}
public void ejbPassivae(){
}
public void setSessionContext(SessionContext ctx){
}
public String sayHello(){
return "你好!";
}
public void ejbCreate(){
}
}
但是我们用Spring后,不需要再加入ejb的一些方法,只需要实现我们自己的目标代码即可,这样我们的编程不需要强耦合ejb或是其他的一些技术的方法,只需要写我们想要实现的功能即可,其他的由spring替我们做好!
public class Helloworld implements SessionBean{
public String sayHello(){
return "你好!";
}
}
2.通过依赖注入和面向接口实现松耦合,依赖注入是把
public static void main(String[] args){
<span style="white-space:pre"> </span>/*加载Spring上下文*/
ApplicationContext context= new ClassPathXmlApplicationContext("applicationContext.xml");
<span style="white-space:pre"> </span>/*获取TestAction bean*/
TestAction tx=(TestAction)ac.getBean("test.Action");
}
3.基于切面和惯例进行声明式编程
<bean id="auditorium"
class="com.springinaction.springidol.Auditorium"></bean>
<aop:config>
<!-- 确定切面为auditorium类 -->
<aop:aspect ref="auditorium">
<!-- 切面方法为:queryTest -->
<aop:pointcut id="queryTest"
expression="execution(* *.queryTest1())"/>
<!-- 横切之前调用方法--turnOnLights -->
<aop:before pointcut-ref="queryTest"
method="turnOnLights"/>
<!-- 横切之后调用方法--turnOffLights -->
<aop:after pointcut-ref="queryTest"
method="turnOffLights"/>
</aop:aspect>
</aop:config>
4.通过切面和模板减少板式代码:(无需再写JDBC连接等代码,使代码更加简洁)
public Employee getEmployeebyID(long id){
return jdbcTemplate.queryForObject("select * from employee wher id=?",new RowMapper<Employee>(){
public Employee mapRow(ResultSet rs,int rowNum)throws SQLException{
Employee employee= new Employee();
employee.setId("12");
return employee;
}
},id);
}
总结:
Spring的框架的根本使命就是使我们的Java开发更加简洁便利,并且通过依赖注入和AOP这两个神器可以轻松的实现这一点。在依赖注入的时候,对象的依赖关系交给框架去管理,并且它自动注入到需要他们的对象中。AOP可以帮助我们实现横切,把服务横向加入我们的系统中!