先介绍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注解,注解进入成熟时代
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注解,简化了事务的 *** 作
在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配置
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)