文档章节

Spring注释,散集积累

z
 zahschusheng
发布于 2015/10/27 15:38
字数 625
阅读 80
收藏 7
@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 后台框架源码

© 著作权归作者所有

共有 人打赏支持
z
粉丝 2
博文 4
码字总数 2818
作品 0
济南
私信 提问
Spring Boot开发之流水无情(二)

上篇散仙写了一个很简单的入门级的Spring Boot的例子,没啥技术含量,不过,其实学任何东西只要找到第一个突破口,接下来的事情就好办了,人最怕什么? 我想莫过于干一件事情,没有下手的地方...

九劫散仙
2015/04/26
0
22
spring 注解积累

用注解来向Spring容器注册Bean。 需要在applicationContext.xml中注册: 1:@Repository 标注在持久层,即dao,用于标注数据访问。 2:@Service 标注在业务层,即service,用于标注业务逻辑。...

西北狼牙
2015/07/22
1
0
15个Spring的核心注释示例

众所周知,Spring DI和Spring IOC是Spring Framework的核心概念。让我们从org.springframework.beans.factory.annotation和org.springframework.context.annotation包中探索一些Spring核心注......

java菜分享
2018/12/17
0
0
【转】使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务

简介: Spring,构建 Java™ 平台和 Enterprise Edition (Java EE) 应用程序的著名框架,现在在其模型-视图-控制器(Model-View-Controller ,MVC)层支持具象状态传输 (REST)。RESTful web...

老盖
2011/08/25
2.1K
0
使用Spring2.5的Autowired实现注释型的IOC

使用Spring2.5的新特性——Autowired可以实现快速的自动注入,而无需在xml文档里面添加bean的声明,大大减少了xml文档的维护。(偶喜欢这个功能,因为偶对xml不感冒)。 以下是一个例子: 先...

沉默的子明
2014/05/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

webstorm 常用设置

###常用快捷键 ctrl+D//复制粘贴当前行ctrl+W//选中单词ctrl+←/→ //以单词作为边界跳光标位置ctrl+alt+L//格式化代码shift+tab/tab//减少/扩大缩进(可以在代码中减少行缩进)ct...

niuhongxia
9分钟前
0
0
Web前端自动化单元测试

Web前端自动化单元测试 单元测试的很多,比如辅助开发,预测开发,提高模块可靠性等。 还可以提高项目开发思路。 前提需求 本文基于nodejs环境,需要jasmine和 Karma。 nodejs:不多说,很突出...

DrChenXX
12分钟前
1
0
漫漫优化路,总会错几步(记一次接口优化)

最近做了一个搜索接口的优化,反复压测了四次,终于达到要求了,记录一下,晚上加个鸡腿🍗 业务逻辑 从OpenSearch中检索出数据,然后各种填充组装数据,最后返回 逻辑看似很简单,当初我也...

java菜分享
16分钟前
0
0
springboot 统一异常处理(包含统一数据校验)

1、统一异常处理的优势 在开发中,我们是否遇到过如下两种奇葩现象: (1)只要没有成功,不管什么原因,前端界面给出提示:服务端错误/异常。哪怕是数据校验不过,也这样提示(嗯,反正先把...

编程SHA
19分钟前
2
0
基于arcface 人脸识别demo使用教程

最近在研究虹软家的arcface 人脸识别 demo,现在就给大家分享一下官方的demo ** 工程如何使用? ** 1.下载代码: git clone https://github.com/asdfqwrasdf/ArcFaceDemo.git 或者直接下载压缩...

是哇兴哥棒棒哒
20分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部