首页 > 编程语言 > 详细

Spring注释,散集积累

时间:2015-10-27 17:58:51      阅读:227      评论:0      收藏:0      [点我收藏+]
@Configuration 
传统方式:
 
Java代码  
<beans>    
    <bean id="orderService" class="com.acme.OrderService"/>    
        <constructor-arg ref="orderRepository"/>    
    </bean>    
    <bean id="orderRepository" class="com.acme.OrderRepository"/>    
        <constructor-arg ref="dataSource"/>    
    </bean>    
</beans>    
<beans>  
	<bean id="orderService" class="com.acme.OrderService"/>  
		<constructor-arg ref="orderRepository"/>  
	</bean>  
	<bean id="orderRepository" class="com.acme.OrderRepository"/>  
		<constructor-arg ref="dataSource"/>  
	</bean>  
</beans>  
 
 
Java代码  
ApplicationContext ctx = new ClassPathXmlApplicationContext("application-config.xml");    
OrderService orderService = (OrderService) ctx.getBean("orderService");    
ApplicationContext ctx = new ClassPathXmlApplicationContext("application-config.xml");  
OrderService orderService = (OrderService) ctx.getBean("orderService");  
 注解方式:
 
Java代码  
@Configuration    
public class ApplicationConfig {    
    
        public @Bean OrderService orderService() {    
                return new OrderService(orderRepository());    
        }    
    
        public @Bean OrderRepository orderRepository() {    
                return new OrderRepository(dataSource());    
        }    
    
        public @Bean DataSource dataSource() {    
                // instantiate and return an new DataSource …    
        }    
}    
@Configuration  
public class ApplicationConfig {  
  
		public @Bean OrderService orderService() {  
				return new OrderService(orderRepository());  
		}  
  
		public @Bean OrderRepository orderRepository() {  
				return new OrderRepository(dataSource());  
		}  
  
		public @Bean DataSource dataSource() {  
				// instantiate and return an new DataSource …  
		}  
}  
 
Java代码  
JavaConfigApplicationContext ctx = new JavaConfigApplicationContext(ApplicationConfig.class);    
OrderService orderService = ctx.getBean(OrderService.class);    
JavaConfigApplicationContext ctx = new JavaConfigApplicationContext(ApplicationConfig.class);  
OrderService orderService = ctx.getBean(OrderService.class);  
 
 
@Scope("prototype")
 
Java代码  
@Scope("prototype")    
public class PrintTask2 implements Runnable {    
        String name;    
    
        public void setName(String name) {    
                this.name = name;    
        }    
            
        @Override    
        public void run(){    
                System.out.println(name + " is running.");    
                try{    
                        Thread.sleep(5000);    
                }catch(InterruptedException e){    
                        e.printStackTrace();    
                }    
                System.out.println(name + " is running again.");    
        }    
}   
@Scope("prototype")  
public class PrintTask2 implements Runnable {  
        String name;  
  
        public void setName(String name) {  
                this.name = name;  
        }  
          
        @Override  
        public void run(){  
                System.out.println(name + " is running.");  
                try{  
                        Thread.sleep(5000);  
                }catch(InterruptedException e){  
                        e.printStackTrace();  
                }  
                System.out.println(name + " is running again.");  
        }  
} 
 
 
如果action或Service中不@Scope("prototype"),有可能报找不到xxxaction或Service的错误!写上这个就表示每次请求都重新创建一个action或Service,与SINGALON对应,俗称“多例”。
@Component 
 
Java代码  
@Component    
@Scope("prototype")    
public class PrintTask2 implements Runnable {    
        String name;    
    
        public void setName(String name) {    
                this.name = name;    
        }    
            
        @Override    
        public void run(){    
                System.out.println(name + " is running.");    
                try{    
                        Thread.sleep(5000);    
                }catch(InterruptedException e){    
                        e.printStackTrace();    
                }    
                System.out.println(name + " is running again.");    
        }    
}  
@Component  
@Scope("prototype")  
public class PrintTask2 implements Runnable {  
        String name;  
  
        public void setName(String name) {  
                this.name = name;  
        }  
          
        @Override  
        public void run(){  
                System.out.println(name + " is running.");  
                try{  
                        Thread.sleep(5000);  
                }catch(InterruptedException e){  
                        e.printStackTrace();  
                }  
                System.out.println(name + " is running again.");  
        }  
}
把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>
 
@Repository
 
Java代码  
@Repository  
public class DaoImpl implements IDao{  
}  
@Repository
public class DaoImpl implements IDao{
}
 应用于Dao层,把该类注册到Spring容器中
 
 
@Service
 
Java代码  
@Service  
public class ServiceImpl implements IService {  
    @Autowired  
    private IDao iDao;    
}  
@Service
public class ServiceImpl implements IService {
	@Autowired
	private IDao iDao;  
}
 应用于Service层,把该类注册到Spring容器中
 
 
@Controller
 
Java代码  
@Controller  
public class TestController {  
    @Autowired  
    private IService iService;  
}  
@Controller
public class TestController {
    @Autowired
    private IService iService;
}
  应用于Action层,把该类注册到Spring容器中
 
@Autowired , @Qualifier("XXX")
 
Java代码  
@Service    
public class TestServiceImpl {    
    @Autowired    
    @Qualifier("iTestDao2")    
    private ITestDao iTestDao;    
}    
@Service  
public class TestServiceImpl {  
    @Autowired  
    @Qualifier("iTestDao2")  
    private ITestDao iTestDao;  
}  
在ITestDao接口标上@Autowired和@Qualifier注释使得ITestDao接口存在两个实现类的时候必须指定其中一个来注入,使用实现类首字母小写的字符串("iTestDao2")来注入。否则可以省略,只写@Autowired

获取【下载地址】 【新技术】现在最流行的java后台框架组合java springmvc mybaits mysql oracle html5 后台框架源码

Spring注释,散集积累

原文:http://my.oschina.net/u/2499144/blog/522688

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!