spring-1-基础ioc
EJB是Spring的前身。
jdbc那个是编程式事务控制。如果有多个方法,很麻烦。
Spring环境配置步骤
<<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>5.0.5.RELEASEversion>
dependency>
创建配置文件:
反射默认是通过无参构造创建对象的。
singleton 和 prototype 对象的创建时间不一样。
singleton: 当配置文件被加载时,bean对象就创建了。
prototype:当配置文件被加载时,bean对象没有被创建,只在getbean时创建。


//静态方法实例化
getUserDao是静态方法
"userdao"
class="com.ustc.dao.UserDaoFactory" factory-method="getUserDao">
//工厂实例方法

依赖注入
eg: userservice的save方法 ,通过ApplicationContext 获取userdao对象,并调用他的save方法。这种有什么弊端?
分析:userservice依赖的userdao还是从容器内部获取的。

set注入
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService = (UserService) context.getBean("userService");
userService.save();
}
public class UserServiceImpl implements UserService {
private UserDao mUserDao;
public void setUserDao(UserDao userDao) {
mUserDao = userDao;
}
public void save() {
mUserDao.save();
}
}
"userService" class="com.ustc.service.UserServiceImpl">
//name是set方法后面的,且第一个字母改为小写
set注入简便方式:p命名空间. 代替子标签property
构造注入
用
其他类型注入
普通属性用value.
集合注入
用property标签的子标签 list map
Properties注入 它键值都是字符串

- 容器中某一类型的bean只有1个时 ,可以用第二种,不用强转。
2.数据源

导包
<<dependencies>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>8.0.19version>
dependency>
<dependency>
<groupId>c3p0groupId>
<artifactId>c3p0artifactId>
<version>0.9.1.2version>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
<version>1.1.18version>
dependency>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
<scope>testscope>
dependency>
dependencies>
//test c3p0数据源
@Test
public void test() throws Exception {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/ustc");
dataSource.setUser("root");
dataSource.setPassword("yyyyyyyy");
Connection connection= dataSource.getConnection();
System.out.println(connection);
connection.close();
}
//test c3p0数据源
@Test
public void test2() throws Exception {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/ustc");
dataSource.setUsername("root");
dataSource.setPassword("yyyyyyyy");
Connection connection= dataSource.getConnection();
System.out.println(connection);
connection.close();
}
//数据库连接的字符串 要修改时,得改源码,和源码耦合,解耦,抽配置文件。
Spring 配置数据源
及spring来产生第三方jar包中的类的对象。
要用spring来配置,得有spring的环境,如何配置?
导spring坐标.
xml中加载properties
引入命名空间
引入Properties
xml中使用properties SpEL表达式 ${}
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!