spring新注解
使用原始注解還不能全部替代xml配置文件,還需要使用注解替代的配置如下:
1.非自定義的Bean配置:< bean>
2.加載properties文件的配置:<context:property-placeholder>
3.組件掃描的位置:<context:component-scan >
4.引入其他文件:< import>
新注解
@Configuration:用于指定當前類是一個Spirng配置類,當創建容器時會從該類上進行加載
@ComponentScan:用于指定spring在初始化容器時要掃描的包
作用和spring的xml配置文件中的
<context:component-scan base-package=“com.hao”/>一致
@Bean:使用在方法上,標注該方法的返回值存儲到spring容器中
@PropertySource:用于加載.properties文件的位置
@import:用于導入其他配置類
1.創建UserDao接口及其實現類UserDaoImpl(接口代碼省略)
//<bean id="userDao" class="com.hao.dao.impl.UserDaoImpl"></bean> @Repository("userDao") //相當于上面注釋掉的內容 public class UserDaoImpl implements UserDao {@Overridepublic void save1() {System.out.println("save running...");} }2.創建UserService接口及其UserServiceImpl實現類(接口代碼省略)
@Service("userService") @Scope("singleton") public class UserServiceImpl implements UserService {@Value("${jdbc.driver}")private String driver;@Autowired//@Qualifier("userDao") //要注入的id值private UserDao userDao;@Overridepublic void sava() {System.out.println(driver);userDao.save1();} }3.創建spring核心配置類SpringConfiguration(名稱可以隨意)
package com.hao.config;import org.springframework.context.annotation.*;@Configuration //標志類是該Spring的核心配置類 @ComponentScan("com.hao") //掃描類,相當于<context:component-scan base-package="com.hao"/> @Import({DataSourceConfiguration.class}) //引入的DataSourceConfiguration配置類 public class SpringConfiguration{}4.DataSourceConfiguration配置類
package com.hao.config;import com.mchange.v2.c3p0.ComboPooledDataSource; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.PropertySource;import javax.sql.DataSource; import java.beans.PropertyVetoException;@PropertySource("classpath:jdbc.properties")//加載.properties資源文件,相當于<context:property-placeholder location="classpath:jdbc.properties"/> public class DataSourceConfiguration {@Value("${jdbc.driver}") //普通類型的注入private String driver;@Value("${jdbc.url}")private String url;@Value("${jdbc.username}")private String username;@Value("${jdbc.password}")private String password;@Bean("dataSource") //spring會將當前方法的返回值以指定名稱存儲到spring容器當中-->相當于xml配置當中的Bean標簽public DataSource getDataSource() throws PropertyVetoException {ComboPooledDataSource dataSource=new ComboPooledDataSource();dataSource.setDriverClass(driver);dataSource.setJdbcUrl(url);dataSource.setUser(username);dataSource.setPassword(password);return dataSource;} }5.測試
public class UserController {public static void main(String[] args) {ApplicationContext context=new AnnotationConfigApplicationContext(SpringConfiguration.class);UserService service = (UserService) context.getBean("userService");service.sava();} }使用注解獲取的是AnnotationConfigContext對象字節碼
結果:
com.mysql.cj.jdbc.Driver
save running…
總結
- 上一篇: spring原始注解(value)-03
- 下一篇: Spring相关的API-Applica