学习笔记系列开头惯例发布一些寻亲消息
链接:https://baobeihuijia.com/bbhj/contents/3/192486.html
SSM框架——注解配置(@Component + @Autowired + 加载SpringConfig)
-
注解开发(Component注解、config扫描 + 加载SpringConfig)
@Component("bookDao") 可以按照名字或者类型找 BookDao bookDao = ctx.getBean("bookDao"); BookDao bookDao = ctx.getBean(BookDao.class);@Component 只可以按照类型找到 BookService bookService = ctx.getBean(BookService.class);# 扫描该包以及该包下所有子包的注解 <context:component-scan base-package="com.ithema"/>
-
三级注解
- @Service
- @Repository
- @Controller
-
用Config来替换applicationContext.xml容器
//声明当前类为Spring配置类 @Configuration //设置bean扫描路径,多个路径书写为字符串数组格式 @ComponentScan({"com.itheima.service","com.itheima.dao"}) public class SpringConfig { }
-
AnnotationConfigApplicationContext加载Spring配置类初始化Spring容器
-
public class AppForAnnotation {public static void main(String[] args) {//AnnotationConfigApplicationContext加载Spring配置类初始化Spring容器ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);BookDao bookDao = (BookDao) ctx.getBean("bookDao");System.out.println(bookDao);//按类型获取beanBookService bookService = ctx.getBean(BookService.class);System.out.println(bookService);} }
-
控生命周期
-
// 单例 @Scope("prototype")// 控制生命周期 @PostConstruct 构造方法后 public void init(){}@PreDestory 彻底销毁前 public void destory(){}
-
-
依赖注入,自动装配:可以不写setter
// 按照类型装配 @Repository @Autowired//按照名字装配 @Repository("bookDao2")@Autowired @Qualifier("bookDao2")// 简单类型注入,其中value的值可以由properits提供 @Value("给一个值就行666") @Value("${name}") private String name;
@Configuration @ComponentScan("com.itheima")//@PropertySource加载properties配置文件,不支持通配符 @PropertySource({"jdbc.properties"})public class SpringConfig { }
-
第三方管理(手写new代码)
添加@Bean,表示当前方法的返回值是一个bean//@Bean修饰的方法,形参根据类型自动装配@Beanpublic DataSource dataSource(){DruidDataSource ds = new DruidDataSource();ds.setDriverClassName(driver);ds.setUrl(url);ds.setUsername(userName);ds.setPassword(password);return ds;}
一般将上述内容单独写一个JdbcConfig 然后让spring config @Import("JdbcConfig");
- 第三方管理的依赖注入,以形参自动装配
// 简单类型 @Value("com.mysql.jdbc.Driver") private String driver;// 引用类型 @Beanpublic DataSource dataSource(BookDao bookDao){System.out.println(bookDao);DruidDataSource ds = new DruidDataSource();ds.setDriverClassName(driver);ds.setUrl(url);ds.setUsername(userName);ds.setPassword(password);return ds;}
-
XML配置和注解配置的区别
方面 XML配置 Spring Config注解配置 Bean生成
后直接到Spring容器中@Component/三种延申
需要@ComponentScan后才进入容器依赖注入 setter注入 <property name=““ ref=”" />
构造器注入@Autowired
@Qualifer
@Value第三方 当作bean对象,然后赋值proporeties属性 单独一个config文件
@Bean 后new需要的第三方对象
Spring config中需要import这个类声明周期 <bean id=“bookDao” class=“com.itheima.dao.impl.BookDaoImpl” init-method=“init”,destory-mewthod=“destory”/> @PostConstruct 构造方法后
@PreDestory 彻底销毁前属性文件 <context:property-placeholder location=“classpath*.properties” system-properties-mode=“NEVER”/> @PropertSource(”xxxxx) 使用容器 ClassPathXmlApplicationContext ctx = new ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);