ssm学习笔记(尚硅谷) day1

发布于:2025-05-30 ⋅ 阅读:(18) ⋅ 点赞:(0)

创建新项目

在这里插入图片描述

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;

    @Autowired
    void setCar(Car car) {
        this.car = car;
        System.out.println("User 自动注入");
    }

    public User(){
        System.out.println("User 构造器");
    }

    @PostConstruct
    public void postConstruct(){
        System.out.println(" @PostConstruct");
    }

    @PreDestroy
    public void preDestroy(){
        System.out.println("@PreDestroy");
    }


    public void initUser(){
        System.out.println("User@Bean初始化");
    }

    public void destroyUser(){
        System.out.println("User@Bean销毁");
    }

    @Override
    public void destroy() throws Exception {
        System.out.println("Initializing Bean == destroy");
    }

    @Override
    public 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();
    }
}