使用java方式装配Bean

首先创建一个项目

然后是项目名

下图:

  

创建完项目先配置pom.xml依赖关系

<?xml version="1.0" encoding="UTF-8"?>
<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>com.csw.ssm</groupId>
    <artifactId>SpringBean</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <spring.version>5.1.0.RELEASE</spring.version>
    </properties>

    <dependencies>
    <!-- Spring Web MVC -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
    <dependency>
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>6.0.13.Final</version>
    </dependency>

    <!-- servlet 系列的支持 -->
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>8.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper</artifactId>
        <version>5.1.7</version>
    </dependency>

    <!-- Springframework -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.9.1</version>
    </dependency>

    <!-- MyBatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.6</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.3.2</version>
    </dependency>

    <!-- 数据库驱动以及数据库连接池-->
    <dependency>
        <groupId>org.mariadb.jdbc</groupId>
        <artifactId>mariadb-java-client</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.mchange</groupId>
        <artifactId>c3p0</artifactId>
        <version>0.9.5.2</version>
    </dependency>

    <!-- 日志框架 -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.0.0</version>
    </dependency>

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.0.0</version>
    </dependency>

        <!-- 通用工具 -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.7</version>
        </dependency>

        <!-- 单元测试 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>
        <finalName>contact</finalName>

        <plugins>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.7</version>
                <dependencies>
                    <dependency>
                        <groupId>org.mariadb.jdbc</groupId>
                        <artifactId>mariadb-java-client</artifactId>
                        <version>2.3.0</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>

</project>

在resources下配MyBatis文件generatorConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
    <!--jdbc 驱动包,等-->
    <!--<classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" />-->

    <context id="sss" targetRuntime="MyBatis3Simple">

        <commentGenerator>
            <property name="suppressAllComments" value="true" />
        </commentGenerator>

        <jdbcConnection driverClass="org.mariadb.jdbc.Driver"
                        connectionURL="jdbc:mariadb://localhost/student"
                        userId="root"
                        password="13794709305">
        </jdbcConnection>

        <javaModelGenerator targetPackage="com.csw.entity" targetProject="src\main\java">
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <sqlMapGenerator targetPackage="mapper"  targetProject="src\main\resources">
        </sqlMapGenerator>

        <javaClientGenerator type="XMLMAPPER" targetPackage="com.csw.dao" targetProject="src\main\java">
        </javaClientGenerator>

        <table tableName="%">
            <property name="useActualColumnNames" value="true"/>
        </table>

    </context>
</generatorConfiguration>

配置jdbc.properties.xml

jdbc.driver=org.mariadb.jdbc.Driver
jdbc.url=jdbc:mariadb://localhost:3306/student
jdbc.user=root
jdbc.password=13794709305
jdbc.txType=JDBC

配置日志文件logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %msg%n
            </Pattern>
        </layout>
    </appender>

    <logger name="com.csw.dao" level="debug" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>

    <root level="error">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

