Bonjour. J'ai decoupés un projet en plusieurs modules(ici un module= un projet)
j'ai 2 projets A et B dont B depend de A.

projet A contient un fichier jdbc-context.xml

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>${parent.groupId}</groupId>
  <artifactId>A</artifactId>
  <packaging>jar</packaging>
  <version>${parent.version}</version>
  <name>SyGACUT Database</name>
 
  <parent>
    <groupId>org.laplace</groupId>
    <artifactId>P</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../SyGACUT/pom.xml</relativePath>
  </parent>  
</projet>
jdbc-context.xml

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?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:p="http://www.springframework.org/schema/p"
       xmlns:tx="http://www.springframework.org/schema/tx" 
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       <a href="http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" target="_blank">http://www.springframework.org/schem...-beans-3.0.xsd</a>
       <a href="http://www.springframework.org/schema/aop" target="_blank">http://www.springframework.org/schema/aop</a>
       <a href="http://www.springframework.org/schema/aop/spring-aop-3.0.xsd" target="_blank">http://www.springframework.org/schem...ng-aop-3.0.xsd</a>
       <a href="http://www.springframework.org/schema/mvc" target="_blank">http://www.springframework.org/schema/mvc</a> 
       <a href="http://www.springframework.org/schema/mvc/spring-mvc.xsd" target="_blank">http://www.springframework.org/schem...spring-mvc.xsd</a>
       <a href="http://www.springframework.org/schema/tx" target="_blank">http://www.springframework.org/schema/tx</a>
       <a href="http://www.springframework.org/schema/tx/spring-tx-3.0.xsd" target="_blank">http://www.springframework.org/schem...ing-tx-3.0.xsd</a>
       <a href="http://www.springframework.org/schema/context" target="_blank">http://www.springframework.org/schema/context</a>
       http://www.springframework.org/schema/context/spring-context-3.0.xsd">  
 
    <context:component-scan base-package="org.laplace" />
    <!-- <context:component-scan base-package="org.laplace.service" /> -->
 
    <!-- <context:property-placeholder location="/WEB-INF/jdbc.properties,/WEB-INF/mybatis/mybatis.properties" />-->
    <context:property-placeholder location="classpath:jdbc.properties,classpath:mybatis.properties" />
    <!-- Enable annotation style of managing transactions -->
    <tx:annotation-driven transaction-manager="transactionManager" />
 
    <!-- Declare a datasource that has pooling capabilities -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
      <property name="driverClassName" value="${jdbc.driverClassName}"/>
      <property name="url" value="${jdbc.url}"/>
      <property name="username" value="${jdbc.username}"/>
      <property name="password" value="${jdbc.password}"/>
    </bean>
 
    <!-- define the SqlSessionFactory, notice that configLocation is not needed when you use MapperFactoryBean -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="typeAliasesPackage" value="org.laplace.model"/>
        <property name="mapperLocations" value="classpath*:org/laplace/mapper/**/*.xml" />
        <!-- <property name="configLocation" value="WEB-INF/mybatis/sqlmap-config.xml" /> -->
    </bean>
 
    <!-- <bean id="CutAgentService" class="org.laplace.service.CutAgentService"/> -->
 
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSessionFactory" />
    </bean>
 
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="org.laplace.mapper" />
    </bean>
 
    <!-- Declare a transaction manager -->
    <tx:annotation-driven transaction-manager="transactionManager"/>
 
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
       <property name="dataSource" ref="dataSource" />
    </bean>
 
 
    <!-- scan for mappers and let them be autowired -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="org.laplace.mapper" />
        <!-- <property name="basePackage" value="${MapperInterfacePackage}" /> -->
    </bean>
 
</beans>

projet B depend de A

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>${parent.groupId}</groupId>
  <artifactId>B</artifactId>
  <packaging>war</packaging>
  <version>${parent.version}</version>
  <name>SyGACUT Web Poste Maven Webapp</name>
  <url>http://maven.apache.org</url>
 
  <parent>
    <groupId>org.laplace</groupId>
    <artifactId>A</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../P/pom.xml</relativePath>
  </parent>  
</projet>
je fais des test dans le projet a


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package org.laplace.service;
 
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
//import org.laplace.util.MyBatisUtil;
import org.laplace.model.CutAgent;
import org.laplace.dao.CutAgentMapper;
 
@Service
@Transactional
public class CutAgentService {
 
	@Autowired
	private SqlSession sqlSession; //This is to demonstrate injecting SqlSession object
 
