目录
ioc
DI
快速案例
集合注入
加载properties文件
纯注解开发模式
注解开发管理第三方bean
ioc
ioc是控制反转的意思,是一种面向对象编程的设计思想。如果不采用这种思想的话我们需要自己维护对象与对象的依赖关系,很容易造成对象耦合度过高。而ioc则可以解决此问题。
ioc容器本质上是一工厂,它把所用到的javaBean对象放入容器中,在需要时直接从容器中获取。而不需要我们再自己new创建实例对象。
DIDI是依赖注入的意思,它可以将两个有关系的javaBean对象通过Setter方式进行关联。
快速案例导入spring坐标
4.0.0
org.example
spring_01_quickstart1
1.0-SNAPSHOT
UTF-8
UTF-8
1.8
1.8
1.8
org.springframework
spring-context
5.2.10.RELEASE
junit
junit
4.12
test
在resources中创建spring配置类applicationContext.xml配置bean
DI通过setter方式进行注入
package com.itheima.service.Impl;
import com.itheima.dao.BookDao;
import com.itheima.service.BookService;
public class BookServiceImpl implements BookService {
//3、DI通过setter方式进行注入
private BookDao bookDao;
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
public void save() {
bookDao.save();
System.out.println("book service save...");
}
}
package com.itheima;
import com.itheima.service.BookService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
public static void main(String[] args) {
// 5、获取IoC容器
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
//6、获取bean
BookService bookService = (BookService) app.getBean("bookService");
bookService.save();
}
}
集合注入
在applicationContext.xml核心容器中配置
123
456
789
nihao
我是
who
nihao
nihao1
Nihao
nihao
xian
huashengdun
dj
加载properties文件
有时候我们需要将一些信息保存在properties文件中,比如jdbc的各种配置:
- 在pom中添加druid的坐标
com.alibaba
druid
1.1.16
- 创建jdbc.properties文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_db
jdbc.user=root
jdbc.password=mysql
- 在spring容器中开启新的命名空间:context
- 使用context空间加载properties文件
- 在spring容器中配置datasouce bean对象
- 使用属性占位符${}获得文件信息
纯注解开发模式
- 创建配置类并表示该类为配置类
package com.itheima.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;
@Configuration//设置该类为配置类
@ComponentScan("com.itheima")//包扫描
@PropertySource("jdbc.properties")//加载properties文件
public class SpringConfig {
}
- 在类上添加添加注解配置bean
对于@Component注解,还衍生出了其他三个注解@Controller,@Service,@Repository
方便我们后期在编写类的时候能很好的区分出这个类是属于表现层
、业务层
还是数据层
的类。
dao层:
package com.itheima.dao.Impl;
import com.itheima.dao.BookDao;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Repository;
import javax.print.DocFlavor;
@Repository("bookDao")//配置bean
public class BookDaoImpl implements BookDao {
@Value("${jdbc.driver}")
private String driver;
@Value("nihao")
private String name;
@Override
public void save() {
System.out.println("bookDao..."+name+" "+driver);
}
}
Service层:
package com.itheima.service.Impl;
import com.itheima.dao.BookDao;
import com.itheima.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import javax.sql.DataSource;
@Service
public class BookServiceImpl implements BookService {
@Autowired
@Qualifier("bookDao")
private BookDao bookDao;
@Autowired
private DataSource dataSource;
@Override
public void save() {
bookDao.save();
System.out.println("bookService..."+dataSource);
}
}
- 创建运行类并执行
package com.itheima;
import com.itheima.config.SpringConfig;
import com.itheima.service.BookService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class App {
public static void main(String[] args) {
//加载配置类初始化容器
ApplicationContext apt =new AnnotationConfigApplicationContext(SpringConfig.class);
BookService bookService = (BookService) apt.getBean(BookService.class);
bookService.save();
}
}
@Autowired:通过类型为引用类型属性设置值
@Qualifier:加入ioc容器中有多种相同类型bean,需要使用该注解通过bean名称为引用类型属性设· 置值
@Value:为基本数据类型或字符串类型属性设置值
@PropertySource:加载properties文件中的属性值
注解开发管理第三方bean我们通常把所有第三方bean配置到SpringConfig之外的配置类,这样有利于代码阅读和分类管理
- 创建JdbcConfig类来管理jdbc配置
- 在该配置类中添加一方法,并在该方法上添加@Bean注解
package com.itheima.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import javax.sql.DataSource;
public class JdbcConfig {
@Bean
public DataSource dataSource(){
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName("${jdbc.driver}");
ds.setUrl("${jdbc.url}");
ds.setUsername("${jdbc.user}");
ds.setPassword("${jdbc.password}");
return ds;
}
}
- 在Spring的配置类上添加@Import引入该配置类
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)