spring注解注入IOC

本文详细介绍了如何在Spring Boot中使用自定义注解创建Bean对象和第三方Bean,包括@Autowired和@Value的用法,以及初始化和销毁方法的注解。通过实例演示了如何进行对象注入和生命周期管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.创建Bean对象的注解

<1>配置自定义Bean对象注解

@Component、@Controller、@Service、@repository
用法:写在类上,
例如:@Service 或者 @Service(“userService”)
作用:将该类交给Spring创建对象保存到Spring容器中,如果没有指定名称,类名首字母小写就是默认名称。

<2> 配置第三方Bean对象注解

@Bean
用法:写在配置类方法上。
例如: @Bean 或者 @Bean(“dataSource”)
作用:将方法的返回值对象保存到Spring容器,如果没有指定名称,方法名首字母小写就是默认名称。

2.依赖注入的注解

<1>注入对象类型数据

@Autowired
用法:写在成员变量/set方法/构造方法/方法参数列表中
作用:按照类型自动装配对象,如果同类型对象有多个,默认按照变量名和Bean的名称匹配,推荐使用@Qualifier指定要匹配的Bean的名称。
@Qualifier(""):指定要匹配的Bean的名称,要和@Autowired配合一起使用,不能单独使用。
<2>注入普通类型数据

<2>注入普通类型数据

@Value(""):注入普通类型数据,支持EL表达式

3.-1-和-2-两者代码示例

import com.itheima.dao.UserDao;
import com.itheima.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

@Service("userService")
public class UserServiceImpl implements UserService {
    @Value("20")
    private String num;
    @Autowired//本质是将容器中的对象直接赋值[前提:容器中要先添加该bean对象]
    //放到成员变量 底层:暴力反射
    //放到构造方法 可用
    //放到set方法 可用
    //方法参数列表中 可用
    @Qualifier("userDao")//当UserDao有两个同类型的属性,用此注解指定id
    private UserDao userDao;

    @Override
    public void save() {
        System.out.println("UserServiceImpl save is running..."+num);
        userDao.save();
    }
}

4.初始化和销毁方法的注解

@Repository("userDao")
public class UserDaoImpl  implements UserDao {
    @Override
    public void save() {
        System.out.println("dao中的save方法执行了...");
    }

    @PostConstruct//初始化方法注解
    public void init(){
        System.out.println("init初始化..........");
    }
    @PreDestroy//销毁方法注解
    public void destroy(){
        System.out.println("destroy销毁..........");
    }
}

5.测试-3-和-4-实例测试类

    @Test
    public void test1(){
        //需求:从spring容器中获取userService对象,并调用save方法
        //1 创建spring容器对象
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
        //2 从spring容器中获取userService对象
        //UserService userService = (UserService) ac.getBean("userService");
        //UserService userService = ac.getBean(UserService.class);
        UserService userService = ac.getBean("userService", UserService.class);
        //3 调用save方法
        userService.save();
    }


打印结果:
-------------------------------------------------------
init初始化..........
UserServiceImpl save is running...20
dao中的save方法执行了...

注:由于destroy销毁方法即执行方法时jvm已经关闭,所以未打印;需要打印则接收类要换成ClassPathXmlApplicationContext,使用里面的close()方法关闭

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陪雨岁岁年年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值