Spring(11) 通过java类配置管理

  1. 前面的代码是通过xml类配置各种bean的,但是spring还允许通过java类的方式来配置管理,具体为用@Configuration去修饰一个类,那么这个类就会被spring当作是配置管理的类,再在里面通过@Bean,@Value的注解,会用xml配置的童鞋应该一眼就可以看懂的,看不懂 的就翻以前的博文看吧。
  2. 程序结构
  3. 代码
    package impl;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    //@Configuration用于修饰一个java配置类
    
    public class Appconfig {
        @Value("java") String personName;
    //    这里就相当于是配置了一个名字为personName,值为java的String变量
    
    //    配置一个bean,id为chinese,实现类为person,然后给他赋值,因为这里Axe给的是stoneAxe,所以输出的就是StoneAxe啦
        @Bean(name = "chinese")
        public Person person(){
            Chinese p = new Chinese();
            p.setAxe(stoneAxe());
            p.setName(personName);
            return p;
        }
    
    //    配置一个bean id为stoneAxe,实现类为StoneAxe
        @Bean(name = "stoneAxe")
        public Axe stoneAxe(){
            return new StoneAxe();
        }
    
    //    配置一个bean steelAxe,实现类为steelAxe
        @Bean(name = "steelAxe")
        public  Axe steelAxe(){
            return new SteelAxe();
        }
    }
    
    package impl;
    
    
    public interface Axe
    {
    	public String chop();
    }
    
    package impl;
    
    public class Chinese  implements Person{
        private Axe axe;
        private String name;
    
         void setAxe(Axe axe) {
            this.axe = axe;
        }
    
         void setName(String name) {
            this.name = name;
        }
    
        @Override
        public void useAxe(){
            System.out.println("我是" + name +   "," +axe.chop()) ;
    
        }
    }
    
    package impl;
    
    
    public interface Person
    {
    	public void useAxe();
    }
    
    package impl;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    
    public class Springtest {
        public static void main(String []args){
    
            ApplicationContext applicationContext = new AnnotationConfigApplicationContext(Appconfig.class);
    //        如果是通过java类配置管理的话,就不能使用ClassPathXmlApplicationCOntext方法来获取容器的,那是
    //        通过xml配置文件配置的时候才可以的。其他操作就都一样了。
    
            Chinese chinese = applicationContext.getBean("chinese", Chinese.class);
            chinese.useAxe();
        }
    }
    
    package impl;
    
    public class SteelAxe implements Axe
    {
        @Override
    	public String chop()
    	{
    		return "SteelAxe";
    	}
    }
    package impl;
    
    
    public class StoneAxe implements Axe
    {
    	@Override
    	public String chop()
    	{
    		return "StoneAxe";
    	}
    }

    这是我看李刚编著的《轻量级javaEE企业应用实战(第五版)-Struts2+Spring5+Hibernate5/JAP2》后总结出来的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值