spring IOC 使用注解方式配置

spring·基于注解的方式IOC操作bean管理

1 配置maven依赖

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.2.9.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.20</version>
    </dependency>
</dependencies>

2 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"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            https://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            https://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/aop
            https://www.springframework.org/schema/aop/spring-aop.xsd">
    
    	<!--开启组件扫描>
        <context:annotation-config/>
    
        <!--要写的内容-->
       
    </beans>
    

    3 在要创建类的上面添加注解@component

    • @Component, @Service, @Controller, @Repository作用是一样的
    • 注解里面的value属性值可以省略不写

    • 默认值是类名称,首字母小写

      如:UserService -- userService

    • 在xml配置文件上配置bean文件

    4 组件扫描的细节

    • 在xml文件配置

    • use-default-filter="false",表示不使用默认的filter,自己设置扫描内容

      <context:component-scan base-package="com.atguigu" use-defaultfilters="false">
       <context:include-filter type="annotation"
      
      expression="org.springframework.stereotype.Controller"/>
      </context:component-scan>
      
      

      意思是:在com.atguigu这个包中,默认不扫描,扫描类型是注解,注解是@Controller下的类

       

    • exclude-filter:设置那些内容不进行扫描

      <context:component-scan base-package="com.atguigu">
       <context:exclude-filter type="annotation"
      
      expression="org.springframework.stereotype.Controller"/>
      </context:component-scan>
      

    5 基于注解方式实现属性注入

    1. @Autowired
    2. @Qualifier
    3. @Resource
    4. Value

     

    • @Autowired:根据属性类型进行自动装配

      操作步骤:1 用注解的方式创建对象

      2 在要实现属性注入的对象上面添加@Autowire注解

    • @Qualifier:根据名称进行注入

      @Qualifier(value = "属性名称")

    • @Resource:可以根据类型注入,可以根据名称注入

6 完全注解开发

1 创建一个配置类

2 在类上面写注解

@Configuration //作为配置类,替代 xml 配置文件
@ComponentScan(basePackages = {"com.atguigu"})
public class SpringConfig {
}

3 创建测试类

将ClassPathXMLConfigApplication改写程AnnotationConfigApplication

@Test
public void testService2() {
 //加载配置类
 ApplicationContext context
 = new AnnotationConfigApplicationContext(SpringConfig.class);
    
    
}

 

上一篇:Java练习(七):Spring应用之DI (简单的StudentDI工程)


下一篇:Spring 笔记 - 06 DI 依赖注入