BeanFactory和ApplicationContext有什么区别?
BeanFactory和ApplicationContext是Spring的两大核心接口,都可以当做Spring的容器。其中ApplicationContext是BeanFactory的子接口。
①BeanFactroy采用的是延迟加载形式来注入Bean的,即只有在使用到某个Bean时(调用getBean()),才对该Bean进行加载实例化。
②ApplicationContext,它是在容器启动时,一次性创建了所有的Bean。这样,在容器启动时,我们就可以发现Spring中存在的配置错误,这样有利于检查所依赖属性是否注入。
请解释Spring Bean的生命周期?
实例化Bean:
设置对象属性(依赖注入):
Spring 框架中都用到了哪些设计模式?
(1)工厂模式:BeanFactory就是简单工厂模式的体现,用来创建对象的实例;
(2)单例模式:Bean默认为单例模式。
(3)代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术;
(4)模板方法:用来解决代码重复的问题。比如. RestTemplate, JmsTemplate, JpaTemplate。
Spring的注解有哪些?
@Component 组件
@Service 在业务逻辑层使用(service层)
@Repository 在数据访问层使用(dao层)
@Controller 在展现层使用,控制器的声明
@Configuration 声明当前类为配置类,相当于xml形式的Spring配置(类上)
@Bean 注解在方法上,声明当前方法的返回值为一个bean,替代xml中的方式
@ComponentScan 用于对Component进行扫描
@Autowired(标识:自动装配对象【根据byType进行装配】@Autowired注解的required
参数默认是true,表示开启自动装配)
@Resource(标识:自动装配对象【根据byName进行装配,如果找不到name则根据byType进行装配)
@RestController(标识:整个控制器的接口返回的为json格式数据)
@RequestMapping(标识:请求访问地址)
@RequestParam(标识:请求参数地址)
SpringBoot的注解有哪些?
@SpringBootApplication 是SpringBoot项目的核心注解,目的是开启自动配置
@Configuration 配置类
@EnableAutoConfiguration 开启自动装配
@ComponentScan 开启组件扫描
Spring JPA的注解有哪些?
@Entity(标识:实体)
@TableName(标识:表名)
@Id(标识:该属性为主键)
@Column(标识:数据库字段名)
@Transient(标识:忽略将此属性加入到数据库,不创建表字段)