前言
由于以前一直从事中间件,框架开发,很少涉及到前端,所以对前端和spring框架不是很熟悉,现在设计得中间件需要一些前端展示,所以现在开始重头学习一下Spring。写在此处,可能更多的原因是便于随时查看
以前我一直没有明白spring的IOC和AOP的作用有多少,感觉除了使应用复杂之外,好像没有看到什么用处。看到spring中一对配置文件,还有一大堆注解,都不知道是干什么的,所以当初也没有研究下去的意愿。因为感觉,我没有用IOC和AOP,程序一样运行得很好,扩展性,可测试性,可维护性都非常高,而且速度非常快。所以总是感觉,对于设计良好的程序,使用Spring的IOC和AOP只会增加运行负担和维护开销。
Spring简介
bean的扫描、注册
1、xml配置(schema)方式,手动扫描
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<!-- 定义注册User的bean,唯一名称为user -->
<bean id="user" class="com.test.User"></bean>
<!-- 定义注册Dept的bean,唯一名称为dept -->
<bean name="dept" class="com.test.Dept"></bean>
</beans>
2、注解方式,自动扫描
现在spring的xml文件中开启注解扫描以及配置扫描的范围:标签
<context:component-scan base-package="com.test"></context:component-scan>
添加扫描过滤:
<context:component-scan base-package="com.test">
<!-- 只扫描com.test包及子包下的注解为Service的类,而过滤注解为Controller的类 -->
<context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
注解bean,以便被Spring容器扫描并实现bean注册
添加@Component,
@Repository,@Service,@Controller等注解都是具体的Component,
@Component是一个通用注解,可用于任何bean
@Repository,@Service,@Controller是更有针对性的注解,A candidate for auto-detection via classpath scanning.
@Repository通常用于注解DAO类,即持久层,Data manager / storage, ties to enterprise apps (DAO, DDD)
@Service通常用于注解Service类,即服务层,Meant to provide business logic – a (stateless) facade.
@Controller通常用于Controller类,即控制层(MVC),A web controller, popularized by Spring MVC.
@Controller
public class TestAnnotationController {…}
注意:注解方式bean的名称可以在注解时手动指定,比如@Controller(“testAnnotationController”),如果不指定则bean名称是由BeanNameGenerator生成的,格式为类名称首字母小写其它不变
作者:glowd
原文:https://blog.csdn.net/zengqiang1/article/details/54600076
版权声明:本文为博主原创文章,转载请附上博文链接!