上一篇给大家分享了《Web 常见服务器错误代码》,这篇文章整理了一些Java spring的知识。

Sping入门

一些资源

  • sping.io
  • projects.spring.io/spring-framework
  • 其他

    Spring是什么

  • Spring是一个开源框架,为了解决企业应用开发的复杂性而创建的,但是现在已经不止于应用于企业应用
  • 是一个轻量级的控制反转(IoC)和面向切面的容器框架
  • 在Spring上开发应用更简单、方便、快捷,Spring带来了复杂的javaee开发的春天

Spring作用

  • 容器
  • 提供了多种技术支持(JMS MQ支持 UnitTest)
  • AOP(事务管理、日志等)
  • 提供了众多方便应用的辅助类(JDBC Template等)
  • 对主流应用框架(Hibernate等)提供了良好的支持
  • spring是一个一站式的框架;
  • spring主要有两个思想:IOC和AOP;
  • spring的主要的功能是整合其它框架;

    适应范围

  • 构建企业应用(SpringMVC+Spring+Hibernate/mybatis)
  • 单独使用Bean容器(Bean管理)
  • 单独使用AOP进行切面处理
  • 其他的Spring功能,如:对消息的支持等
  • 在互联网中应用
  • 抽象类代表一个概念(例如:飞机),接口代表一种能力(会飞的)

    ioc是反转控制;

  • 指的就是组件和组件之间的关系并不是由任意一端来进行维护的,而有由第三方来维护的;

    第一个Spring程序

  • 创建工程,增加spring支持
  • 在applicationContext.xml文件中定义bean
  • 创建工厂
    创建一个Spring工厂
    BeanFactory factory=new ClassPathXmlApplicationContext("aplicationContxt.xml");
    在工厂重获对象,默认bean是单例模式
    factory.getBean("name");

关于bean的配置

  • 默认bean是单例的(scope=”singleton”),但可以通过 scope属性修改成prototype;
  • spring工厂赋值在init方法之前

    装配方式

  1. 属性装配
  2. 构造方法装配

    装配的内容

  • bean
  • null
  • 集合
  • map
  • ref
  • value

    自动装配的方式(四种)

  • 案例代码下载
     default-autowire = byName
              byType
              constructor
              autoDetect

Annotation的配置方法

  • 案例代码下载

  • 控制层    业务层      持久层

  • action     service      dao

    annotation的配置步骤

  • 在配置文件中增加一个schema ,名子是context;

  • 使用<context:componet-scan >标记来扫描包;

    #这个配置可以自动扫描com.dao,service,com.action三个包中的类,并且实例化
    <context:component-scan base-package="com.dao,service,com.action"></context:component-scan>

    用于创建bean的注解

          @Component    三层都可以  
          @Repository   写dao  (持久层)
    
          eg:
          @Repository("DeptDao")(如果只是@Repository,
          则factory.getBean("deptDaoImpl");中的"deptDaoImpl"和源类名不一样,第一个字母是小写)
          public class DeptDaoImpl implements DeptDao {
              ......
          }
          这样就可以在主函数里获得DeptDaoImpl类的实例:
          DeptDao dao =  (DeptDao) factory.getBean("DeptDao");
    
          @Service      写service (业务层 ) 
          @Controller   写action(控制层)

    用于控制bean的作用域注解,可将单例变成非单例

          @Scope("prototype")
          eg:
          @Controller
          @Scope("prototype")
          public class DeptAction {...}

    用于装配的注解,为类中的其他类属性实例化

              @Autowired  :建议使用
              @Resource
              @Inject
    
              eg:
              @Autowired   //实例化类DeptServise
              DeptServise deptService;

往期精彩文章