spring的原始注解
这些是spring的原始注解 他们是用来代替bean的
原始注解的举例说明
//<bean id="userService" class="com.itheima.service.impl.UserServiceImpl">
//@Component("userService")
@Service("userService")
//@Scope("prototype")
@Scope("singleton")
public class UserServiceImpl implements UserService {
@Value("${jdbc.driver}")
private String driver;
//<property name="userDao" ref="userDao"></property>
//@Autowired //按照数据类型从Spring容器中进行匹配的
//@Qualifier("userDao") //是按照id值从容器中进行匹配的 但是主要此处@Qualifier结合@Autowired一起使用
@Resource(name="userDao") //@Resource相当于@Qualifier+@Autowired
private UserDao userDao;
public void save() {
System.out.println(driver);
userDao.save();
}
@PostConstruct
public void init(){
System.out.println("Service对象的初始化方法");
}
@PreDestroy
public void destory(){
System.out.println("Service对象的销毁方法");
}
}
@Autowired
这个注解意思是从spring容器中根据类型匹配
@Qualifier()
是根据id来匹配的
这两个注解通常一起使用
@Resource(name="userDao")
@Resource相当于@Qualifier+@Autowired
@Component("(id)")的作用和<bean id="" class="">一样
@Value 和bean里面的property标签一样也是注入数据的
Spring的配置类
Spring 核心配置类
@Configuration 是核心配置类的标志
这个核心类会被运行加载
@ComponentScan(“要扫描的区域”) 这个注解是用来扫描的
@Import({DataSourceConfiguration.class}) 加载注解
{ }里面可以写入要引用的其他spring配置类 如果有多个可以用逗号隔开
//标志该类是Spring的核心配置类
@Configuration
//<context:component-scan base-package="com.itheima"/>
@ComponentScan("com.itheima")
//<import resource=""/>
@Import({DataSourceConfiguration.class})
public class SpringCofiguration {
}
Spring普通配置类
@PropertySource("classpath:jdbc.properties")
与下面的作用相同 都是用来把其他文件加载到容器中
可以用EL表达式读取
<context:property-placeholder location="classpath:jdbc.properties"/>
//<context:property-placeholder location="classpath:jdbc.properties"/>
@PropertySource("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容器中
public DataSource getDataSource() throws PropertyVetoException {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass(driver);
dataSource.setJdbcUrl(url);
dataSource.setUser(username);
dataSource.setPassword(password);
return dataSource;
}
}
测试类的简便写法
@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration("classpath:applicationContext.xml")
@ContextConfiguration(classes = {SpringCofiguration.class})
//这个SpringCofiguration类是Spring的核心配置类
public class SpringJunitTest {
@Autowired //根据spring容器中的类型注入
private UserService userService;
@Autowired
private DataSource dataSource;
@Test
public void test1() throws SQLException {
userService.save();
System.out.println(dataSource.getConnection());
}
}
通过注解获得ApplicationContext对象
ApplicationContext app = new
AnnotationConfigApplicationContext(核心配置类);
app.getBean("bean对象")