欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring使用注解开发

程序员文章站 2022-07-08 08:36:01
...

Spring使用注解开发

注意:

  • 在Spring4之后,使用注解开发,必须先导入AOP的包
  • 需要在配置文件中导入context的约束,并增加对注解的支持(两处)

指定位置进行组件扫描,只有扫描到的包中的注解才会生效:

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

@Component

相当于注册一个Bean

@Value

通过这个注解进行属性注入。可以放在属性上,也可以放在Set方法上。

    package com.lbl.pojo;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    
    @Component
    public class User {
        @Value("Jack")
        private String name;
        @Value("123")
        private int age;
    
        @Override
        public String toString() {
            return "User{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    }

@Component的衍生注解

这几个衍生注解功能与@Component相同,都是注册Bean,只用于区分MVC三层架构。

  • @Controller:用于Controller
  • @Repository:用于DAO
  • @Service:用于Service

作用域注解

@Scope

例中为单例模式

    package com.lbl.service;
    
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Service;
    
    @Service
    @Scope("singleton")
    public class UserService {
    }

XML VS 注解

XML:适合于任何场合,便于维护

注解:只能作用于自己的类,维护相对复杂

XML与注解较好的实践

XML用于管理Bean

注解进行属性的注入

完全采用Java类做配置

@Configuration:声明这是一个配置类

@Import:导入其他配置类

@ComponentScan:扫描指定路径的组件

@Bean:注册Bean,方法名等于Bean id,返回值等于class

    package com.lbl.config;
    
    import com.lbl.pojo.User;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Import;
    
    @Configuration
    @Import(MyConfig2.class)
    @ComponentScan("com.lbl.pojo")
    public class MyConfig {
        @Bean
        public User user() {
            return new User();
        }
    }

使用IOC容器时,注意使用AnnotationConfigApplicationContext

    import com.lbl.config.MyConfig;
    import com.lbl.pojo.User;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    
    public class MyTest {
        public static void main(String[] args) {
            ApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);
            User user = (User) context.getBean("user");
            System.out.println(user.getName());
        }
    }
相关标签: Java Spring