Spring注解配置PersonService与PersonDao的创建

    科技2026-09-23  19

    Spring简介

    Spring是一个开放源代码的设计层面框架,是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。

    架构体系

    (1)Test :用于测试使用 (2)Core container:核心容器,就是用于装Java Bean对象 (3)AOP:切面编程 (4)Aspects:提供了与AspectJ的集成 (5)Data access:数据访问。用于访问操作我们的数据库。支持持久层的操作。jdbcTemplate mybatis (6)Web:用于支持数据展示层,支持http请求 (7)Transactions:用于支持事物处理。用于解决业务层的事物处理问题。 编程式事务管理和声明式事务管理。

    Spring依赖注入-注解实现注入

    三种注入方式

    1 @Autowired 或者 @Autowired @Qualifier(“bean的id”)2 @Value("#{bean的id}")3 @Resource(name=“bean的id值”)

    环境搭建

    src\main\resources\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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.lgl"/> </beans>

    src\main\resources\log4j.properties

    # Global logging configuration log4j.rootLogger=DEBUG, stdout # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

    配置依赖 pom.xml

    <dependencies> <!--spring依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.9.RELEASE</version> </dependency> <!--日志包--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies>

    src\main\java\com\lgl\domain\Person.java

    public class Person { private String username; private String password; private int id; private String name; private int age; private Date birthday;

    src\main\java\com\lgl\service\PersonService.java

    @Service public class PersonService { private static final Logger log= LoggerFactory.getLogger(PersonService.class); @Autowired PersonDao personDao; public void setPersonDao(PersonDao personDao) { this.personDao = personDao; } public boolean login(Person p) { log.debug(p+" login"); Person person = personDao.find(p); if(person==null) { return false; }else{ return true; } } }

    src\main\java\com\lgl\dao\PersonDao.java

    @Repository public class PersonDao { public Person find(Person p) { if("jack".equals(p.getUsername())&&"12345".equals(p.getPassword())){ return p; }else{ return null; } } }

    src\test\java\com\lgl\demo01\Test01SpringIoc.java

    @Test public void test10(){ PersonService personService = (PersonService) context.getBean("personService"); log.debug(personService+" test10"); PersonDao personDao = (PersonDao) context.getBean("personDao");//id为类名首字符小写 log.debug(personDao +" test10"); }

    结果

    Spring的IOC-单例和多例

    单例 内存中只有一个对象,每次获取到该对象的地址值一样 <bean id="person" class="com.lgl.domain.Person" scope="singleton"/> 多例 内存中的每个对象都是一个新的对象,他们的地址值都不同 <bean id="person" class="com.lgl.domain.Person" scope="singleton"/>
    Processed: 0.009, SQL: 9