使用注解简化配置文件
1.组件扫描
Spring容器会通过组件扫描该包及其子包的所有类,并将有特定注解(
通用注解:@Component、@Named;
持久化层组件注解:@Repostory;
业务层组件注解@Service;
控制层组件注解:@Controller)的类纳入容器进行管理,相当于在配置文件中配置了 一个bean元素。
以下提供一个简单的示例步骤:
(1)在类前添加特定的组件注解bean的id,还可以通过@Scope指定作用域,@Lazy指定延迟加载
import org.springframework.stereotype.Component;
@Component("sb1") //组件注解
@Scope("prototype") //指定作用域
@Lazy(true) //延迟加载
public class SomeBean {
public SomeBean(){
System.out.println("SomeBean");
}
@PostConstruct
public void init(){
System.out.println("init");
}
}
(2)在配置文件中,只需添加组件扫描,指定扫描的包
<!-- 配置组件扫描 -->
<!--
base-package指定扫描的包,Spring容器会扫描该包及其子包的所有类,并将有特定注解(如Component)的类纳入容器进行管理,相当于配置了一个bean元素。
-->
<context:component-scan base-package="com.niuchen.spring.annotation"/>
2.依赖注入组件
@Autowired 支持set和构造器方式注入
@Autowired //set注解注入依赖
public void setWt(@Qualifier("wt") Waiter wt) {
System.out.println("set");
this.wt = wt;
}
*@Resource 只支持set方式注入
@Resource(name = "wt2")
public void setWt(Waiter2 wt2) {
System.out.println("set");
this.wt2 = wt2;
}
@Value注解 Spring表达式、基本数据类型注入
@Component("mg")
public class Manager {
@Value("#{config2.pagesize}")
private String pageSize;
@Value("花千骨")
private String name;
public Manager(){
System.out.println("Manager");
}
@Override
public String toString() {
return "Manager{" +
"pageSize='" + pageSize + '\'' +
", name='" + name + '\'' +
'}';
}
}