Spring 使用注解实现依赖注入

    科技2025-11-20  9

    Spring 使用注解实现依赖注入

    依赖注入:本质就是对类中的变量进行赋值操作!

    spring 使用注解标注类,spring容器通过包扫描注解,将这些标注了spring注解的类管理起来。

    1、@service注解:

    ​ 标注在一个service层的业务类上,告诉spring容器这是一个service层业务类,spring就会自动创建这个类的实例,在你需要这个对象的地方将它注入。

    ​ 标注了这个注解的类在spring容器中生成的对象的id默认是首字母小写的类名,也可以由自己指定@service("name")

    2、@Reposity注解:

    ​ 标注在dao层的类或接口上,告诉spring容器这是一个dao层的类或接口,spring容器自动创建这个类的实例并且管理起来。默认id是类名或接口名首字母小写,可自己指定。

    3、@Component注解:

    ​ 万能注解,它可以标注在你写的任意类上,在类上标注了这个注解,就会将这个类交由spring容器来进行管理,包括创建实例和依赖注入。

    4、@Qualifier注解和Autowired注解:

    ​ 1)@Autowiired注解标注在变量上,让spring容器根据变量的类型来进行自动的依赖注入

    ​ 2)@Qualifier注解标注在变量上,让spring容器根据实例的id来实现依赖注入。是解决Autowired注解的不足的一个注解,因为当spring容器中有两个及以上的相同类型的实例对象时,使用@Autowired注解就无法实现自动注入,spring容器无法知道注入哪一个实例就会报错。这时使用@Qualifier注解根据id来依赖注入就可以解决问题。这两个注解是互相搭配来使用的。

    ​ 3)也可以使用@Value(#{“bean的id”})和@Resource(name=“bean的id”)来实现依赖注入

    案例

    application.xml

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 使用注解方式进行创建对象 1.开启注解扫描 含义:开启注解扫描,指定了 base-package 扫描指定的包,扫描包与子包中所有的类 查看类上是否有指定的注解, 如果类上有指定的注解,那么就创建给类对象, 放到spring容器中 --> <context:component-scan base-package="com.jsu"/> </beans>

    pojo

    public class Person { private name; private age; }

    service

    @Service public class PersonService { //private PersonDao personDao = new PersonDao(); //第一种:@Autowired或者 @Autowired和@Qualifier("bean的id")搭配 //第二种:@Value("#{bean的id}") //第三种:@Resource(name="bean的id值") @Autowired PersonDao personDao ; }

    dao

    @Reposity public interface PersonDao { public void test(); }

    test

    @Test public void test10(){ PersonService personService = (PersonService) context.getBean("personService"); log.debug(personService+" test10"); PersonDao personDao = (PersonDao) context.getBean("personDao");//id为类名首字符小写 log.debug(personDao +" test10"); }
    Processed: 0.011, SQL: 8