配置mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

    <settings>
        <!-- 使用jdbc的getGeneratedKeys获取数据库自增主键值 -->
        <setting name="useGeneratedKeys" value="true" />
        <!-- 使用列别名替换列名 默认:true -->
        <setting name="useColumnLabel" value="true" />
        <!-- 开启驼峰命名转换:Table {create_time} -> Entity {createTime} -->
        <setting name="mapUnderscoreToCamelCase" value="true" />
    </settings>

    <!--&lt;!&ndash;定义一些可以复用的变量&ndash;&gt;-->
    <!--<properties resource="jdbc.properties" />-->

    <!--<settings>-->
        <!--<setting name="cacheEnabled" value="true" /> &lt;!&ndash; 开启二级缓存 &ndash;&gt;-->
        <!--<setting name="autoMappingBehavior" value="PARTIAL"/>-->
        <!--<setting name="mapUnderscoreToCamelCase" value="true"/>-->
        <!--<setting name="localCacheScope" value="SESSION" />-->
    <!--</settings>-->

    <!--&lt;!&ndash;设置别名,可以简化在 xml 中的完全限定名的使用&ndash;&gt;-->
    <!--<typeAliases>-->
        <!--<package name="com.csw.entity" /> &lt;!&ndash; 可以跟 @Alias 结合使用 &ndash;&gt;-->
    <!--</typeAliases>-->

    <!--<environments default="prod">-->
        <!--<environment id="prod">-->
            <!--<transactionManager type="JDBC" />-->
            <!--<dataSource type="POOLED">-->
                <!--<property name="driver" value="${driver}"/>-->
                <!--<property name="url" value="${url}"/>-->
                <!--<property name="username" value="${username}"/>-->
                <!--<property name="password" value="${password}"/>-->
            <!--</dataSource>-->
        <!--</environment>-->
    <!--</environments>-->

    <!--<databaseIdProvider type="DB_VENDOR">-->
        <!--<property name="MySQL" value="mysql"/>-->
        <!--<property name="SQL Server" value="sqlserver"/>-->
        <!--<property name="DB2" value="db2"/>-->
        <!--<property name="Oracle" value="oracle" />-->
    <!--</databaseIdProvider>-->

    <!--&lt;!&ndash;指定映射器&ndash;&gt;-->
    <!--&lt;!&ndash;<mappers>&ndash;&gt;-->
        <!--&lt;!&ndash;<mapper resource="mapper/xxx.xml" />&ndash;&gt;-->
    <!--&lt;!&ndash;</mappers>&ndash;&gt;-->

</configuration>

配置spring-web.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://www.springframework.org/schema/beans "
       xmlns:mvc="http://www.springframework.org/schema/c" xmlns:contxt="http://www.springframework.org/schema/p">

    <!--跨域的配置-->
    <mvc:cors>
        <mvc:mapping path="/xxx"
            allowed-origins="http://localhost:8080"
            allowed-methods="GET,POST"
            allowed-headers="Accept-Charset,Accept,Content-Type"
            allow-credentials="true"
        />
        <mvc:mapping path="/yyy/*"
            allowed-origins="*"
            allowed-methods="*"
            allowed-headers="*"/>
    </mvc:cors>

    <!--&lt;!&ndash;配置验证器&ndash;&gt;-->
       <!--<bean id="myValidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">-->
        <!--<property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>-->
        <!--<property name="validationMessageSource" ref="messageSource"/>-->
    <!--</bean>-->

    <!--&lt;!&ndash;国际化&ndash;&gt;-->
    <!--<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">-->
        <!--<property name="basename" value="classpath:messagesxx"/>-->
        <!--<property name="defaultEncoding" value="GBK"/>-->
    <!--</bean>-->
    <!--<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">-->
        <!--<property name="defaultLocale"-->
                  <!--value="zh"/> &lt;!&ndash;当通过 Accept-Language 自动确定 Locale 的方式已经满足不了你,那么你需要试试注册一个 LocaleResolver 来制定 Locale 策略&ndash;&gt;-->
    <!--</bean>-->

    <!--&lt;!&ndash;启用注解扫描&ndash;&gt;-->
    <contxt:component-scan base-package="com.csw.controller" />

    <!--&lt;!&ndash;启用mvc的常用注解&ndash;&gt;-->
    <!--<mvc:annotation-driven validator="myValidator" conversion-service="conversionService">-->
        <!--&lt;!&ndash;@ResponseBody 的 UTF-8 编码&ndash;&gt;-->
        <!--<mvc:message-converters register-defaults="true">-->
            <!--<bean class="org.springframework.http.converter.StringHttpMessageConverter">-->
                <!--<constructor-arg value="GBK"/>-->
            <!--</bean>-->
            <!--<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">-->
                <!--<property name="objectMapper">-->
                    <!--<bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">-->
                        <!--<property name="failOnEmptyBeans" value="false"/>-->
                        <!--<property name="dateFormat">-->
                            <!--<bean class="java.text.SimpleDateFormat">-->
                                <!--<constructor-arg value="yyyy 年 MM 月 dd 日 " />-->
                            <!--</bean>-->
                        <!--</property>-->
                    <!--</bean>-->
                <!--</property>-->
                <!--<property name="prettyPrint" value="true" />-->
                <!--<property name="jsonPrefix" value="data: " />-->
            <!--</bean>-->
        <!--</mvc:message-converters>-->
    <!--</mvc:annotation-driven>-->

    <!--将所有的静态资源交还 Servlet 处理-->
    <mvc:default-servlet-handler />

    <!--&lt;!&ndash;配置返回页面&ndash;&gt;-->
    <!--<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">-->
        <!--<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />-->
        <!--<property name="prefix" value="/WEB-INF/jsp/" />-->
        <!--<property name="suffix" value=".jsp" />-->
    <!--</bean>-->

    <!--&lt;!&ndash;配置上传下载&ndash;&gt;-->
    <!--<bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver" />-->

