使用注解开发

  • 在Spring4之后,要使用注解开发必须保证aop的包导入了

  • 使用注解需要导入context约束,增加注解的支持

  • 属性注入

    @Component
    public class User {
        //@Value("alice")
        public String name;
        @Value("alice")
        public void setName(String name) {
            this.name = name;
        }
    }
    
  • @Component三个衍生注解

    为了更好的进行分层,Spring可以使用其它三个注解,功能一样,目前使用哪一个功能都一样。

    @Controller:web层
    @Service:service层
    @Repository:dao层
    写上这些注解,就相当于将这个类交给Spring管理装配了!

  • 作用域

      @Component
      @Scope("singleton")
      public class User {
          //@Value("alice")
          public String name;
          @Value("alice")
          public void setName(String name) {
              this.name = name;
          }
      }
    

    小结

    XML与注解:

    • XML可以适用任何场景 ,结构清晰,维护方便

    • 注解不是自己提供的类使用不了,开发简单方便

    xml与注解整合开发 :推荐最佳实践

    • xml管理Bean
    • 注解完成属性注入
    • 使用过程中, 可以不用扫描,扫描是为了类上的注解
     <!--指定要扫描的包,这个包下的注解就会生效-->
    <context:component-scan base-package="com.gy"/>
    <!--开启注解的支持-->
    <context:annotation-config/>
    

    作用:

    • 进行注解驱动注册,从而使注解生效

    • 用于激活那些已经在spring容器里注册过的bean上面的注解,也就是显示的向Spring注册

    • 如果不扫描包,就需要手动配置bean

    • 如果不加注解驱动,则注入的值为null!

基于Java类进行配置

JavaConfig 原来是 Spring 的一个子项目,它通过 Java 类的方式提供 Bean 的定义信息,在 Spring4 的版本, JavaConfig 已正式成为 Spring4 的核心功能 。
注意:1. 如果开启包扫描,加载配置类以后就可以通过反射拿到配置类中的对象了
2. @Bean只写在方法上,返回的是一个对象,但一般不获取已经在容器中的对象
3. @Bean 可以用于通过方法获取数据库连接池Connection这种对象
实体类

@Component
public class User {
    private String name;

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                '}';
    }

    public String getName() {
        return name;
    }

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

这是一个配置类

@Configuration//会被spring容器托管,注册到容器中,因为它本来就是一个@Component
@ComponentScan("com.gy.pojo")
@Import(VioletConfig2.class)
public class VioletConfig {
    @Bean
    public User getUser(){
        return new User();
    }
}

测试

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

关于这种Java类的配置方式,SpringBoot 和 SpringCloud中会大量看到,我们需要知道这些注解的作用

posted @ 2023-04-08 21:56  gyViolet  阅读(12)  评论(0编辑  收藏  举报