spring-kuang
生活随笔
收集整理的這篇文章主要介紹了
spring-kuang
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
spring創建對象
思考:spring的控制翻轉其實就是將創建對象也就是實例化對象交給spring去做,當你在beans.xml中注冊了一個bean時,spring已經幫你實例化好了,你只需要在用的時候從ApplicationContext中取出來即可。而我們在不用spring的時候都是什么時候使用對象的時候再去創建對象然后才能使用你所創建的對象,這樣就是控制反轉,將控制權交給spring容器。
取別名只是多了個名字
不同類型參數注入
各類型屬性參數值注入練習
c命名空間和p命名空間
ByType可以省略id名,因為ByType是根據對象屬性類型來自動裝配的
使用了@Autowired注解可以省略set方法
注意點
這種情況personxml配置中aotuwired=“byname” 和 不填 都可以自動裝配id為"dog119"的對象和id為"cat22"的對象
但是如果autowire=“byType” 就會報錯,原因是xml文件中配置了多個對象,類型都相同,但是名字不同,xml按照類型去自動裝配的話不知道應該裝配哪個對象,就會報錯
========================================================================================
使用注解開發
@Component
在實體類上加上@Component注解后就不用在beans.xml中注冊這個bean了,但是沒有id,在context.getBean(“XX”)方法中所填的id默認為類名小寫
@value
衍生注解
@Configuration和@bean
@Configuration標注在類上,相當于把該類作為spring的xml配置文件中的<beans>,作用為:配置spring容器(應用上下文)package com.dsx.demo;import org.springframework.context.annotation.Configuration;@Configuration public class TestConfiguration {public TestConfiguration() {......} }這個注解加在哪個類上,就相當于這個類變成了ApplicationContext.xml文件,如下
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:util="http://www.springframework.org/schema/util" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd" default-lazy-init="false"></beans>再將@bean注解加在具體的一個類上,就相當于在這個xml文件中注冊一個bean,而且這個類一定是返回pojo包下的某個實體類對象,比如
注意點:(1)@Bean注解在返回實例的方法上,如果未通過@Bean指定bean的名稱,則默認與標注的方法名相同;
舉例:取得這個bean對象時,我們的id值使用的是getuser----->context.getBean(“getUser”)
(2)@Bean注解默認作用域為單例singleton作用域,可通過@Scope(“prototype”)設置為原型作用域
(3)既然@Bean的作用是注冊bean對象,那么完全可以使用@Component、@Controller、@Service、@Repository等注解注冊bean(在需要注冊的類上加注解),當然需要配置@ComponentScan注解進行自動掃描。
實體類
配置類
package com.kuang.config;import com.kuang.pojo.User; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration;@Configuration @ComponentScan("com.kuang.pojo") public class Config {@Beanpublic User getUser(){return new User();} }測試代碼
import com.kuang.config.Config; import com.kuang.pojo.User; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class Test {@org.junit.Testpublic void test(){ApplicationContext context = new AnnotationConfigApplicationContext(Config.class);User user = (User) context.getBean("getUser");System.out.println(user);}}測試代碼目錄結構
動態代理AND AOP
方式一:使用spring的接口實現(MethodBeforeAdvice、AfterReturingAdvice兩個接口)
主要是springAPI接口實現
方式二:使用自定義的類和方法作為切面和通知
主要是切面定義
注解實現aop
aop:在不影響原業務代碼的基礎上增強業務
注解aop測試代碼
使用aop需要一個aop織入依賴,如下
aspectjweaver是spring的切入點表達式需要用的包 <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.4</version></dependency>整合mybatis需要用到的依賴:
spring整合mybatis
spring配置數據源需要兩個東西:一個是spring-jdbc的依賴,另一個就是該包下的DriverManagerDataSource類
第一步:配置數據源
遇到的問題:在spring中配置mybatis時由于全類名太長只能記住DriverManagerDataSource,而spring沒有提示全類名,就需要去file—setting—plugin中搜索spring,將spring相關插件勾選上,再重啟IDEA就可以看到提示了
第二部:配置sqlsessionFactory
在spring-mybatis中,創建sqlSessionFactory是使用sqlSessionFactoryBean這個對象,并在property中配置數據源,這樣sqlsessionfatory便在spring中創建好了
sqlsessionfatory的bean注冊中還可以做其他在mybatis配置文件中所做的事情,注冊mapper;還可以綁定mybatis-config.xml文件,這樣的話,spring和mybatis兩個配置文件就聯系起來了
第三步:注冊sqlsession對象
在spring中sqlsession叫做sqlsessiontemplate,注冊SqlSessionTemplate時需要將SqlSessionFactory作為SqlSessionTemplate的構造器參數注入,因為在創建SqlSessionTemplate對象時需要用到構造器,而SqlSessionTemplate沒有無參構造器,也沒有set方法,只能通過有參構造器的方式創建,而傳入這個有參構造器的參數便是SqlSessionFactory,我們只需引入SqlSessionFactory即可
第四步:編寫UserMapper實現類
要記得將這個實現類注冊到spring中!并傳入參數:sqlsessiontemplate
spring-mybatis整合demo代碼
- 項目結構:
- mybatis配置文件:
- spring配置文件:
- UserMapper.class
- UserMapperImpl.class
- UserMapper.xml文件
在spring中獲取sqlsession的第二種方式:
讓UserMapperImpl類在實現UserMapper接口的同時繼承SqlSessionDaoSupport類,類中有getSqlsession方法可以直接獲取sqlsession
當然,繼承了SqlSessionDaoSupport類的實現類也需要在spring中注冊一個bean
spring事務
使用事務一定需要導入aspectjweaver包
總結
以上是生活随笔為你收集整理的spring-kuang的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ken的第一篇
- 下一篇: 分享:一个自由职业者的心得体会