Maven
maven作用:用于统一管理第三方制作好的Jar
maven项目的坐标
<groupId>org.example</groupId>
<artifactId>EwsySpringA</artifactId>
<version>1.0-SNAPSHOT</version>
阿里镜像
--------xml
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
---------
启动SpringBoot步骤
(1) 创建一个主类,并使用@SpringBootApplication注解
(2) SpringApplication.run(类对象,args)
@SpringBootApplication
public class EasySpringAApplication {
//项目启动类 运行起该类就运行了整个项目
public static void main(String[] args) {
SpringApplication.run(EasySpringAApplication.class,args);
}
}
Spring 常用注解
1. 组件扫描注解
@Controller:用于Web层,标识一个类为控制器组件,处理HTTP请求。
@RestController:组合了@Controller和@ResponseBody,用于RESTful Web服务,方法返回值直接作为响应体。
@Service:用于业务逻辑层,标识一个类为服务层组件,处理业务逻辑。
@Repository:用于数据访问层(DAO),标识一个类为持久层组件,处理数据访问。
@Component:通用组件注解,标识一个类为Spring组件,适用于其他功能类。
2. 配置注解
@Bean:在配置类中使用,定义一个Spring Bean。
@Configuration:标识一个类为配置类,包含Spring Bean的定义。
3. 其他常用注解
@Autowired:自动装配Bean,按类型注入。
@Qualifier:与@Autowired一起使用,按名称注入。
@Value:注入配置文件中的属性值。
@Scope:定义Bean的作用域,如单例(singleton)或原型(prototype)。
@PostConstruct:在Bean初始化后执行的方法。
@PreDestroy:在Bean销毁前执行的方法。
@RequestMapping(("/访问路径") ):映射HTTP请求到控制器方法。
@GetMapping、@PostMapping、@PutMapping、@DeleteMapping:分别映射GET、POST、PUT、DELETE请求。
@RequestParam:绑定请求参数到方法参数。
@PathVariable:绑定URL路径变量到方法参数。
@RequestBody:绑定请求体到方法参数。
@ResponseBody:将方法返回值作为响应体。
@Transactional:声明式事务管理,标识一个方法或类需要事务支持。
Spring Bean的作用域:
* singleton 单例模式 (一个对象)---默认作用域
* prototype 原型模式 (每次需要都来一个新的对象)
* request web项目中请求作用域,每次请求都会创建一个新的对象
* session 每次会话都会创建一个新的对象,
* (第一次访问服务器开始,默认30分钟超时断掉session,安全退出断掉session)
* GlobalSession (分布式集群) 全局的
springbean的生命周期
1)根据配置情况调用 Bean 构造方法或工厂方法实例化 Bean。
2)利用依赖注入完成 Bean 中所有属性值的配置注入。
3) 如果 Bean 实现了 BeanNameAware 接口,则 Spring 调用 Bean 的 setBeanName() 方法传入当前 Bean 的 id 值。
4)如果 Bean 实现了 BeanFactoryAware 接口,则 Spring 调用 setBeanFactory() 方法传入当前工厂实例的引用。
5) 当一个 Bean 实现了 ApplicationContextAware 接口并在 Spring 容器中被实例化时,Spring 容器会自动调用该 Bean 的 setApplicationContext 方法,并将应用程序上下文ApplicationContext作为参数传递进来
6)BeanPostProcessor 是 Spring 框架中的一个重要接口,它允许开发者在 Spring 容器创建和初始化 bean 的过程中,对 bean 进行自定义处理。这包括在 bean 实例化之后、属性设置之前(postProcessBeforeInitialization 方法),以及在 bean 初始化之后(postProcessAfterInitialization 方法)执行自定义逻辑 Spring 容器在创建和初始化每一个 bean 时,都会调用 CustomBeanPostProcessor 中的这两个方法,允许你进行自定义处理
在这一步执行的是postProcessBeforeInitialization方法
7)InitializingBean 是 Spring 框架中的一个接口,它定义了一个 afterPropertiesSet 方法。当 Spring 容器创建 bean 的所有属性都被设置完成后,会调用这个方法。
8)如果在配置文件中通过 init-method 属性指定了初始化方法,则调用该初始化方法。
initMethod指定的方法必须是void类型,并且不接受任何参数
9)如果 BeanPostProcessor 和 Bean 关联,则 Spring 将调用该接口的初始化方法 postProcessAfterInitialization()。此时,Bean 已经可以被应用系统使用了。
10)如果在 <bean> 中指定了该 Bean 的作用范围为 scope="singleton",则将该 Bean 放入 Spring IoC 的缓存池中,将触发 Spring 对该 Bean 的生命周期管理;如果在 <bean> 中指定了该 Bean 的作用范围为 scope="prototype",则将该 Bean 交给调用者,调用者管理该 Bean 的生命周期,Spring 不再管理该 Bean。
@Scope(scopeName =ConfigurableBeanFactory.SCOPE_PROTOTYPE )
@Scope(scopeName =ConfigurableBeanFactory.SCOPE_SINGLETON)
11)如果 Bean 实现了 DisposableBean 接口,则 Spring 会调用 destory() 方法将 Spring 中的 Bean 销毁;如果在配置文件中通过 destory-method 属性指定了 Bean 的销毁方法,则 Spring 将调用该方法对 Bean 进行销毁。