spring IoC注解开发---【小白系列】0基础到熟练应用spring框架(二)
来源:互联网 发布:tensorflow models 编辑:程序博客网 时间:2024/06/01 10:20
spring加载非自定义bean
以加载c3p0连接池为例,我们有个c3p0配置文件 jdbc.properties
#mysqljdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/spring_demojdbc.user=rootjdbc.password=root
配置文件applicationContext.xml
<!-- 非自定义的Bean 例如:连接池--><!-- 0、加载jdbc.properties文件 将该文件的信息放到容器中 方便其他bean在创建时 使用相关参数 --><context:property-placeholder location="classpath:jdbc.properties"/> <!-- 1、c3p0连接池 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="${jdbc.driver}"></property><property name="jdbcUrl" value="${jdbc.url}"></property><property name="user" value="${jdbc.user}"></property><property name="password" value="${jdbc.password}"></property></bean>
spring注解开发
导入spring-aop.jar
在applicationContext.xml配置组件扫描
<context:component-scan base-package="cn.it"></context:component-scan>你注解使用在哪,就配哪。
@Component("annoBean") //@Repository("annoBean")//@Service("annoBean")//@Controller("annoBean")@Scope("singleton")//@Scope("prototype")public class AnnoBean {public void show(){System.out.println("AnnoBean show running... ...");}@PostConstruct //该注解是AnnoBean初始化时执行的方法public void init(){System.out.println("初始化方法...");}@PreDestroy//该注解是AnnoBean销毁时执行的方法public void destroy(){System.out.println("销毁方法...");}}
此外在web开发中,根据@Component还有三个衍生的注解
@Repository:dao层实体上使用该注解
@Service:service层实体上使用该注解
@Controller:web层实体上使用该注解
我们在来看下service层的属性注解
@Service("customerService")public class CustomerServiceImpl implements CustomerService {//@Autowired//自动注入属性:从spring容器中 根据该属性的类型去寻找对应的实体 找到后自动注入到该位置//@Qualifier("customerDao")使用此属性是从spring容器中找叫customerDao的对象,而不是去寻找类型,该注解必须和@Autowired同时使用@Resource(name="customerDao") 注意:Resource = Autowired+Qualifierprivate CustomerDao customerDao;//注意:使用注解进行属性的注入 那么set方法可以省略/*public void setCustomerDao(CustomerDao customerDao) {this.customerDao = customerDao;}*/@Overridepublic void save() {customerDao.save();}}
spring新注解
/* * SpringConfiguration替代applicationContext.xml */@Configuration//标注该类是一个配置类@ComponentScan(basePackages={"com.itheima"})@Import(value = { DataSourceProvider.class })//将其他的配置对象引入到核心配置对象内部public class SpringConfiguration {}
@PropertySource(value = { "classpath:jdbc.properties" })//将配置文件加载到容器中public class DataSourceProvider {@Value(value = "${jdbc.driver}")private String driverClass;@Value(value = "${jdbc.url}")private String jdbcUrl;@Value(value = "${jdbc.user}")private String user;@Value(value = "${jdbc.password}")private String password;@Bean(name="dataSource")public DataSource createDataSource() throws PropertyVetoException{ComboPooledDataSource dataSource = new ComboPooledDataSource();dataSource.setDriverClass(driverClass);dataSource.setJdbcUrl(jdbcUrl);dataSource.setUser(user);dataSource.setPassword(password);return dataSource;}//spring4.3之前 手动配置 property的解析器@Beanpublic static PropertySourcesPlaceholderConfigurer getPropertySourcesPlaceholderConfigurer(){return new PropertySourcesPlaceholderConfigurer();}
@Configuration标注一个类是配置对象(代替配置文件)@ComponentScan(basePackages={"com.itheima"})包扫描 <context:component-scan>@Import导入其他配置对象@Bean(name="dataSource")将方法的返回值以指定的名称放到spring容器中@PropertySource(value = { "classpath:jdbc.properties" })使用注解方式加载指定property配置文件到spring容器中@Value(value = "${jdbc.driver}")从spring容器中获得指定key的值注意:实际开发中 自定义的类通过注解配置 非自定义的类通过配置文件例如:CustomerDao CustomerService 使用注解DataSource 使用配置文件开发模式:注解+配置文件
spring整合junit测试
步骤
1.导包 spring-test-4.2.4.RELEASE.jar,junit-4.9.jar
2.指定测试类
这里我们新建一个SpringJunitTest类,
@RunWith(org.springframework.test.context.junit4.SpringJUnit4ClassRunner.class)//SpringJUnit4ClassRunner帮你加载配置文件@ContextConfiguration("classpath:applicationContext.xml")//加载配置文件进行测试 --重点//@ContextConfiguration(classes={SpringConfiguration.class})配置类方式public class SpringJunitTest {//测试service@Autowiredprivate CustomerService customerService;@Autowiredprivate CustomerDao customerDao;@Testpublic void test1(){customerDao.save();}@Testpublic void test(){customerService.save();}}
阅读全文
0 0
- spring IoC注解开发---【小白系列】0基础到熟练应用spring框架(二)
- spring AOP---【小白系列】0基础到熟练应用spring框架(三)
- spring环境搭建&spring快速入门---【小白系列】0基础到熟练应用spring框架(一)
- struts2注解&struts404错误---【小白系列】0基础到熟练应用struts2框架(七)
- Struts2结果视图配置---【小白系列】0基础到熟练应用struts2框架(二)
- hibernate的Configuration,SessionFactory,Session详解---【小白系列】0基础到熟练应用hibernate框架(二)
- hibernate环境搭建教程---【小白系列】0基础到熟练应用hibernate框架(一)
- HibernateUtils工具---【小白系列】0基础到熟练应用hibernate框架(四)
- hibernate主键生成策略---【小白系列】0基础到熟练应用hibernate框架(七)
- hibernate一级缓存---【小白系列】0基础到熟练应用hibernate框架(九)
- hibernate多对多关系---【小白系列】0基础到熟练应用hibernate框架(十三)
- hibernate事务---【小白系列】0基础到熟练应用hibernate框架(十)
- hibernatJPA---【小白系列】0基础到熟练应用hibernate框架(十五)
- struts2环境搭建---【小白系列】0基础到熟练应用struts2框架(一)
- struts2获取作用域对象---【小白系列】0基础到熟练应用struts2框架(三)
- struts2值栈&struts ognl表达式---【小白系列】0基础到熟练应用struts2框架(四)
- struts2参数封装---【小白系列】0基础到熟练应用struts2框架(五)
- struts2 interceptor拦截器---【小白系列】0基础到熟练应用struts2框架(六)
- 博弈论翻硬币游戏
- 照片剪裁-jcrop
- Issue-3 字符串和编码,了解bytes str unicode的区别
- 重建二叉树
- HTML调整矩形框的大小、居中、圆角、边框
- spring IoC注解开发---【小白系列】0基础到熟练应用spring框架(二)
- Java向文本指定行插入值
- PHP 无限极分类所形成的三维数组
- Linux的一些总结
- spring-boot-starter-redis学习笔记
- 写得蛮好的linux学习笔记(转)
- Mayor's posters POJ
- Java 日期时间
- Codeforces 630P