DAY 22/11/16

注解

Spring注解

@Component、@Controller、@Service、@Repository

注解 @Configuration
@Configuration(proxyBeanMethods = true)
    /*
声明这是一个配置类(配置文件)
配置类中用 @Bean 为容器注册组件,同时容器也是组件
proxyBeanMethods=true: 会保存代理对象,再次调用优先取代理兑现,保持组件单实例
*/
    public class MyConfig {
        @Bean //方法名作为组件ID,返回类型为组件类型,返回的值即实例值
        public User user01(){
            User user = new User("user",22);
            user.setPet(pet01());
            //表示User和Pet之间有依赖关系
            return user;
        }
        @Bean("ReNameCat") //设置值优先,若不设置方法名即为组件ID
        public Pet pet01(){
            return new Pet("cat");
        }
    }
注解@Import
@Import({User.class, FilterType.class})
//自动为引入的容器创建实例
注解@Conditional

条件装配 。 @COnditionalOnBean 和 @ConditionalOnMissingBean 为例

public class MyConfig {
    @Bean //方法名作为组件ID,返回类型为组件类型,返回的值即实例值
    @ConditionalOnBean(name = "ReNameCat")
    //User和Pet有依赖关系,没有Pet,不装配User
    //条件装配注解也可以直接声明在容器上
    public User user01(){
         User user = new User("user",22);
        user.setPet(pet01());//表示User和Pet之间有依赖关系
        return user;
    }
    @Bean("ReNameCat") //设置值优先,若不设置方法名即为组件ID
    public Pet pet01(){
        return new Pet("cat");
    }
}
@ConditionalOnMissingBean(name = "cat")
//没有XXX,才装配
public class MyConfig {
    @Bean //方法名作为组件ID,返回类型为组件类型,返回的值即实例值
    public User user01(){
         User user = new User("user",22);
        user.setPet(pet01());//表示User和Pet之间有依赖关系
        return user;
    }
    @Bean("ReNameCat") //设置值优先,若不设置方法名即为组件ID
    public Pet pet01(){
        return new Pet("cat");
    }
}
注解@ImportResource
@ImportResource("classpath:beans.xml")
//导入第三方包、XMl文件......
public class MyConfig {
    @Bean //方法名作为组件ID,返回类型为组件类型,返回的值即实例值
    public User user01(){
         User user = new User("user",22);
        user.setPet(pet01());//表示User和Pet之间有依赖关系
        return user;
    }
    @Bean("ReNameCat") //设置值优先,若不设置方法名即为组件ID
    public Pet pet01(){
        return new Pet("cat");
    }
}
注解@ConfigurationProperties

1、@Component+@ConfigurationProperties

@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@ConfigurationProperties(prefix = "mycar")
    /*
mycar.brand=BYD
mycar.price=10
    */
public class Car {
    private String brand;
    private Integer price;
}
@Controller
//@RequestMapping("/hello")
public class HelloController {

    @Autowired
    Car car;

    @ResponseBody
    @RequestMapping("/car")
    public Car car(){
        return car;
    }
} 

2、@EnableConfigurationProperties+@ConfigurationProperties

@EnableConfigurationProperties(Car.class)  
    //开启自动属性配置,配置Car并自动注入到容器中(适用于第三方包,无Component注解)
    //同1,去掉Component注解
public class MyConfig
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值