Spring4.x的体系结构
1.IOC
它将类与类之间的依赖剥离出来,实现通过注解配置的方式进行依赖类之间的创建、拼接、管理和获取等工作。
2.AOP
启用一个代理类,对类的功能进行加强的横切逻辑思想。
3.数据访问与集成
集成了springJDBC,整合持久层框架。
4.web远程操作
例如上传文件等功能
5.web远程访问
例如springMVC
6.webSocket
Spring4.0新特性
1.全面支持jdk8
1.Lambda表达式
2.LocalDate
@GetMapping("/")
public void test(@@DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate localDate) {
//pass
}
3.重复注解支持
/**
* @author limc
*/
public class TestController {
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@interface Filters {
Filter[] value();
}
@Repeatable(Filters.class) // 保存注解的容器
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@interface Filter {
String value();
}
@Filter("123")
@Filter("456")
@Filter("789")
class Main{
}
public static void main(String[] args) {
Filters p2=Main.class.getAnnotation(Filters.class);
for(Filter t:p2.value()){
System.out.println(t.value());
}
}
}
4.Optional<>
private final Optional<ArticleService> op;
@Autowired
public ArticleController(Optional<ArticleService> op) {
this.op = op;
}
public void test() {
op.ifPresent(service -> service.addOneArticle(new UserEntity(), new JSONObject()));
}
2.核心容器增强
1.泛型依赖注入
class BaseDao<T>{
}
@Component
class UserDao extends BaseDao<User> {
}
@Component
class TypeDao extends BaseDao<Type> {
}
class BaseService<T> {
@Autowired
BaseDao<T> baseDao;
public void get() {
System.out.println(baseDao);
}
}
class UserService extends BaseService<User> {
}
class TypeService extends BaseService<Type> {
}
public static void main(String[] args) {
@Autowired
UserService userService;
@Autowired
TypeService typeService;
}
2.懒加载
@Lazy
容器启动时不注入,使用时在注入
3.List注入
//可以根据@order注解 进行排序
@Autowired
List<UserService> list
3.支持Groovy定义Bean
4.Web增强
```java
// 引入@RestController
@RestController 默认不需要加@ResponseBody
// 引入AsynRestTemplate
异步调用
5.支持WebSocket
6.测试增强
@Sql
// TODO
7.其他
增强持久化处理
增强动态语言支持
增强多线程并发处理
总结
IOC和AOP是spring所依赖的根本。
--------------------------------------------------------华丽的分割线-------------------------------------------------
以上只是本人观点,如有错误,欢迎指正。