	public void insertAgent(CutAgent agent) {
    	CutAgentMapper agentMapper = sqlSession.getMapper(CutAgentMapper.class);
 		agentMapper.insert(agent);
    	 /*SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession();
        try {
	        CutAgentMapper agentMapper = sqlSession.getMapper(CutAgentMapper.class);
	        agentMapper.insert(agent);
            sqlSession.commit();
        } finally {
           sqlSession.close();
        }*/
     }
 
     public CutAgent getAgentById(String AgentId) {
    	 CutAgentMapper agentMapper = sqlSession.getMapper(CutAgentMapper.class);
    	 return agentMapper.selectByPrimaryKey(AgentId);
    	 /*SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession();
    	 try {
    		 CutAgentMapper agentMapper = sqlSession.getMapper(CutAgentMapper.class);
             return agentMapper.selectByPrimaryKey(AgentId);
         } finally {
             sqlSession.close();
         }*/
     }
 
     public List<CutAgent> selectAllAgents() {
    	 CutAgentMapper agentMapper = sqlSession.getMapper(CutAgentMapper.class);
    	 return agentMapper.selectAllAgents();
    	 /*SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession();
    	 try {
    		 CutAgentMapper agentMapper = sqlSession.getMapper(CutAgentMapper.class);
    		 return agentMapper.selectAllAgents();
         } finally {
        	 sqlSession.close();
         }*/
     }
 
     public void updateAgent(CutAgent agent) {
    	 CutAgentMapper agentMapper = sqlSession.getMapper(CutAgentMapper.class);
         agentMapper.updateByPrimaryKey(agent);
    	 /*SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession();
         try {
	         CutAgentMapper agentMapper = sqlSession.getMapper(CutAgentMapper.class);
	         agentMapper.updateByPrimaryKey(Agent);
             sqlSession.commit();
         } finally {
             sqlSession.close();
         }*/
     }
 
     public void deleteAgent(String AgentId) {
    	 CutAgentMapper agentMapper = sqlSession.getMapper(CutAgentMapper.class);
		 agentMapper.deleteByPrimaryKey(AgentId);
    	 /*SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession();
    	 try {
    		 CutAgentMapper agentMapper = sqlSession.getMapper(CutAgentMapper.class);
    		 agentMapper.deleteByPrimaryKey(AgentId);
    		 sqlSession.commit();
         } finally {
        	 sqlSession.close();
         }*/
     }
}


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package org.laplace.test;
 
import java.util.List;
 
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
import org.laplace.model.CutAgent;
import org.laplace.dao.CutAgentMapper;
import org.laplace.service.CutAgentService;
 
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:jdbc-context.xml")
public class SpringAgentServiceTest {
 
	@Autowired
    private CutAgentService agentService;
 
    @Test
    public void testGetUserById() {
    	CutAgent agent = agentService.getAgentById("323465X");
    	Assert.assertNotNull(agent);
    	System.out.println(agent);
    }
 
    @Test
    public void testUpdateUser() {
    	long timestamp = System.currentTimeMillis();
    	CutAgent agent = agentService.getAgentById("323465X");
    	agent.setAGT_NOM("TestFirstName"+timestamp);
    	agent.setAGT_PRENOM("TestLastName"+timestamp);
    	agentService.updateAgent(agent);
    	CutAgent updatedUser = agentService.getAgentById("323465X");
    	Assert.assertEquals(agent.getAGT_NOM(), updatedUser.getAGT_NOM());
    	Assert.assertEquals(agent.getAGT_PRENOM(), updatedUser.getAGT_PRENOM());
    }
    //For Example: If we want to get count of how many records got updated by an Update query we can use SqlSession as follows:
    //int updatedRowCount = sqlSession.update("com.sivalabs.mybatisdemo.mappers.UserMapper.updateUser", agent);
 
}
et cela se deroule bien

dans le projet b


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns="http://java.sun.com/xml/ns/javaee" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>SyGACUTPosteComptable</display-name>
 
  <context-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>/WEB-INF/laplace-servlet.xml</param-value>
  </context-param>
 
  <listener>
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
 
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
 
  <servlet>
     <servlet-name>laplace</servlet-name>
     <servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class>
     <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/laplace-servlet.xml</param-value>
     </init-param>        
     <load-on-startup>1</load-on-startup>
  </servlet>
 
  <servlet-mapping>
	 <servlet-name>laplace</servlet-name>
	 <url-pattern>/</url-pattern>
  </servlet-mapping>
 
