spring之IOC使用注解更方便
2017-09-05 12:02
302 查看
(一)对于Spring的IOC使用注解的方法比较方便(使用@Resource)
以上是配置文件需要添加的东西,用于识别注解。
1、@Required用于setter方法上,标识注入,类似于@Override(可有可无,只是可以提前发现方法是否错误)
2、@Autowired用于标识自动注入,主要用于setter方法上,如果没有实例注入,可以通过设置required=false ,避免报错。(默认是按类型注入byType)(不推荐使用,可以用@Resource代替)
3、@Qualifier(Value="bean名字")可以简写为:@Qualifier("bean名字"):用于注入特定bean的实例。其中可以直接使用bean在配置文件中的名字。(若通过按bean名字注入,可以使用该注解)
如果写在setter方法上,需要将@Qualifier(“bean名字”)写在参数上
public class UserService {
private UserDAO userDAO;
@Autowired
public void setUserDAO(@Qualifier("u") UserDAO userDAO) {
this.userDAO = userDAO;
}
}
配置文件的配置:
<bean id="u" class="com.bjsxt.dao.impl.UserDAOImpl"> </bean>
4、@Resource,使用该注解需要导入Common-annotations.jar包
默认是时按名字注入(byName),找不到则按类型注入;如果按名字注入:直接@Resource(“bean名字”)即可。
很明显,比@autowire更好用
5、@Component是Spring的注解,生成类的实例注入到容器中供使用,与之类似的还有:
and
@Component标注类时,初始化名字默认为类名首字母小写。也可以指定初始化bean的名字:@Component(“bean名字”)即可。这时就可以不用在配置文件中配置bean了。但需要加一下内容:
也可以设置那些包不用扫描(推荐使用配置的方式)
使用注解的方式(不推荐)
6、@PostConstruct =init-method
@PreDestroy=destroy-method
(二)对于Spring的AOP使用xml方式比较方便
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:annotation-config/> </beans>
以上是配置文件需要添加的东西,用于识别注解。
1、@Required用于setter方法上,标识注入,类似于@Override(可有可无,只是可以提前发现方法是否错误)
public class SimpleMovieLister { private MovieFinder movieFinder; @Required public void setMovieFinder(MovieFinder movieFinder) { this.movieFinder = movieFinder; } // ... }
2、@Autowired用于标识自动注入,主要用于setter方法上,如果没有实例注入,可以通过设置required=false ,避免报错。(默认是按类型注入byType)(不推荐使用,可以用@Resource代替)
public class SimpleMovieLister { private MovieFinder movieFinder; @Autowired(required=false) public void setMovieFinder(MovieFinder movieFinder) { this.movieFinder = movieFinder; } // ... }
3、@Qualifier(Value="bean名字")可以简写为:@Qualifier("bean名字"):用于注入特定bean的实例。其中可以直接使用bean在配置文件中的名字。(若通过按bean名字注入,可以使用该注解)
如果写在setter方法上,需要将@Qualifier(“bean名字”)写在参数上
public class UserService {
private UserDAO userDAO;
@Autowired
public void setUserDAO(@Qualifier("u") UserDAO userDAO) {
this.userDAO = userDAO;
}
}
配置文件的配置:
<bean id="u" class="com.bjsxt.dao.impl.UserDAOImpl"> </bean>
4、@Resource,使用该注解需要导入Common-annotations.jar包
默认是时按名字注入(byName),找不到则按类型注入;如果按名字注入:直接@Resource(“bean名字”)即可。
很明显,比@autowire更好用
public class SimpleMovieLister { private MovieFinder movieFinder; @Resource(name="myMovieFinder") public void setMovieFinder(MovieFinder movieFinder) { this.movieFinder = movieFinder; } }
5、@Component是Spring的注解,生成类的实例注入到容器中供使用,与之类似的还有:
@Repository,
@Service,
and
@Controller。
@Component标注类时,初始化名字默认为类名首字母小写。也可以指定初始化bean的名字:@Component(“bean名字”)即可。这时就可以不用在配置文件中配置bean了。但需要加一下内容:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="要扫描的包路径:org.example"/> </beans>
也可以设置那些包不用扫描(推荐使用配置的方式)
<beans> <context:component-scan base-package="org.example"> <context:include-filter type="regex" expression=".*Stub.*Repository"/> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/> </context:component-scan> </beans>
使用注解的方式(不推荐)
@Configuration @ComponentScan(basePackages = "org.example", includeFilters = @Filter(type = FilterType.REGEX, pattern = ".*Stub.*Repository"), excludeFilters = @Filter(Repository.class)) public class AppConfig { ... }
6、@PostConstruct =init-method
@PreDestroy=destroy-method
public class CachingMovieLister { @PostConstruct public void init() { // 初始化之前调用 } @PreDestroy public void destroy() { // 容器销毁之前调用 } }
(二)对于Spring的AOP使用xml方式比较方便
相关文章推荐
- Spring学习笔记1——IOC: 尽量使用注解以及java代码
- Spring IOC--Bean的装配(使用注解定义Bean)
- Spring系列(三):Spring IoC中各个注解的理解和使用
- Spring使用IOC注解
- Spring学习笔记1之IOC详解尽量使用注解以及java代码
- spring 框架中的依赖注入(IOC--设值注入)--使用注解--的具体实例的简单实现
- 使用Spring注解来构造IoC容器
- Spring IOC使用(3) 基于注解管理bean
- springIOC、AOP注解的使用
- Spring学习(九)使用ioc注解方式配置bean
- Spring IOC之 使用JSR 330标准注解
- Spring常用注解 使用注解来构造IoC容器
- Spring--IoC--域属性的注入-使用@Resource注解(JSR)
- Spring--IoC--基于注解的DI-基本使用
- Spring常用注解 使用注解来构造IoC容器
- 使用JAVA注解和反射模拟spring的IOC
- Spring学习之使用注解来构造IoC容器
- Spring常用注解 使用注解来构造IoC容器的方法
- 04-Spring-使用ioc注解方式配置bean
- Spring学习笔记1——IOC: 尽量使用注解以及java代码(转)