</beans>

然后在resources里面spring文件夹里配置两个文件

spring-dao.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:tx="http://www.springframework.org/schema/tx" 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/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!--使用外部文件-->
    <context:property-placeholder location="classpath:jdbc.properties" />

    <!--创建数据源-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="org.mariadb.jdbc.Driver" />
        <property name="jdbcUrl" value="jdbc:mariadb://localhost:3306/student" />
        <property name="user" value="root" />
        <property name="password" value="13794709305" />

        <property name="maxPoolSize" value="30" />
        <property name="minPoolSize" value="10" />
        <property name="autoCommitOnClose" value="false" />
        <property name="checkoutTimeout" value="10000" />
        <property name="acquireRetryAttempts" value="2" />
    </bean>

    <!--配置 mybatis-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="typeAliasesPackage" value="com.csw.entity" />
        <property name="configLocation" value="classpath:mybatis-config.xml" />
        <property name="mapperLocations" value="classpath:mapper/*.xml" />
    </bean>

    <!--&lt;!&ndash;配置类型转换规则&ndash;&gt;-->
    <!--<bean name="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">-->
        <!--<property name="converters">-->
            <!--<set>-->
                <!--<bean class="com.csw.databinder.MyStringToDateConverter" />-->
            <!--</set>-->
        <!--</property>-->
        <!--<property name="formatters">-->
            <!--<set>-->
                <!--<bean class="com.csw.demo_formatter.PersonAnnotationFormatter" />-->
            <!--</set>-->
        <!--</property>-->
    <!--</bean>-->

    <!--自动注入 Mapper-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
        <property name="basePackage" value="com.csw.dao" />
    </bean>

    <!--配置声明式事务管理-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
    <tx:annotation-driven proxy-target-class="true" />

</beans>

spring-service.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:aop="http://www.springframework.org/schema/aop"
       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 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!--启用注解-->
    <context:component-scan base-package="com.csw.dao"/>

    <!-- 启用 aspectj 方式 AOP-->
    <aop:aspectj-autoproxy proxy-target-class="true" />

</beans>

呃,好吧,有点乱 = =,进入正题吧。。。

实体类Stu

package com.csw.entity;

public class Stu {
    private Integer id;

    private String name;

    private String weixin;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }

    public String getWeixin() {
        return weixin;
    }

    public void setWeixin(String weixin) {
        this.weixin = weixin == null ? null : weixin.trim();
    }
}

定义接口StuService

package com.csw.service;

import com.csw.entity.Stu;
import java.util.List;

public interface StuService {

    List<Stu> getStu();
}

接口实现StuServiceImpl

package com.csw.service.Impl;

import com.csw.dao.StuMapper;
import com.csw.entity.Stu;
import com.csw.service.StuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class StuServiceImpl implements StuService {

    @Autowired
    private StuMapper stuMapper;

    @Override
    public List<Stu> getStu() {
        return stuMapper.selectAll();
    }
}

然后是java方式配置Bean   SpringConfig

package com.csw.spring.configuration;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

import javax.sql.DataSource;
import java.beans.PropertyVetoException;

