Spring Framework

Java

Использования контекста из кода:

- Из classpath.

ApplicationContext context = new ClassPathXmlApplicationContext("/application-context.xml");
Bean bean = (Bean)context.getBean("bean");

- С файловой системы

ApplicationContext context = new FileSystemXmlApplicationContext("C:/Beans.xml");
Bean bean = (Bean)context.getBean("bean");

IoC (DI)

IoC - Инверсия управления (Inversion of Control)
DI - Внедрение зависимости (Dependency injection)

RMI

Исходники, статья
Сервер:

<bean class="org.springframework.remoting.rmi.RmiServiceExporter">
    <property name="serviceName" value="название"/>
    <property name="service" ref="ссылка на бин"/>
    <property name="serviceInterface" value="интерфейс (указывать полностью с пакетом)"/>
    <property name="registryPort" value="1099"/>
</bean>

или
        RmiServiceExporter server = new RmiServiceExporter();
        server.setServiceName("RmiMessage");
        server.setService(rmiMessage);
        server.setServiceInterface(RmiMessage.class);
        server.setRegistryPort(1099);
        server.afterPropertiesSet();

Клиент:
  <bean id="бин" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
        <property name="serviceUrl" value="rmi://HOST:PORT/название"/>
        <property name="serviceInterface" value="интерфейс"/>
    </bean>

или
        RmiProxyFactoryBean factoryBean = new RmiProxyFactoryBean();
        factoryBean.setServiceUrl("rmi://localhost:1099/RmiMessage");
        factoryBean.setServiceInterface(RmiMessage.class);
        factoryBean.afterPropertiesSet();
        RmiMessage rmiMessage = (RmiMessage)factoryBean.getObject();
        System.out.println(rmiMessage.getMessage());

В случае если сервер не может правельно зарегестрировать ип адрес то нужно запустить с параметром:
-Djava.rmi.server.hostname=ip

JDBC

    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
 
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/mkyongjava" />
        <property name="username" value="root" />
        <property name="password" value="password" />
    </bean>
    private NamedParameterJdbcTemplate namedTemplate;
 
    public void setDataSource(javax.sql.DataSource dataSource) {
        this.namedTemplate = new NamedParameterJdbcTemplate(dataSource);
    }
 
    public List<HelloWorldBean> getName(){
        String sql = "SELECT * FROM TEST ORDER BY ID";
        Map<String, Object> param = new HashMap<>();
        param.put("id1", 1);
        param.put("id2", 2);
 
        return namedTemplate.query(sql,param, rowMapper);
    }
 
    private RowMapper<HelloWorldBean> rowMapper = new RowMapper<HelloWorldBean>() {
        @Override
        public HelloWorldBean mapRow(ResultSet rs, int rowNum) throws SQLException
        {
            HelloWorldBean bean = new HelloWorldBean();
            bean.setId(rs.getInt("id"));
            bean.setName(rs.getString("name"));
            return bean;
        }
    };
 
    public void saveItem(ItemDto item){
        String query = "INSERT INTO ITEMS (ITEM_ID, ITEM_NAME, ITEM_PRICE, DATE_QUERY) VALUES (:itemId,:itemName,:itemPrice,:dateQuery)";
        Map<String, Object> namedParameters = new HashMap<>();
        namedParameters.put("itemId", item.getId());
        namedParameters.put("itemName", item.getName());
        namedParameters.put("itemPrice", item.getPrice());
        namedParameters.put("dateQuery", new Date());
        namedTemplate.update(query, namedParameters);
    }

Шаблон context.xml

<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
        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
 
</beans>

Подключение нескольких контекстов в один:

<import resource="database/Spring-Datasource.xml" />

Maven

Контекст

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>3.2.4.RELEASE</version>
        </dependency>

JDBC

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>3.2.4.RELEASE</version>
        </dependency>

Аннотации

@Autowired - автозаполнение бина из контекста

Пока не указано иное, содержимое этой страницы распространяется по лицензии Creative Commons Attribution-ShareAlike 3.0 License