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