zoukankan      html  css  js  c++  java
  • spring 中使用注解

    1、要在applicationContext.xml中配置扫描哪个包下的注解

    <!-- 指定扫描cn.itcast.bean报下的所有类中的注解.
         注意:扫描包时.会扫描指定报下的所有子孙包
     -->
    <context:component-scan base-package="cn.itcast.bean"></context:component-scan>

    上面这个配置说明只扫描cn.itcast.bean包以及子包中的注解

    2、注解说明(实体类上的注解)

    package cn.itcast.bean;
    
    import javax.annotation.PostConstruct;
    import javax.annotation.PreDestroy;
    import javax.annotation.Resource;
    import javax.xml.ws.RespectBinding;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Component;
    import org.springframework.stereotype.Controller;
    import org.springframework.stereotype.Repository;
    import org.springframework.stereotype.Service;
    
    //<bean name="user" class="cn.itcast.bean.User"  />
    //@Component("user")
    //    @Service("user") // service层
    //    @Controller("user") // web层
        @Repository("user")// dao层
    //指定对象的作用范围
    @Scope(scopeName="singleton")
    public class User {
        private String name;
        @Value("18")
        private Integer age;
        
        //@Autowired //自动装配
        //问题:如果匹配多个类型一致的对象.将无法选择具体注入哪一个对象.
        //@Qualifier("car2")//使用@Qualifier注解告诉spring容器自动装配哪个名称的对象
        
        @Resource(name="car")//手动注入,指定注入哪个名称的对象
        private Car car;
        
        public Car getCar() {
            return car;
        }
        public void setCar(Car car) {
            this.car = car;
        }
        public String getName() {
            return name;
        }
        @Value("tom")    
        public void setName(String name) {
            this.name = name;
        }
        public Integer getAge() {
            return age;
        }
        public void setAge(Integer age) {
            this.age = age;
        }
        @PostConstruct //在对象被创建后调用.init-method
        public void init(){
            System.out.println("我是初始化方法!");
        }
        @PreDestroy //在销毁之前调用.destory-method
        public void destory(){
            System.out.println("我是销毁方法!");
        }
        @Override
        public String toString() {
            return "User [name=" + name + ", age=" + age + ", car=" + car + "]";
        }
        
    }

    @Component:这个注解一般是放在实体类上的相当于applicationContext.xml中的配置 <bean name="user" class="cn.itcast.bean.User" />

    @Service:一般注解在service层中

    @Controller:一般注解在web层

    @Repository:一般注解在dao层

    @Scope(scopeName="singleton"):指定对象的作用范围,prototype(多例)和singleton(单例)

    上面这些是注解在javaEE中类上的,名字是为了区分在哪个层,并没有具体的功能,每个层上都可以写相同的注解,但是不推荐这样做。

    3、注解说明(属性或者方法上的注解)

    public class User {
        private String name;
        @Value("18")
        private Integer age;
        
        //@Autowired //自动装配
        //问题:如果匹配多个类型一致的对象.将无法选择具体注入哪一个对象.
        //@Qualifier("car2")//使用@Qualifier注解告诉spring容器自动装配哪个名称的对象
        
        @Resource(name="car")//手动注入,指定注入哪个名称的对象
        private Car car;
        
        public Car getCar() {
            return car;
        }
        public void setCar(Car car) {
            this.car = car;
        }
        public String getName() {
            return name;
        }
        @Value("tom")    
        public void setName(String name) {
            this.name = name;
        }
        public Integer getAge() {
            return age;
        }
        public void setAge(Integer age) {
            this.age = age;
        }
        @PostConstruct //在对象被创建后调用.init-method
        public void init(){
            System.out.println("我是初始化方法!");
        }
        @PreDestroy //在销毁之前调用.destory-method
        public void destory(){
            System.out.println("我是销毁方法!");
        }
        @Override
        public String toString() {
            return "User [name=" + name + ", age=" + age + ", car=" + car + "]";
        }
        
    }

    @Value:注解在属性上(基础属性,不是指对象属性)目的是为了赋初值

    @Resource(name="car"):对象属性注解,手动注入,指定注入哪个名称的对象

    @Autowired:自动装配,问题:如果匹配多个类型一致的对象.将无法选择具体注入哪一个对象.

    @Qualifier("car2"):使用@Qualifier注解告诉spring容器自动装配哪个名称的对象

    @PostConstruct :在对象被创建后调用.init-method

    @PreDestroy:在销毁之前调用.destory-method

  • 相关阅读:
    C#语句2——循环语句(for循环与for循环嵌套)
    C#语言基础
    C#几种截取字符串的方法小结
    SQL提取数据库表名,字段名等信息
    Winform绑定图片的三种方式
    C#中遍历各类数据集合的方法总结
    c#winform图片绘制与图片验证码
    DataGridView根据条件给单元格绑定图片
    C#Winform 父窗体 子窗体 传值
    一条Sql语句分组排序并且限制显示的数据条数
  • 原文地址:https://www.cnblogs.com/ms-grf/p/7440427.html
Copyright © 2011-2022 走看看