</web-app>

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:mvc="http://www.springframework.org/schema/mvc" 
	   xmlns:context="http://www.springframework.org/schema/context"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xsi:schemaLocation="
        <a href="http://www.springframework.org/schema/beans" target="_blank">http://www.springframework.org/schema/beans</a>     
        <a href="http://www.springframework.org/schema/beans/spring-beans.xsd" target="_blank">http://www.springframework.org/schem...ring-beans.xsd</a>
        <a href="http://www.springframework.org/schema/mvc" target="_blank">http://www.springframework.org/schema/mvc</a> 
        <a href="http://www.springframework.org/schema/mvc/spring-mvc.xsd" target="_blank">http://www.springframework.org/schem...spring-mvc.xsd</a>
        <a href="http://www.springframework.org/schema/context" target="_blank">http://www.springframework.org/schema/context</a> 
        http://www.springframework.org/schema/context/spring-context.xsd">
 
    <!-- <import resource="classpath:/META-INFSyGACUTDB/jdbc-context.xml"/> -->
    <mvc:default-servlet-handler/>
	<mvc:annotation-driven/> 
	<context:component-scan base-package="org.laplace">
       <context:include-filter type="regex" expression="(service|controller|validator)\..*"/>
    </context:component-scan>
 
	<import resource="classpath*:META-INF/A/jdbc-context.xml" />
 
	<!--  
	<context:component-scan base-package="org.laplace.service" />
	<context:component-scan base-package="org.laplace.controller" />
	<context:component-scan base-package="org.laplace.validator" />
    -->  
 
	<!-- Application Message Bundle -->
	<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
		<property name="basename" value="/WEB-INF/resources/messages.properties" />
		<property name="cacheSeconds" value="3000" />
	</bean>	
 
	<!-- Resolves view names to protected .jsp resources within the /WEB-INF/views directory -->
	<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/pages/"/>
		<property name="suffix" value=".jsp"/>
	</bean>
 
</beans>

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package org.laplace.validator;
 
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
 
import org.laplace.model.CutAgent;
 
@Component
public class RegistrationValidator implements Validator {
 
        public boolean supports(Class<?> c) {
                return CutAgent.class.isAssignableFrom(c);
        }
 
        public void validate(Object command, Errors errors) {
                ValidationUtils.rejectIfEmptyOrWhitespace(errors, "matricule", "field.matricule.empty");
                ValidationUtils.rejectIfEmptyOrWhitespace(errors, "civilité", "field.civilite.empty");
                ValidationUtils.rejectIfEmptyOrWhitespace(errors, "nom", "field.nom.empty");
                ValidationUtils.rejectIfEmptyOrWhitespace(errors, "prenom", "field.prenom.empty");
                ValidationUtils.rejectIfEmptyOrWhitespace(errors, "login", "field.login.empty");
                ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "field.password.empty");
                //CutAgent agentBean = (CutAgent)command;
                //if(!isNumber(agentBean.getAge().trim()))
                //        errors.rejectValue("age", "field.age.NAN");
        }
 
        private boolean isNumber(String str){
            for (int i = 0; i < str.length(); i++) {
 
                //If we find a non-digit character we return false.
                if (!Character.isDigit(str.charAt(i)))
                return false;
                }
 
                return true;
        }
}

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package org.laplace.controller;
 
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
 
 
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
 
import org.laplace.model.CutAgent; 
import org.laplace.service.CutAgentService;
import org.laplace.validator.RegistrationValidator;
 
@Controller
@RequestMapping("/registration")
public class RegistrationController {
 
	private RegistrationValidator validator = null;
    private CutAgentService agentService = null;
 
    @Autowired
    public void setCutAgentService(CutAgentService agentService) {
            this.agentService = agentService;
    }
 
    public RegistrationValidator getValidator() {
            return validator;
    }
 
    @Autowired
    public void setValidator(RegistrationValidator validator) {
            this.validator = validator;
    }
 
	@RequestMapping(method=RequestMethod.GET)
	public ModelAndView helloWorld() {
		List<CutAgent> agentbds = agentService.selectAllAgents();
		List<CutAgent> agents = getList();
		String message = "<br><div style='text-align:center;'>"
		+ "<h3>********** Hello World, Spring MVC Tutorial</h3>Registration **********</div><br><br>";
		return new ModelAndView("registration", "agents", agents);
	}
 
