系列文章目录
IOC学习笔记Ⅰ
一、bean 的作用域
< bean > 元素的 scope 属性里设置 Bean 的作用域
1.singleton(单例)
在SpringIOC 容器里仅存在一个Bean实例,,Bean以单例的方式存在整个 IOC 容器范围内都能共享该实例。
2.prototype(原型)
每次调用getBean()都会返回一个新的实例。
二、使用外部配置文件
jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_db
jdbc.username=root
jdbc.password=123
<bean class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
三、spring 的注解
1.pom.xml添加依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
2.配置扫描
<context:component-scan base-package="com.springdemo.bean">
3.创建接口及其实现类
@Component、@Controller、@Service、@Repository
注解的作用是一样的,都是在告诉 spring,请把这个类放入到IOC容器中
方便我们后期在编写类的时候能很好的区分出这个类是属于表现层
、业务层
还是数据层
的类。
public interface BookDao {
public void save();
}
@Repository
public class BookDaoImpl implements BookDao {
public void save() {
System.out.println("book dao save ..." );
}
}
@Autowired默认按照类型自动装配,如果IOC容器中同类的Bean找到多个,就按照变量名和Bean的名称匹配
@Service
public class BookServiceImpl implements BookService {
@Autowired
private BookDao bookDao;
public void save() {
System.out.println("book service save ...");
bookDao.save();
}
}
4.测试
public class Test {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
BookService bookService = ctx.getBean(BookService.class);
bookService.save();
}
}
总结
对与IOC又有了更清晰的认知,对于spring的注解开发有了一个大致的了解。