@Configuration //通过该注解表明是一个Spring的配置,相当于xml
@ComponentScan("com.csw") //配置扫包
@PropertySource("classpath:jdbc.properties")
public class SpringConfig {

//    @Value("${jdbc.driver}")
//    private String jdbcDriver;
//
//    @Value("${jdbc.url}")
//    private String jdbcUrl;
//
//    @Value("#{jdbc.username}")
//    private String jdbcUsername;
//
//    @Value("#{jdbc.password}")
//    private String jdbcPassword;

    @Bean
    public DataSource dataSource() throws PropertyVetoException {

        ComboPooledDataSource source = new ComboPooledDataSource();

//        source.setDriverClass(jdbcDriver);
//        source.setJdbcUrl(jdbcUrl);
//        source.setUser(jdbcUsername);
//        source.setPassword(jdbcPassword);

        source.setDriverClass("org.mariadb.jdbc.Driver");
        source.setJdbcUrl("jdbc:mariadb://localhost:3306/student");
        source.setUser("root");
        source.setPassword("13794709305");

//        source.setDriverClass("${jdbc.driver}");
//        source.setJdbcUrl("${jdbc.url}");
//        source.setUser("${jdbc.user}");
//        source.setPassword("${jdbc.password}");

        source.setMaxPoolSize(30);
        return  source;
    }

    /*@Bean(name = "sqlSessionFactory") 如果不写就默认方法的名字*/
    @Bean("sqlSessionFactory")
    public SqlSessionFactoryBean sqlSessionFactory() throws PropertyVetoException {
        SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();

        ClassPathResource resource = new ClassPathResource("mapper/StuMapper.xml");
        sqlSessionFactory.setTypeAliasesPackage("com.csw.entity");
        sqlSessionFactory.setMapperLocations(new Resource[]{resource});
        sqlSessionFactory.setConfigLocation(new ClassPathResource("mybatis-config.xml"));
        sqlSessionFactory.setDataSource(this.dataSource());
        return sqlSessionFactory;
    }

    @Bean
    public MapperScannerConfigurer getMapperScannerConfigurer() {
        MapperScannerConfigurer configurer = new MapperScannerConfigurer();
        configurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
        configurer.setBasePackage("com.csw.dao"); //扫描接口
        return configurer;
    }

}

最后是测试Main

package com.csw.test;

import com.csw.entity.Stu;
import com.csw.proxy.p1.Student;
import com.csw.service.Impl.StuServiceImpl;
import com.csw.service.StuService;
import com.csw.spring.configuration.SpringConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Stu_Main {
    public static void main(String[] args) {
        //通过java配置来实例化spring容器
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);

        //在spring容器中获取bean对象
        StuService service = context.getBean(StuService.class);

        //Student student = (Student) service.getStu();
        //调用对象中的方法直接循环遍历取出来
        for (Stu stu : service.getStu()) {
            System.out.println("学号:" + stu.getId() + ",学生名字:" + stu.getName() + ",学生微信:" + stu.getWeixin());
        }

        //销毁该容器
        context.destroy();

    }
}

效果图如下:

  

原文地址:https://www.cnblogs.com/cheng88/p/10137036.html

时间: 2024-08-09 21:52:02

使用java方式装配Bean的相关文章

Spring学习系列(三) 通过Java代码装配Bean

上面梳理了通过注解来隐式的完成了组件的扫描和自动装配,下面来学习下如何通过显式的配置的装配bean 二.通过Java类装配bean 在前面定义了HelloWorldConfig类,并使用@ComponentScan和@Configuration注解,@Configuration注解表明了这个类是一个java配置类,该类用在获取Spring应用上下文时,告诉Spring创建bean的细节,通过@ComponentScan,我们启用了Spring的自动组件扫描,现在就让我们来看如果通过java类来显

2.2、通过Java代码装配bean

通过Java代码装配bean 例如,需要将第三方库的组件加载到你的应用中,此时无法给他的类上添加@Component和@Autowired注解,此时不能使用自动化装配了. 这种情况下,就必须使用显式装配的形式,可以选择Java代码装配或Xml装配 建议:显式配置是优先使用JavaConfig装配,因为他强大.类型安全且对重构友好:因为他和业务代码无关,应放到单独的包中 @Configuration 告诉Spring,这是一个Spring配置类,用来配置Spring应用上下文如何配置bean @B

