当前位置: 首页 > news >正文

ssm学习笔记(尚硅谷) day1

创建新项目

在这里插入图片描述

maven的聚合

1. 标记父类项目

在这里插入图片描述
标签<packaging>pom</packaging>表示将该项目标记为父类项目,必须添加。

以下是标签<packing>的常见取值
在这里插入图片描述
groupId在pom.xml中,可以从pom.xml直接修改。

2. 通过<modules>添加子项目。

在这里插入图片描述
在这里插入图片描述

导入第三方类

在类上面标注@Import(类名.class)可以导入第三方类,需要注意的是Bean是单实例对象,只写一次就导入进入了,多写并不会重复导入。
在这里插入图片描述

注册组件的各种注释

在这里插入图片描述

@Scope

在这里插入图片描述

@Conditional

在这里插入图片描述
在这里插入图片描述
例子:我创建了一个WindowsCondition对象,
在这里插入图片描述
在某个Bean上面使用@Conditonal注释,表示不是windows系统不能使用
在这里插入图片描述

@AutoWired

如果在UserController中不加@AutoWired注释
在这里插入图片描述
在这里插入图片描述
通过容器获取到的UserController里面的UserService是空的

在这里插入图片描述
添加之后不为空
在这里插入图片描述

可能会出现的问题
在这里插入图片描述
@Qualifier 可以精确指定要使用的组件名

@Resource

和@Autowired都可以自动注入
区别 @Resource具有更强的通用性,但不支持注入为空,@Autowired可以把参数required改为false

@Aware

在这里插入图片描述
说人话就是可以调用底层的东西放到代码上。箭头指的是底层的相关参数,可以通过注入放到内部定义的组件中。
在这里插入图片描述

@Value

如果想在以下属性类的属性注入的时候,用@Autowired无法注入,就需要用到Value了
在这里插入图片描述
在这里插入图片描述
以下是取不到的默认值,中间冒号隔开
在这里插入图片描述

@PropertySource

引用properties来给参数赋值
需要注意的是以下写法不要随意添加空格(应为cat.age=123),如下图,age就会出现错误,应赋值12
在这里插入图片描述
在这里插入图片描述

@Profile (多环境)

激活环境,通过坏境选择对应的Bean组件,在applicationproperties中配置相对应的环境。
在这里插入图片描述
在这里插入图片描述

ClassPathXMLApplicationContext

在这里插入图片描述
就是用xml文件配置bean
在这里插入图片描述
在resources下创建ioc.xml,配置如下
在这里插入图片描述
最后两行一个是bean扫描,把文件下的bean扫描进去,一个是引入外部文件。需要注意的是,默认情况下application.properties是不被引用的。

生命周期

initMethod destroyMethod

在这里插入图片描述
在这里插入图片描述
User部分的代码
user板块
UserConfig的代码
在这里插入图片描述

InitializingBean, DisposableBean

这是两个接口
在这里插入图片描述
在这里插入图片描述
经过执行后发现
在这里插入图片描述
在这里插入图片描述

@PostConstruct,@PreDestroy

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
源代码
User.java

package com.atguigu.sping01ioc.bean;import jakarta.annotation.PostConstruct;
import jakarta.annotation.PreDestroy;
import lombok.Data;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;@Data
public class User implements InitializingBean, DisposableBean {private String username;private String password;private Car car;@Autowiredvoid setCar(Car car) {this.car = car;System.out.println("User 自动注入");}public User(){System.out.println("User 构造器");}@PostConstructpublic void postConstruct(){System.out.println(" @PostConstruct");}@PreDestroypublic void preDestroy(){System.out.println("@PreDestroy");}public void initUser(){System.out.println("User@Bean初始化");}public void destroyUser(){System.out.println("User@Bean销毁");}@Overridepublic void destroy() throws Exception {System.out.println("Initializing Bean == destroy");}@Overridepublic void afterPropertiesSet() throws Exception {System.out.println("Initializing Bean == afterPropertiesSet");}
}

UserConfig.java

package com.atguigu.sping01ioc.config;import com.atguigu.sping01ioc.bean.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class UserConfig {@Bean(initMethod = "initUser",destroyMethod = "destroyUser")public User user(){return new User();}
}

相关文章:

  • 从融智学视角对决策态度进行定理级提炼,结合三标准数学建模
  • 微服务测试困境?Parasoft SOAtest的自动化、虚拟化与智能分析来袭!
  • 代码随想录打卡|Day51 图论(dijkstra(堆优化版)精讲、Bellman_ford 算法精讲)
  • 【前端】Twemoji(Twitter Emoji)
  • LeetCode 215:数组中的第K个最大元素 - 两种高效解法详解
  • 力扣-最长回文子串
  • HTB-Planning
  • PnP(Perspective-n-Point)算法 | 用于求解已知n个3D点及其对应2D投影点的相机位姿
  • Python基础教程:控制流与函数入门 - 第4-6天
  • 【网络入侵检测】基于Suricata源码分析FlowWorker实现
  • 智能仓储落地:机器人如何通过自动化减少仓库操作失误?
  • DeepSeek - 尝试一下GitHub Models中的DeepSeek
  • EasyRTC音视频实时通话助力微信小程序:打造低延迟、高可靠的VoIP端到端呼叫解决方案
  • 【ConvLSTM第二期】模拟视频帧的时序建模(Python代码实现)
  • Text-to-SQL评估体系:从Spider 1.0数据集到2.0框架的跨越与革新
  • HOW - 简历和求职面试宝典(八)
  • 【春秋云镜】CVE-2022-26965 靶场writeup
  • 江西某石灰石矿边坡自动化监测
  • 【Hive 运维实战】一键管理 Hive 服务:Metastore 与 HiveServer2 控制脚本开发与实践
  • LeetCode Hot100(多维动态规划)
  • 深圳东莞网站开发/成都门户网站建设
  • 哪家公司设计网站好/新闻源发稿平台
  • 绑定ip地址的网站/自动点击竞价广告软件
  • 网站备案号超链接怎么做/去除痘痘怎么有效果
  • 做网站好一点的公司/网络营销的成功案例
  • 个人网站模板怎么用/长春seo优化