spring学习-2 配置类

7、使用注解开发

使用注解的前提

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">

    <context:annotation-config/>

</beans>
  1. 引入约束

xmlns:context="http://www.springframework.org/schema/context"

		http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd"
  1. 导入AOP包

  1. 导入支持

 <context:annotation-config/>
  1. 指定要扫描的包,这个包下的注解会生效

<context:component-scan base-package="com.Lee.pojo"/>

1、bean

@component:相当于<bean id="user" class="com.Lee.pojo.User"/>

组件,放在类上,表示这个类被Spring管理了,其实就是bean

2、值注入

@Value:相当于<property name="name" value="Lee"/>

简单类型值注入,放在需要注入的属性或属性的setter方法上

3、衍生注解

@Component的衍生注解

  • Dao:@Repository

  • Service:@Service

  • Controller:@Controller

四个注解作用相同,将类注入到Spring容器中,相当于bean

4、作用域

@Scope("singleton")

8、使用javaConfig实现配置

步骤:

  1. 需要注入的pojo对象

public class User {
    private String name;

    public String getName() {
        return name;
    }

    @Value("Lee")
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                '}';
    }
}
  1. 配置类——注册bean

@Configuration
@ComponentScan("com.Lee.pojo")
public class javaConfig {
    
    @Bean
    public User getUser(){
        return new User();//返回要注入到bean的对象
    }
}
  • @Configuration:代表这是个配置类,等价于之前写的applicationContext.xml

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component//注意!
public @interface Configuration {
    @AliasFor(
        annotation = Component.class
    )
    String value() default "";

    boolean proxyBeanMethods() default true;
}

其继承@Component,表明这个类,也会将被注解的类注册到Spring容器中

  • ComponentScan("com.Lee.pojo"):指定这个配置类要扫描的包,等价于<context:component-scan base-package="com.Lee.pojo"/>

  • @Bean:表明这个方法是一个bean,使用在方法上

  • 方法名就是bean的id

  • 返回值相当于bean中要设置的class属性

  • 就是xml文件中类注册bean的操作,等价于<bean id="bean名字" class="全类名"/>

  1. 测试类

    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(javaConfig.class);
        User user = (User) context.getBean("getUser");
        System.out.println(user.getName());
    }
  • ApplicationContext context = new AnnotationConfigApplicationContext(javaConfig.class);

  • 加载配置文件,实例化bean

  • 相当于ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

  • 注意:ClassPathXmlApplicationContext()方法中的参数是字符串,是需要加引号的

  • 而AnnotationConfigApplicationContext()方法中的参数是class文件,是不能加引号的

  1. 多个配置类

新建一个config2的配置类,内部配置和javaConfig一样

在javaConfig中使用@Import()注解将config2引入到javaConfig中

@Configuration
@ComponentScan("com.Lee.pojo")
@Import(config2.class)
public class javaConfig {

    @Bean
    public User getUser(){
        return new User();
    }
}

@Import(config2.class):参数是需要引入的配置类的class文件

小结

Spring的三个核心:

所有的类都需要装配到bean中

所有的bean都需要Spring容器去取

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值