目录
一,spring注解
spring注解的key 也就是id首字母小写
- @Service("userService")注解是告诉Spring,当Spring要创建UserServiceImpl的的实例时,bean的名字必须叫做"userService",这样当Action需要使用UserServiceImpl的的实例时,就可以由Spring创建好的"userService",然后注入给Action。
- @Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。
- @Component 将当前的类交给spring容器管理 对象的创建是由spring通过反射机制自动创建对象
- @ComponentScan(包扫描):扫描指定路径下的注解 当spring容器启动时 根据指定包路径扫描其子孙包 如果不扫描 即使有上面的@Component注解 你扫描不到依旧会报错
- @Bean 将自己方法的返回值交给Spring容器管理
- @Scope:@Scope("singleton")默认值是单例模式,@Scope("prototype") 多例模式,如果想多例转单例 可以把@Scope("prototype")删掉,只留@Bean;或者输入@Scope("singleton")
- @Lazy 添加表示为懒加载
- @PostConstruct 在对象创建之后立即调用
- @PreDestroy:对象消亡时调用
- @Autowired:说明:在对象中如果需要使用属性注入。一般使用@Autowired 功能:可以将Spring容器中的对象,自动注入到属性中 注入方式:(1)默认按照类型注入:如果注入的属性是接口,则自动注入实现类 (2)按照名称注入(key):一般不用 重要前提:如果需要依赖注入,则对象必须交给Spring容器管理
- @Quealifier:不能单独使用 如果使用必须配合@Autowired 根据key注入
- @Aspect:标识该类是一个切面
- @EnableAspectJAutoProxy :启用的意思启用切面的注解 相当于让你的切面方法生效
- @Transaction:当标注在类上的时候:表示给该类所有的 public 方法添加上 @Transaction 注解当标注在接口上的时候:Spring 建议不要在接口或者接口方法上使用该注解,因为这只有在使用基于接口的代理时它才会生效。像 CGLib 动态代理采用继承的方式将会导致 @Transactional 注解失效当标注在方法上的时候:事务的作用域就只在该方法上生效,并且如果类及方法上都配置 @Transaction 注解时,方法的注解会覆盖类上的注解
- @RequestBody: @RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);而最常用的使用请求体传参的无疑是POST请求了,所以使用@RequestBody接收数据时,一般都用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。
二,利用工厂模式创建对象
(一),业务说明
- spring中管理的对象大部分可以通过new或者反射进行创建对象,有些对象处于特殊原因不能直接实例化 就需要考虑是否通过工厂模块实现
(二),创建工厂模式
-
package com.jt.factory; import org.springframework.beans.factory.FactoryBean; import org.springframework.stereotype.Component; import java.util.Calendar; @Component("calendar") public class CalenderFactory implements FactoryBean<Calendar> { @Override public Calendar getObject() throws Exception { return Calendar.getInstance(); } @Override public Class<?> getObjectType() { return Calendar.class; } }