spring注解开发

  1. 要想使用注解,必须加入约束和相应配置

    <?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">
    
       <context:annotation-config/>
       <!--进行注解驱动注册,从而使注解生效,用于激活那些已经在spring容器里注册过的bean上面的注解,也就是显示的向Spring注册-->
    
    </beans>
    
  2. 之前用xml文件来配置bean,可以用注解进行代替

    • 配置扫描哪些包下的注解
    <!--指定注解扫描包-->
    <context:component-scan base-package="com.kuang.pojo"/>
    
    • 在指定包下编写类,增加注解
    @Component("user")
    // 相当于配置文件中 <bean id="user" class="当前注解的类"/>
    public class User {
        public String name = "zhangsan";
    }
    
    • 使用注解注入属性
    @Component("user")
    // 相当于配置文件中 <bean id="user" class="当前注解的类"/>
    public class User {
        @Value("zhangsan")
        // 相当于配置文件中 <property name="name" value="zhangsan"/>
        public String name;
    }
    
    • @Component三个衍生注解:将类交给Spring管理装配

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

      • @Controller:web层

      • @Service:service层

      • @Repository:dao层

    • 作用域

    @Controller("user")
    @Scope("prototype")
    public class User {
        @Value("zhangsan")
        public String name;
    }
    
  3. 小结

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

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

    • xml与注解整合开发 :

      • xml管理Bean

      • 注解完成属性注入

  4. 基于Java类进行配置

    • 实体类
    //这里这个注解的意思,就是说明这个类被Spring接管了。注解到了容器中
    @Component
    public class User {
    
        @Value("小明")
        public String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name=name;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "name='" + name + '\'' +
                    '}';
        }
    }
    
    • 将配置文件改为java配置类
    //这个也被Spring容器托管,注册到容器里,因为他本来就是一个@Component,
    // @Component代表这是一个配置类,就和我们之前看的beans.xml是一样的
    @Configuration
    @ComponentScan("com.test.pojo")
    @Import(MyConfig2.class)//将另一个配置类导入
    public class Appconfig_01 {
        //注册一个bean,就相当于我们之前写的一个bean标签,
        //这个方法的名字就相当于bean标签的id属性
        //这个方法的返回值,就相当于bean标签中的class属性
        @Bean
        public User  getUser(){
            return new User();
        }
    }
    
    • 测试类
    public class Mytest {
        public static void main(String[] args) {
            // 如果完全使用了配置类的方式去做,我们就只能通过AnnotationConfig 上下文来获取容器,通过配置类的class对象加载!
            AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Appconfig_01.class);
            User user = (User) context.getBean("getUser");
            System.out.println(user.toString());
        }
    }
    
posted @ 2024-05-12 18:21  Hanyta  阅读(2)  评论(0编辑  收藏  举报