一、前奏
springboot讲究的是零配置,所以在学习之前我们先看看spring的java配置。
二、Spring 4.x的新特性
1.spring中配置历程(说的是我自己使用的历程哦)
- spring早期版本中比如我最初学习的时候是spring2.5,其中使用的是xml配置,但是此时已经支持部分使用注解,所以一般来讲有个说法是,应用的基本配置使用xml,业务配置用注解。(spring1.x我没用过,直接跳过了,哈哈)
- spring3.x中,我也是按照应用配置使用xml,业务配置用注解。
- spring4.x中,我才开始使用java配置的方式,说白了我也就是最近才开始使用这玩意。因为朋友给了我一个项目,我拿到手之后首先看了下web.xml,卧槽的,怎么啥配置都没有,最后才看到是使用java配置的方式,因为前段时间在搞dubbo,所以就没怎么去关注spring的特性,虽然我知道springboot的零配置。
2.spring模块
spring使用简单的POJO(Plain Old java Object,即无任何限制的普通Java对象)进行企业级开发,每一个被Spring管理的Java对象都称之为Bean。
三、spring注解
1、声明Bean的注解(使用在类上)
- @Component组件,没有明确的角色。
- @Service在业务逻辑层(service)使用。
- @Repository在数据访问层(dao)使用。
- @Controller 在展现层使用(请求接口的入口类)。
2、注入Bean的注解(使用在属性上,代表注入该类) - @Autowired:Spring提供的注解。
- @Inject:JSR-330提供的注解。
- @Resource:JSR-250提供的注解。
3、声明配置类(使用在类上) - @Configuration:声明当前类是一个配置类,相当于Spring中的xml文件。
4、指明扫描包的类(使用在类上) - @ComponentScan:使用这个注解指定包,然后Spring会自动扫描包下的所有@Controller , @Service,@Repository,@Component的类,并注册为Bean。
5、指明返回一个Bean - @Bean:Bean注解在方法上,声明当前方法的返回值为一个Bean。
6、面向切面的相关注解 - @Aspect:声明是一个切面。
- @PointCut:声明切点。
- @After:声明一个建言,并使用@PointCut定义的切点。
- @Before:声明一个建言,此建言直接使用拦截规则作为参数。
- @Around:声明一个建言,环绕通知需要携带ProceedingJoinPoint类型的参数。
- @AfterThrowing:抛异常之后。
- @AfterReturning:方法正常结束后执行。
- @Order:指定切面的优先级,值越小优先级越高。
7、Bean创建的方式 - @Scope("singleton"):代表全容器中只有这一个实例。
- @Scope("Prototype"):每次调用新建一个实例。
8、Spring EL表达式 - @Value:注入普通字符串。
- @Value("#{SystemProperties['os.name']}"):注入操作系统属性。
- @Value("#{ T(java.lang.Math).random() * 100.0 }"):注入表达式结果。
- @Value("#{demoService.id}"):注入其他Bean属性。
- @Value("classpath:com/mouse/moon/test.txt"):注入资源文件。
- @Value("http://www.baidu.com"):注入网址资源。
- @Value("${book.name}"),需要跟下面一个注解联合使用。
- @PropertySource("classpath:com/mouse/moon/test.properties"):指定文件地址。
8、Spring Bean初始化及销毁 - @PreDestory:在Bean销毁之前执行。
- @PostConstruct:在Bean销毁之后执行。
- @Bean(initMethod="init",destoryMethod="destory"):使用在类上,然后此类中需要要init()方法和destory()方法。
9、设置不同的开发环境 - @Profile:不同的环境下使用不同的配置。然后通过设定Enviroment的ActiveProfiles来设定当前context需要使用的配置环境
10、异步方法 - @EnableAsync:开启异步任务支持。
- @Async:表明改方法是个异步方法
11、计划任务 - @Scheduled:声明该方法是计划任务。
- @EnableScheduling:注解开启对计划任务的支持。
12、基于条件创建Bean - @Conditional:根据满足某一个特定条件创建一个特等的Bean.
未完继续!!!