认识SpringBoot

认识SpringBoot,第1张

前言

先介绍Spring发展节点,然后引出SpringBoot的由来

1.Spring注解编程的发展过程
  • 2004年Spring1.0版本发布,@Transaction注解,开启注解启蒙时代
  • 2006年Spring2.0版本发布,@Required @Repository @Autowired @Service等注解,注解编程过度时期
  • 2009年Spring3.0版本发布,@Configuration @ComponentScan @Import等注解,进入注解黄金时代
  • 2013年Spring4.0版本发布,@Conditional @EventListener等注解,注解开发进入完善时代
  • 2017年Spring5.0版本发布,@Indexed注解,注解进入成熟时代
1.1 Spring 1.x

2004年3月,Spring1.0正式发布,提供了IoC和Aop及XML配置的方式
在Spring1.x版本中提供的纯XML配置的方式,也就是在该版本中我们必须提供xml的配置文件,在xml文件中通过标签来配置需要被IoC容器管理的Bean对象

applicationContext.xml


DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="userService" class="com.maocai.service.UserService" />
beans>

UserService.java

package com.maocai.service;

public class UserService {
    public void say() {
        System.out.println("hi spring v1.2.9");
    }
}

调试代码

package com.maocai;

import com.maocai.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class StartApp {

    public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService userService = (UserService) ac.getBean("userService");
        userService.say();
    }
}

输出结果

在Spring1.2版本提供了@Transaction注解,简化了事务的 *** 作

Spring 2.x

在2006年10月Spring2.0版本问世,在2.x版本中新增了很多的注解;在Spring2.5之前新增的有@Required @Repository @Aspect,同时也扩展了XML的配置能力,提供了第三方的扩展标签

@Required

@Required 注解主要用在 setter 方法上,它表示该 setter 方法的属性必须要在配置时注入值。否则会飘红

package com.maocai.service;

import org.springframework.beans.factory.annotation.Required;

public class UserService {

    private String userName;
    
    public String getUserName() {
        return userName;
    }
    @Required
    public void setUserName(String userName) {
        this.userName = userName;
    }
}

设置属性值后就没有提示错误了


<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 class="com.maocai.service.UserService">
        <property name="userName" value="maogong" />
    bean>
beans>

@Repository

@Repository对应数据库的访问层,注解在Spring2.0就提供了

Spring2.5之后

在2007年Spring更新到2.5版本,新增了很多常用的注解,大大的简化配置的 *** 作

注解说明
@Autowird依赖注入
@Qualifier配合@Autowired注解使用
@Component声明组件
@Service声明业务组件
@Controller声明控制层组件
@RequestMapping声明请求对应的处理方式

在这些注解的作用下,我们可以不用再xml文件中去注册对应的bean,我们只需指定扫描路径即可,然后再对应的类文件加上相关的注解,大大的简化了我们配置及维护工作
案例如下:

applicationContext.xml文件中指定扫描路径


<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">

    <context:component-scan base-package="com.maocai" />
beans>

持久层代码:

@Repository
public class StudentDao {

    public void query() {
        System.out.println("dao select ... ");
    }
}

业务层代码:

@Service
public class StudentService {

    @Autowired
    private StudentDao studentDao;

    public void query() {
        studentDao.query();
    }
}

控制层代码:

@Controller
public class StudentController {

    @Autowired
    private StudentService studentService;

    public void query() {
        studentService.query();
    }
}

客户端测试代码:

public class Client {

    public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext2.xml");
        StudentController action = ac.getBean(StudentController.class);
        action.query();
    }
}

虽然在Spring的2.5版本提供了很多新注解,大大的简化了我们的开发工作量,但是依然没有摆脱XML配置

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/922298.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存