一、Java注解配置是Spring4.x推薦的配置方式,可以完全替代xml配置。Spring的Java注解配置方式是通過 @Configuration 和 @Bean 這兩個注解實現的:
1、@Configuration 作用於類上,相當於一個xml配置文件;
2、@Bean 作用於方法上,相當於xml配置中的<bean>;
示例:這兩個注解的用法
1、創建實體類:User.java
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private String username;
private String password;
private Integer age;
//省略set/get方法
}
2、創建Dao層,模擬數據庫訪問:UserDao.java
public class UserDao {
public List<User> findAll(){
List<User> users = new ArrayList<User>();
for(int i=1;i<10;i++) {
User user = new User();
user.setUsername(i+"號");
user.setPassword(i+"1234");
user.setAge(i+21);
users.add(user);
}
return users;
}
}
3、創建Service層:UserService.java
@Service
public class UserService {
@Autowired
private UserDao userDao;
public List<User> findAllUser(){
return userDao.findAll();
}
}
4、創建注解類,相當於spring的主配置文件applicationContext.xml
@Configuration //通過該注解來表明該類是一個Spring的配置,相當於一個xml文件
@ComponentScan(basePackages="com.boot.service") //配置掃描包
public class SpringAnnotation {
@Bean // 通過該注解來表明是一個Bean對象,相當於xml中的<bean>
public UserDao getUserDao()
{
return new UserDao();
}
}
5、測試:
public class Main {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringAnnotation.class);
UserService userService = context.getBean(UserService.class);
List<User> list = userService.findAllUser();
for(User u : list) {
System.out.println(u.getUsername()+"\t"+u.getPassword()+"\t"+u.getAge());
}
context.close();
}
}
6、
從以上的示例中可以看出,使用Java代碼就完美的替代xml配置文件,並且結構更加的清晰。
二、讀取外部的資源配置文件,
通過@PropertySource可以指定讀取的配置文件,通過@Value注解獲取值,具體用法:
@PropertySource(value= {"classpath:jdbc.properties"})
public class SpringAnnotation {
@Value("${jdbc.driver}")
private String driver_class;
@Value("${jdbc.url}")
private String jdbc_url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Bean
public DataSource getDataSource() {
DataSource dataSource = new DataSource();
dataSource.setDriverClassName(driver_class);
dataSource.setUrl(jdbc_url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
@Bean
public SqlSessionFactoryBean getSqlSessionFactory() throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(this.getDataSource());
return sessionFactory;
}