通过Java代码装配Bean

上面梳理了通过注解来隐式的完成了组件的扫描和自动装配,下面来学习下如何通过显式的配置的装配bean 二.通过Java类装配bean 在前面定义了HelloWorldConfig类,并使用@ComponentScan和@Configuration注解,@Configuration注解表明了这个类是一个java配置类,该类用在获取Spring应用上下文时,告诉Spring创建bean的细节,通过@ComponentScan,我们启用了Spring的自动组件扫描,现在就让我们来看如果通过java类来显

Spring装配之——JAVA代码装配Bean

首先创建几个普通的JAVA对象,用于测试JAVA代码装配bean的功能. 1 package soundsystemJava; 2 3 //作为接口 定义了CD播放器对一盘CD所能进行的操作 4 public interface CD { 5 void play(); 6 } 1 package soundsystemJava; 2 //接口的一个实现 3 public class CDTest1 implements CD { 4 5 private String title = "十一月的肖

Sping实战之通过JAVA代码装配Bean

尽管在很多场景下通过组件扫描和自动装配实现Spring的自动化配置是更为推荐的方式,但有时候自动化配置的方案行不通,因此需要明确配置Spring.比如说,你想要将第三方库中的组件装配到你的应用中,在这种情况下,是没有办法在它的类上添加@Component和@Autowired注解的,因此就不能使用自动化装配的方案了. 在这种情况下,你必须要采用显式装配的方式.在进行显式配置的时候,有两种可选方案:Java和XML.在这节中,我们将会学习如何使用Java配置,接下来的一节中将会继续学习Spring

Spring装配bean--02通过Java代码装配bean

Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系 Spring提供了三种主要的装配机制: 在XML中进行显式配置 在Java中进行显式配置 隐式的bean发现机制和自动装配 2在Java中显式配置 尽管在很多场景下通过组件扫描和自动装配实现Spring的自动化装配是更为推荐的方式,但是当你要将第三方库中的组件装配到你的应用中,这时就必须显式的配置bean 显式配置包括:Java和XML,我更推荐使用Java类配置,就像上文中的JavaConfig那样 JavaCon

JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试

Spring框架学习路线 Spring的IOC Spring的AOP,AspectJ Spring的事务管理,三大框架的整合 Spring框架概述 什么是Spring? Spring是分层的JavaSE/EE full-stack(一站式)轻量级开源框架. 所谓分层: SUN提供的EE的三层结构:web层.业务层.数据访问层(也称持久层,集成层). Struts2是web层基于MVC设计模式框架. Hibernate是持久的一个ORM的框架. 所谓一站式:Spring框架有对三层的每层解决方案.

IOC装配Bean(注解方式)(5)

Spring的注解装配Bean Spring2.5 引入使用注解去定义Bean @Component 描述Spring框架中Bean Spring的框架中提供了与@Component注解等效的三个注解: @Repository 用于对DAO实现类进行标注 @Service 用于对Service实现类进行标注 @Controller 用于对Controller实现类进行标注 ***** 三个注解为了后续版本进行增强的. Bean的属性注入: 普通属性; @Value(value="itcast&q

spring 装配bean的三种方式

这段时间在学习Spring,依赖注入DI和面向切面编程AOP是Spring框架最核心的部分.这次主要是总结依赖注入的bean的装配方式. 什么是依赖注入呢?也可以称为控制反转,简单的来说,一般完成稍微复杂的业务逻辑,可能需要多个类,会出现有些类要引用其他类的实例,也可以称为依赖其他类.传统的方法就是直接引用那个类对象作为自己的一个属性,但如果我们每次创建这个类的对象时,都会创建依赖的类的对象,还有如果那个类将来可能不用了,还需要到这个类去删除这个对象,那破坏了代码的复用性和导致高度耦合! 依赖注