Spring核心三(基于注解的组件扫描)
2017-12-21 16:38
405 查看
1.组件扫描:指定一个包路劲,Spring会自动扫描该包及其子包所有组件类,当发现组件类定义前有特定的注解标记时,就将改组件纳入到Srping容器。等价于原有XML配置中的<bean>定义功能
2.指定扫描类路径<context:component-scanbase-package=”org.example”/>
ps:上面配置,容器实例化时会自动扫描org.example包及其子包下所有组件类
3.自动扫描的注解标记
@Component通用注解
@Name 通用注解
@Repository持久化层组件注解
@Service 业务层组件注解
@Contrller控制层组件注解
4.当一个组件在扫描过程中被检测到时,会生成一个默认id值,默认id为小写开头的类名,也可以在注解标记中自定义id @Service(“loginService”)
5.指定组件的作用域 @Scope(“prototype”)
6. @PostConstruct和 @PreDestroy注解标记分别用于指定初始化和销毁回调方法
publicclass ExampleBean{
@PostConstruct
publicvoid init(){
//初始化回调方法
}
@PreDestroy
public void destroy(){
//销毁回调方法
}
}
7.注入依赖关系
具有依赖关系的Bean对象,利用下面任意一种注解都可以实现关系注入
@ReSource
@Autowired/@Qualifier
@Inject/@Named
step1:@ReSource注解标记可以用在字段定义或setter方法定义前面,默认首先按名称匹配注入,然后类型匹配注入
publicclass UserService{
//@ReSource
private UserDao userDao;
@ReSource
public void setUserDao(UserDao dao){
this.userDao = dao;
}
}
当遇到多个匹配Bean时注入会发生错误,可以显示指定名称,例如@Resource(name=”empdao1”)
step2: @Autowired注解标记也可以用在字段定义或setter方法定义前面,默认按类型匹配注入
publicclass UserService{
//@Autowired
private UserDao userDao;
@Autowired
public void setUserDao(UserDao dao){
this.userDao = dao;
}
}
@Autowired当遇到多个匹配Bean时注入会发生错误,可以使用下面方法指定名称
publicclass UserService{
//@Autowired
//@Qualifier(“mysqlUserDao”)
private UserDao userDao;
@Autowired
public voidsetUserDao(@Qualifier(“mysqlUserDao”)UserDao dao){
this.userDao = dao;
}
}
step3:@Inject注解标记是Spring3.0开始增添的对JSR-330标准的支持,使用前需要添加JSR-330的jar包,使用方法与@Autowired相似
8.注入Spring表达式值
@value注解可以注入Spring表达式值
step1: 首先在XML配置中指定要注入的properties文件
<util:propertiesid=”jdbcProps” location=”classpath:db.properties” />
step2: 然后在setter方法前使用@Value注解
publicclass JDBCDataSource{
@Value(“#jdbcProps.url”)
privateString url;
@Value(“#{jdbcPros.driver}”)
publicvoid setUrl(String driver){
try{
Class.forName(driver)}
}catch(…)
}
}
2.指定扫描类路径<context:component-scanbase-package=”org.example”/>
ps:上面配置,容器实例化时会自动扫描org.example包及其子包下所有组件类
3.自动扫描的注解标记
@Component通用注解
@Name 通用注解
@Repository持久化层组件注解
@Service 业务层组件注解
@Contrller控制层组件注解
4.当一个组件在扫描过程中被检测到时,会生成一个默认id值,默认id为小写开头的类名,也可以在注解标记中自定义id @Service(“loginService”)
5.指定组件的作用域 @Scope(“prototype”)
6. @PostConstruct和 @PreDestroy注解标记分别用于指定初始化和销毁回调方法
publicclass ExampleBean{
@PostConstruct
publicvoid init(){
//初始化回调方法
}
@PreDestroy
public void destroy(){
//销毁回调方法
}
}
7.注入依赖关系
具有依赖关系的Bean对象,利用下面任意一种注解都可以实现关系注入
@ReSource
@Autowired/@Qualifier
@Inject/@Named
step1:@ReSource注解标记可以用在字段定义或setter方法定义前面,默认首先按名称匹配注入,然后类型匹配注入
publicclass UserService{
//@ReSource
private UserDao userDao;
@ReSource
public void setUserDao(UserDao dao){
this.userDao = dao;
}
}
当遇到多个匹配Bean时注入会发生错误,可以显示指定名称,例如@Resource(name=”empdao1”)
step2: @Autowired注解标记也可以用在字段定义或setter方法定义前面,默认按类型匹配注入
publicclass UserService{
//@Autowired
private UserDao userDao;
@Autowired
public void setUserDao(UserDao dao){
this.userDao = dao;
}
}
@Autowired当遇到多个匹配Bean时注入会发生错误,可以使用下面方法指定名称
publicclass UserService{
//@Autowired
//@Qualifier(“mysqlUserDao”)
private UserDao userDao;
@Autowired
public voidsetUserDao(@Qualifier(“mysqlUserDao”)UserDao dao){
this.userDao = dao;
}
}
step3:@Inject注解标记是Spring3.0开始增添的对JSR-330标准的支持,使用前需要添加JSR-330的jar包,使用方法与@Autowired相似
8.注入Spring表达式值
@value注解可以注入Spring表达式值
step1: 首先在XML配置中指定要注入的properties文件
<util:propertiesid=”jdbcProps” location=”classpath:db.properties” />
step2: 然后在setter方法前使用@Value注解
publicclass JDBCDataSource{
@Value(“#jdbcProps.url”)
privateString url;
@Value(“#{jdbcPros.driver}”)
publicvoid setUrl(String driver){
try{
Class.forName(driver)}
}catch(…)
}
}
相关文章推荐
- Spring - 基于注解的组件扫描
- Spring学习3--基于注解的组件扫描
- 初学SpringMVC+Mybatis之Spring基于注解的组件扫描
- 四、初学SpringMVC+Mybatis之Spring基于注解的组件扫描
- SPRINGMYBATIS01 Unit02: 参数值注入 、 基于注解的组件扫描
- Spring2.5中使用注解装配属性and组件自动扫描
- Spring核心——Stereotype组件与Bean扫描
- springboot @ComponentScan 注解不支持扫描jar包中组件解决办法
- JAVA_OA管理系统(四):基于注解的组件扫描
- Spring--IoC--基于注解的DI-组件扫描器的base-package
- 基于注解的组件扫描详解
- Spring核心技术(九)——Spring管理的组件和Classpath扫描
- Spring核心技术(九)——Spring管理的组件和Classpath扫描
- 基于注解的组件扫描
- Spring依赖注入,自动扫描组件,自动装配,注解注入
- 基于Spring的包含特定注解bean的package扫描工具
- 基于Spring的包含特定注解bean的package扫描工具
- Spring核心框架IOC---- 使用注解完成IOC配置---- 使用注解配置spring组件
- 参数值注入 、基于注解的组件扫描
- Spring-基于注解的配置[01定义Bean+扫描Bean]