一、Spring框架整合其它第三方的框架
1、MyBatis 单机Java网站的开发 SSM
必须导入两个新的坐标:mybatis-spring spring-jdbc 注意版本不要搞乱了
二、Bean基本注解开发
前提:使用Bean注解之前需要在spring.xml里面配置一下
①:配置一个context标签(作用:告诉spring容器,去哪里扫描注解)
②:使用context:component-scan标签(作用:告诉spring容器,将哪个包下面具有@component、@Repository、@Service、@Controller注解的类放置spring容器中)
②-①:context:property-placeholder:spring一运行,就会去加载外部的jdbc配置文件放入容器中
1、@Component(""):代替<bean id="" class="">,当前类放在spring容器中,可以给注解起一个名字。
如果没有给注解起一个名字,那么他默认是类型首字母小写。 例如User(类名)—> user 。
如果只打了一个标记: <bean id="user" class="全限名"> com.pikachu.pojo.User
如果起了"good"名字: <bean id="good" class="全限名"> com.pikachu.pojo.User
注: 默认的只有pojo使用@Component注解
@component:pojo软件包 javaBean 有可能是工具类
@Repository:dao层 数据层
@Service:Service层 业务层
@Controller:Controller层 表现层
2、@Scope(""): 代替了bean标签里面的Scope属性 不写Scope默认是Singleton。
@Scope("singleton") Singleton: 配置文件一家在就放入容器中
@Scope("prototype") prototype: 用到的时候才去加载
3、@Lazy(value = true):等到getBean完之后才会到Singleton中。
4、@PostConstruct和@PreDestroy
@PostConstruct: 初始化注解
@PreDestroy: 销毁注解
三、Bean依赖注入注解开发
5、@Value(""):写在set属性上,注入参数,注入哪个类型的参数就放到对应的set属性上去.
如果要写活的话,例如:jdbc
@Value("${jdbc.driver}")、@Value("${jdbc.url}")、
@Value("${jdbc.username}")、@Value("${jdbc.password}")
需要配置一下spring: context:property-placeholder(具体作用看②-①)
6、@Autowired: 根据类型注入 底层是(暴力)反射
如果有多个实现了接口的对象,那么我们必须和Bean的参数名称匹配
传递的参数的名称和Bean的名称(id属性一致)
@Autowired 还可以给普通方法传递参数
@Autowired 还可以给set方法传递参数
@Autowired 还可以给构造函数传递参数
写法
1.将参数的前面加上@Autowired
2.将@Autowired加到方法的上面
7、@Qualifier("name"): 限定符 和@Autowired一起使用
将spring容器中的名字匹配到方法参数中,和方法参数的名字无关
不管set属性里面的参数写的是什么,@Qualifier匹配的Bean的名称是@Qualifier("name")里的name
写法
1.将参数的前面加上@Autowired
2.将@Autowired加到方法的上面
8、 @Resource(name = "xxx"): 根据名称进行注入 简写方式: 6+7的结合体
@Resource(name = "aaa") name=Bean名称