	private List<CutAgent> getList() {
 
		List<CutAgent> list = new ArrayList<CutAgent>();
		CutAgent a1 = new CutAgent();
		a1.setAGT_MAT("3");
		a1.setAGT_NOM("sssy");
		a1.setAGT_PRENOM("xxx");
		a1.setAGT_CIVILITE("Mr");
		a1.setAGT_LOGIN("cut");
		a1.setAGT_PWD("cut");
		list.add(a1);
 
		CutAgent a2 = new CutAgent();
		a2.setAGT_MAT("2");
		a2.setAGT_NOM("Bccc");
		a2.setAGT_PRENOM("cccy");
		a2.setAGT_CIVILITE("Mr");
		a2.setAGT_LOGIN("demo");
		a2.setAGT_PWD("demo");		
		list.add(a2);
 
		CutAgent a3 = new CutAgent();
		a3.setAGT_MAT("1");
		a3.setAGT_NOM("ddd");
		a3.setAGT_PRENOM("xx");
		a3.setAGT_CIVILITE("Mr");
		a3.setAGT_LOGIN("x");
		a3.setAGT_PWD("x");
		list.add(a3);
 
		return list;
	}
}

et enfin le test

package org.laplace.test;

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.util.List;
 
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
import org.laplace.model.CutAgent;
import org.laplace.service.CutAgentService;
 
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:laplace-servlet.xml")
public class SpringAgentServiceTest {
 
	@Autowired
    private CutAgentService agentService;
 
    @Test
    public void testGetUserById() {
    	CutAgent agent = agentService.getAgentById("id");
    	Assert.assertNotNull(agent);
    	System.out.println(agent);
    }
 
    @Test
    public void testUpdateUser() {
    	long timestamp = System.currentTimeMillis();
    	CutAgent agent = agentService.getAgentById("id");
    	agent.setAGT_NOM("cvbcbbc");
    	agent.setAGT_PRENOM("ddddddd");
    	agentService.updateAgent(agent);
    	CutAgent updatedUser = agentService.getAgentById("id");
    	Assert.assertEquals(agent.getAGT_NOM(), updatedUser.getAGT_NOM());
    	Assert.assertEquals(agent.getAGT_PRENOM(), updatedUser.getAGT_PRENOM());
    }
    //For Example: If we want to get count of how many records got updated by an Update query we can use SqlSession as follows:
    //int updatedRowCount = sqlSession.update("com.sivalabs.mybatisdemo.mappers.UserMapper.updateUser", agent);
 
}
et là j'ai l'erreur

