Spring 注解开发
一、spring的xml配置开发与注解开发的对应关系
自从2.5版本开始,Spring就支持了注解开发。一直到3.0支持纯注解开发。那么注解开发与原来的配置开发有什么关系呢?
配置中的beans对应注解开发中的配置类
<?xml version=”1.0” encoding=”UTF-8”?>
@Configuration //配置类
public class SpringConfig {
}配置中的包扫描对应纯注解开发中的配置类的包扫描
@Configuration
@ComponentScan(“com.atorientsec”)
public class SpringConfig {
}配置中的bean,对应纯注解开发中的@Component
@Repository(“bookDao”) //Repository是@Component的一种变形,应用在数据层-Dao层
//@Controller控制层,@Service 业务层
public class BookDaoImpl implements BookDao {
@Override
public void save() {
System.out.println("bookDao ....");
}
}
容器对象的获取的区别
//加载xml配置
ApplicationContext ctx = new ClassPathXmlApplicationContext(“ApplicationContext.xml”);
//加载配置类
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
二、注解开发依赖注入
2.1 使用@Autowired注解开启自动装配模式(按类型)
@Service
public class BookServiceImpl implements BookService {
@Autowired
private BookDao bookDao;
public void save(){
System.out.println("Book service save...");
bookDao.save();
}
}
2.2 注意
- 自动装配基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据,隐私无需提供setter方法
- 自动装配建议使用无参构造方法创建对象(默认),如果不提供对应构造方法,前能够提供唯一的构造方法。
2.3 使用@Qualifier注解开启指定名称装配bean
@Service
public class BookServiceImpl implements BookService {
@Autowired
@Qualifier("bookDao")
private BookDao bookDao;
public void save(){
System.out.println("Book service save...");
bookDao.save();
}
}
注意:@Qualifier注解无法单独使用,必须配合@Autowired注解使用
2.4 使用@Value注解实现简单类型注入
@Repository("bookDao")
public class BookDaoImpl implements BookDao {
@Value("${name}")
private String name;
@Override
public void save() {
System.out.println("book Dao save...."+name);
}
}
jdbc.properties文件
name=zhangsan
2.5 使用@PropertySource注解为配置类加载properties文件
@Configuration
@ComponentScan("com.atorientsec")
@PropertySource({"jdbc.properties"})
public class SpringConfig {
}
注意:@PropertySource路径仅支持单一文件配置,多文件请使用数组格式配置,不允许使用通配符 *
还没有评论,来说两句吧...