oct. 27, 2016 10:19:53 AM org.springframework.test.context.support.DefaultTestContextBootstrapper getDefaultTestExecutionListenerClassNames
INFOS: Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]
oct. 27, 2016 10:19:53 AM org.springframework.test.context.support.DefaultTestContextBootstrapper getTestExecutionListeners
INFOS: Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@4a765, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@3e6358, org.springframework.test.context.support.DependencyInjectionTestExecutionListener@1550481, org.springframework.test.context.support.DirtiesContextTestExecutionListener@15f7ae5, org.springframework.test.context.transaction.TransactionalTestExecutionListener@bc464, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener@124409e]
oct. 27, 2016 10:19:53 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFOS: Loading XML bean definitions from class path resource [laplace-servlet.xml]
oct. 27, 2016 10:19:53 AM org.springframework.context.support.GenericApplicationContext prepareRefresh
INFOS: Refreshing org.springframework.context.support.GenericApplicationContext@f5e5e3: startup date [Thu Oct 27 10:19:53 GMT 2016]; root of context hierarchy
oct. 27, 2016 10:19:53 AM org.springframework.web.servlet.handler.SimpleUrlHandlerMapping registerHandler
INFOS: Mapped URL path [/**] onto handler 'org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler#0'
oct. 27, 2016 10:19:53 AM org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping register
INFOS: Mapped "{[/registration],methods=[GET]}" onto public org.springframework.web.servlet.ModelAndView org.laplace.controller.RegistrationController.helloWorld()
oct. 27, 2016 10:19:53 AM org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping register
INFOS: Mapped "{[/welcome]}" onto public org.springframework.web.servlet.ModelAndView org.laplace.controller.WelcomeController.helloWorld()
oct. 27, 2016 10:19:54 AM org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter initControllerAdviceCache
INFOS: Looking for @ControllerAdvice: org.springframework.context.support.GenericApplicationContext@f5e5e3: startup date [Thu Oct 27 10:19:53 GMT 2016]; root of context hierarchy
oct. 27, 2016 10:19:54 AM org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter initControllerAdviceCache
INFOS: Looking for @ControllerAdvice: org.springframework.context.support.GenericApplicationContext@f5e5e3: startup date [Thu Oct 27 10:19:53 GMT 2016]; root of context hierarchy
oct. 27, 2016 10:19:54 AM org.springframework.context.support.GenericApplicationContext refresh
AVERTISSEMENT: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'registrationController': Unsatisfied dependency expressed through method 'setCutAgentService' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'cutAgentService': Unsatisfied dependency expressed through field 'sqlSession'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean found for dependency [org.apache.ibatis.session.SqlSession]: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
oct. 27, 2016 10:19:54 AM org.springframework.test.context.TestContextManager prepareTestInstance
GRAVE: Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@1550481] to prepare test instance [org.laplace.test.SpringAgentServiceTest@3295b0]
java.lang.IllegalStateException: Failed to load ApplicationContext
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)
	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83)
	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:117)
	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:230)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:287)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'registrationController': Unsatisfied dependency expressed through method 'setCutAgentService' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'cutAgentService': Unsatisfied dependency expressed through field 'sqlSession'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean found for dependency [org.apache.ibatis.session.SqlSession]: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:648)
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:349)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1219)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:751)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
	at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:128)
	at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:60)
	at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:108)
	at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:251)
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98)
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116)
	... 25 more
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'cutAgentService': Unsatisfied dependency expressed through field 'sqlSession'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean found for dependency [org.apache.ibatis.session.SqlSession]: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:569)
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:349)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1219)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:207)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1128)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1056)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:640)
	... 43 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean found for dependency [org.apache.ibatis.session.SqlSession]: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1463)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1094)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1056)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:566)
	... 56 more

oct. 27, 2016 10:19:54 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFOS: Loading XML bean definitions from class path resource [laplace-servlet.xml]
oct. 27, 2016 10:19:54 AM org.springframework.context.support.GenericApplicationContext prepareRefresh
INFOS: Refreshing org.springframework.context.support.GenericApplicationContext@1045c6c: startup date [Thu Oct 27 10:19:54 GMT 2016]; root of context hierarchy
oct. 27, 2016 10:19:54 AM org.springframework.web.servlet.handler.SimpleUrlHandlerMapping registerHandler
INFOS: Mapped URL path [/**] onto handler 'org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler#0'
oct. 27, 2016 10:19:54 AM org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping register
INFOS: Mapped "{[/registration],methods=[GET]}" onto public org.springframework.web.servlet.ModelAndView org.laplace.controller.RegistrationController.helloWorld()
oct. 27, 2016 10:19:54 AM org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping register
INFOS: Mapped "{[/welcome]}" onto public org.springframework.web.servlet.ModelAndView org.laplace.controller.WelcomeController.helloWorld()
oct. 27, 2016 10:19:54 AM org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter initControllerAdviceCache
INFOS: Looking for @ControllerAdvice: org.springframework.context.support.GenericApplicationContext@1045c6c: startup date [Thu Oct 27 10:19:54 GMT 2016]; root of context hierarchy
oct. 27, 2016 10:19:54 AM org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter initControllerAdviceCache
INFOS: Looking for @ControllerAdvice: org.springframework.context.support.GenericApplicationContext@1045c6c: startup date [Thu Oct 27 10:19:54 GMT 2016]; root of context hierarchy
oct. 27, 2016 10:19:54 AM org.springframework.context.support.GenericApplicationContext refresh
AVERTISSEMENT: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'registrationController': Unsatisfied dependency expressed through method 'setCutAgentService' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'cutAgentService': Unsatisfied dependency expressed through field 'sqlSession'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean found for dependency [org.apache.ibatis.session.SqlSession]: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
oct. 27, 2016 10:19:54 AM org.springframework.test.context.TestContextManager prepareTestInstance
GRAVE: Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@1550481] to prepare test instance [org.laplace.test.SpringAgentServiceTest@1be7b63]
java.lang.IllegalStateException: Failed to load ApplicationContext
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)
	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83)
	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:117)
	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:230)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:287)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'registrationController': Unsatisfied dependency expressed through method 'setCutAgentService' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'cutAgentService': Unsatisfied dependency expressed through field 'sqlSession'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean found for dependency [org.apache.ibatis.session.SqlSession]: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:648)
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:349)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1219)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:751)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
	at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:128)
	at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:60)
	at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:108)
	at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:251)
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98)
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116)
	... 25 more
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'cutAgentService': Unsatisfied dependency expressed through field 'sqlSession'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean found for dependency [org.apache.ibatis.session.SqlSession]: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:569)
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:349)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1219)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:207)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1128)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1056)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:640)
	... 43 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean found for dependency [org.apache.ibatis.session.SqlSession]: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1463)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1094)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1056)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:566)
	... 56 more